我们正在创建一个数据库,用于存储大量记录。我们估计一张表中有数百万(几年后数十亿)记录,我们总是插入并且很少更新或删除任何记录。它是一种文件系统,我们每天都会在其中插入历史记录。我们将根据用户请求生成关于此历史记录的不同类型的报告,因此我们有一些担忧并需要你们的技术投入:
- 管理这种表和数据库的最佳方法是什么?
- 对于非常大的表,我们将来可能会看到什么影响?
- 一个表中的记录数或表的大小是否有限制?
- 我们如何假设从不同来源(主要来自 Excel 工作表)插入批量记录?
- 索引大型数据表的最佳方法是什么?
- 我们应该在这个项目中使用哪个 ORM(对象关系映射)最好?
最佳答案
你最后的陈述总结了它。没有 ORM 可以很好地处理这种数据量和报告查询:聘请 SQL 专家为您做这件事。你先在这里听到的。
否则
- 在磁盘上:文件组、分区等
- 压缩较少使用的数据
- 是否需要所有数据? (数据保留政策)
- 行数或表格大小没有限制
- 通过暂存表或暂存数据库插入,清理/清理/查找键,然后刷新到主表:不要直接加载主表
- 您可以购买多少内存。然后添加更多。
- 少量高效的索引
- 您有父表或平面数据集市吗?有外键但不使用它们(例如在父表中更新/删除)所以不需要索引
- 使用 SAN(更容易添加磁盘空间、更多卷等)
- 归一化
其中一些基于我们在 30 个月内通过我们的一个系统处理了大约 100 亿行的经验,峰值为每秒 4 万行以上。
对于高容量系统也请参阅:10 lessons from 35K tps
总结:做对还是不做...
关于sql - 大容量数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6197068/