关系数据库对我来说是最佳数据结构吗?

Is relational database the optimal data structure for me?

我将每周跟踪大约 3000 万个实体的几个不断变化的属性。跟踪属性的值都是整数。

我无法决定如何以最佳方式存储它们。如果我创建第二个一对多 table,其中我为每个 属性 输入一行,当它被观察到时,我将创建 3000 万个实体 * 52 周 *每年 属性 条目数 。 table 会变得很大,但我可以在特定时期查询它,比较不同时期..

另一方面,我可以将每周的数据点放在整数数组或什至字符串化对象中,其中所有属性都是键,跟踪的整数是值,并为我的 3000 万个数据中的每一个指定一行,不断修改跟踪的项目。现在我无法直接在数据库中进行复杂的查询和比较,但我仍然可以拉取特定项目的数据并显示它。我还不知道我想要做的每一个比较,但我想我至少希望能够检查最大的赢家或输家。

我应该接受其中一种选择吗?我应该完全选择不同的数据库结构吗?为什么?我目前正在使用 MariaDB。如果我的示例过于做作,请将存储股票市场数据想象成最接近的类比,其中每个时间点(滴答)都必须存储特定股票的多个属性。

SQL 用于处理非常简单的时间序列 tables,其中包含固定长度的列,例如

id        entity_id   property_id  datestamp    value
BIGINT       INT          INT       DATETIME     appropriate type

只要系统中出现 属性 更改,您只需在 table 中插入一行即可。

通过适当的索引,MySQL 或任何其他 RDBMS 可以毫不费力地处理这种数据的千兆行。驱动器 space 非常便宜,服务器的容量需要与访问它的程序数量相匹配,而不是它包含的历史数据量。所以不排除SQL。您的应用程序处于最佳状态。

而且,使用 SQL 处理那些简单的行将比您建议的大对象读取-修改-写入方案更有效。该软件的编写、测试、故障排除和审核将简单得多。如果您投入生产,您将需要轻松地完成所有这些事情。当你处理别人的钱时,它们很重要。

而且,最新版本的 MariaDb 有一个 system versioning feature table 值得研究。