为了回答你的问题,我们把它分成两部分,理想架构和问答
架构:
一个典型的系统由多种技术组成,共同解决一个实际问题。问题可以通过多种方式解决,并且可能有不止一种解决方案。我们不是在这里谈论任何架构的效率和有效性,因为它是一个全新的主题来探索。但是选择最适合您的用例总是明智的。
由于您已经构建了现有的软件,因此遵循现有的设计模式总是有帮助的,这将帮助您详细了解现有代码并允许您创建非常适合并实际有助于集成功能而不是与之对抗的逻辑块它。
既然这清除了预规划阶段,让我们讨论一下这会如何影响我认为最适合您的用例的解决方案。
问答
1.从 API 设计的角度来看,我应该如何解决这个问题?
会有很多假设,除了由 api 组成的较少系统之外,任何东西都应该在需要时具有基本的身份验证和授权功能。除此之外,尽量坚持完整的 REST 规范,这将允许 API 使用者遵循标准路径,并且在决定端点是什么样子以及他们对使用者的期望时,集成的影响最小。
无论如何,并非所有系统都适合这种用例,因此系统设计人员有多少系统与标准实践兼容。
当新版本的 api 将具有 api/v2 时,名称约定很重要
路径和具有 api/v1 的旧路径,这是路由的好习惯
新功能。这允许系统无缝扩展。
2:如果可以的话,更改表的架构会有什么好处吗?
短期内,当您没有太多数据时,迁移数据相对容易。当它变得巨大时,它会更加痛苦和资源密集。
良好的做法可以让您防止出现您可能不需要迁移数据的情况。
当潜在的数据结构快速增长并需要注意时,数据库规范化变得如此重要。
无论使用任何 sql 或 nosql 解决方案,良好的数据结构总是对数据管理和编程实现都有帮助。
在我看来,让数据结构接近完美总是一件好事
想法,因为它会降低未来的迁移成本和
它带来的挫败感。还有一些用例需要添加
列,只要没有太多就可以添加它们
对现有代码的影响。否则它总是可以在
其他字段的单独表格。
3:可以使用哪些数据库?
通常任何 rdbms 都足以完成此类任务。当您看到大型数据创建者仍在集群中使用 mysql 的案例研究时,您可能会感到惊讶。
所以答案是,只要您有正常的场景,请继续选择您选择的任何数据库,直到您达到其单实例可扩展性限制。对于小型到模组规模的应用程序来说,这些限制是相当大的。