如何设计一个存储非常大的数据的表?

时间:2011-03-23 19:50:48

标签: sql-server oracle large-data-volumes large-data

我需要在Oracle中设计一个表,它将在一天内存储2-5 TB的数据。它可以增长到200TB,记录将在超过200TB时被清除。

将它保留在OLTP中是否可行?或者我是否需要将其转移到数据仓库DB? 请在设计此表或数据库的模式时牢记建议。

另外,请告知它是否是SQL服务器,因为我可以使用任何一个数据库。

2 个答案:

答案 0 :(得分:6)

该大小使您进入VLDB区域(非常大的数据库)。 在那个高度,情况根本不同。

如果没有您的申请职责的全部要求,您的问题就无法回答。您需要根据应用程序 DO 的数据来设计性能。

我的建议是让那些有过往经验的人,或者接近100%保证会失败。

如果您使用Oracle,它会提供您需要非常小心使用的几种类型的分区。您需要用于管理目的的分区(移动数据,构建索引,恢复数据)以及查询性能:

  • 范围分区,例如日期范围
  • 列出分区,用于存储数据切片,例如国家/地区('SE','US','GB')
  • 散列分区。根据哈希函数将您的数据存储在其中一个分区中
  • 或上述
  • 的任意组合

此外,您需要知道如何构建和配置具有真正令人敬畏的I / O吞吐量的怪物机器的人。您需要超过1GB / s,当您还需要存储200 TB时,这不是很便宜。实际上,如果那些200 TB只是表数据,则需要将其加倍或加倍才能创建索引,聚合表,备份等。

抱歉,我无法为您提供可供使用的解决方案,但我想确保您了解您不仅仅是在构建一个高于平均水平的数据库。这是巨大的!

答案 1 :(得分:3)

我首先会看一下你的磁盘子系统,并确保它能够处理你每天都会做的2-5 TB负载。 Oracle和SQL Server都内置了分区。在SQL Server中,您还可以使用压缩来最小化磁盘上的存储(不确定Oracle)

这主要用于OLAP还是OLTP?