我们正在设计一个用于临时分析的表格,该表格将随着时间的推移为收到的索赔捕获无数的值字段。表结构本质上是(伪代码):
table_huge (
claim_key int not null,
valuation_date_key int not null,
value_1 some_number_type,
value_2 some_number_type,
[etc...],
constraint pk_huge primary key (claim_key, valuation_date_key)
);
所有值字段都是数字。要求是: 该表应至少包含最近 12 年(希望更多)的已受理索赔。每项索赔都应在索赔开始和当前日期之间的每个月末都有一个估价日期。典型的索赔起始量为每年 50k-100k。
将所有这些加起来,我预测了一个行数约为 1 亿的表,并且根据业务需求,可能会在几年内增长到多达 5 亿。该表将每月重建。消费者只会选择。除了每月刷新外,不会发生更新、插入或删除。
我是从业务(消费者)方面来的,但我有兴趣在降低 IT 成本的同时保留此表的分析价值。我们并不太关心表格的快速返回,但偶尔需要向它抛出几十个查询并在一三天内获得所有结果。
为了论证的缘故,让我们假设技术堆栈是,我不知道,在现代硬件的 80% 中。
我的问题是:
- 考虑到对大容量表的查询频率较低,索引的成本效益是否会变得过高?
- SO 社区是否有使用 +100M 行表的经验并且可以提供有关如何管理的提示?
- 我是否应该将数据库技术问题留给 IT 部门来解决,还是应该认真考虑限制业务需求(为什么?)?
我知道这些都是一些软性问题,我希望读者明白这不是我可以在构建之前测试的命题。
如果需要任何澄清,请告诉我。谢谢阅读!