Database 如何在现有系统中处理新数据的收集和存储?

Database 如何在现有系统中处理新数据的收集和存储?,database,database-design,architecture,Database,Database Design,Architecture,我是系统设计新手,被要求解决一个问题 给定一个汽车租赁服务网站,我需要在一个新的功能工作 该公司已经提出了更多的数据,他们希望捕获和分析这些数据以及他们已经拥有的数据 这些新数据可能与组装汽车的时间和成本类似 我需要了解以下几点: 1:从API设计的角度来看,我应该如何处理这个问题 2:如果这是一个选项,那么更改表的模式会有什么好处吗 3:可以使用哪些数据库 存储后的值可以更改。例如,组装时间可以减少或增加,因此用户应该能够更新值。要回答您的问题,让我们将其分为两部分,理想架构和问答 体系结构:

我是系统设计新手,被要求解决一个问题

给定一个汽车租赁服务网站,我需要在一个新的功能工作

该公司已经提出了更多的数据,他们希望捕获和分析这些数据以及他们已经拥有的数据

这些新数据可能与组装汽车的时间和成本类似

我需要了解以下几点:

1:从API设计的角度来看,我应该如何处理这个问题

2:如果这是一个选项,那么更改表的模式会有什么好处吗

3:可以使用哪些数据库


存储后的值可以更改。例如,组装时间可以减少或增加,因此用户应该能够更新值。

要回答您的问题,让我们将其分为两部分,理想架构和问答

体系结构:

一个典型的系统将由许多技术组成,它们共同解决一个实际问题。问题可以通过多种方式解决,并且可能有多种解决方案。我们这里不是在谈论任何架构的效率和有效性,因为这是一个全新的课题。但选择最适合您的用例总是明智的

由于您已经构建了现有的软件,因此遵循其现有的设计模式总是很有帮助的,这将帮助您详细理解现有代码,并允许您创建逻辑块,这些逻辑块将非常适合,并且实际上有助于集成功能,而不是与之对抗

因为这清理了预规划阶段,所以让我们讨论一下在我看来,这如何影响最适合您的用例的解决方案

问答

1。从API设计的角度来看,我应该如何处理这个问题?

有很多假设,由api组成的任何系统都应该在需要时具有身份验证和授权的基本功能。除此之外,请尝试遵守完整的REST规范,这将允许API使用者遵循标准路径,并且在决定端点的外观以及他们对使用者的期望时,集成将产生最小的影响

无论如何,并不是所有的系统都适合这样的用例,因此系统的多少与标准实践兼容取决于系统设计者

当较新版本的api将具有api/v2时,名称约定很重要 路径和旧路径具有api/v1,这是路由的良好实践 新功能。这使得系统能够无缝扩展

2:如果可以的话,更改表的架构会有什么好处吗?

在短期内,当您没有太多数据时,迁移数据相对容易。当它变得巨大时,它会更加痛苦和资源密集

良好的实践将允许您防止出现可能不需要迁移数据的情况

当潜在的数据结构迅速增长并需要注意时,数据库规范化就变得非常重要

无论使用任何sql或nosql解决方案,良好的数据结构都将在数据管理和编程实现方面有所帮助

在我看来,让数据结构接近完美总是一个好方法 想法,因为这将降低未来迁移和迁移的成本 它带来的挫折感。仍然有一些用例需要在 列,只要没有太多,就可以添加它们 对现有代码的影响。否则,它总是可以在中解耦 其他字段的单独表格

3:可以使用哪些数据库?

通常,任何rdbms都足以完成此类任务。当您看到大型数据创建者仍在集群中使用mysql的案例研究时,您可能会感到惊讶

所以答案是,只要您有正常的场景,就可以继续选择任何您选择的数据库,直到您达到其单实例可伸缩性限制。这些限制对于小型到中型的应用程序来说是相当大的

从API设计的角度来看,我应该如何处理这个问题

设计一个好的数据模型,它适合于需要存储的数据。API设计将遵循数据模型

如果这是一个选项,那么更改表的模式会有什么好处吗

新数据是否属于现有表?那也许你应该把它放在那里。除了:您可以添加新列而不中断任何现有应用程序吗?也许你可以,但是你需要进行回归测试来证明它可能会破坏你的时间表。单独的表格可能是更安全的选择

可以使用哪些数据库

您对正在处理的数据的性质相当模糊,但它似乎是结构化的(数字?)。因此,这表明使用强数据类型的SQL是最合适的。除此之外,使用当前正在使用的任何数据平台。不同产品带来的任何可感知的好处都将被部署它的复杂性和麻烦所扫除

最后一句话。和你的老板(或任何给你安排这项任务的人)讨论一下。不要依赖互联网上一些随机陌生人的意见