2

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

将其保留在 OLTP 中是可行的选择,还是需要将其转移到数据仓库 DB 中?请建议我在设计此表或数据库的架构时应牢记的注意事项。

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

4

2 回答 2

6

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

如果没有您的应用程序职责的全部要求,您的问题将无法回答。您需要针对应用程序应该对数据执行的操作进行性能设计

我的建议是让有经验的人加入,否则你几乎 100% 肯定会失败。

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

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

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

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

于 2011-03-23T20:17:12.350 回答
3

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

这将主要用于 OLAP 或 OLTP 吗?

于 2011-03-23T19:56:56.973 回答