我正在寻找一些有效的点来选择 Oracle 还是 SQL Server 来处理大约 5-6 TB 的数据。这些数据将在 8 个月内累积。任何超过 8 个月的数据都会从数据库中清除。
我正在考虑 Oracle 11G 标准版和 SQL Server 2008 标准版。
我并不追求开发的便捷性,我纯粹是想在处理大量数据的同时还能提供良好的性能。除了性能之外,如果还有任何参数会带来任何影响,请突出显示。
我知道价格方面有很大差异,但如果性能差异很大,那就不是问题了。
我希望得到公正的答案并且不要发生宗教战争。
答案1
您不会喜欢这个答案,但两者都不是。Oracle 和 MS SQL Server 在大规模数据处理方面大致相当(SQL Server 在易用性方面占优势,Oracle 在实用性方面占优势),而当涉及到原始数据时,经过优化后,PostgreSQL 实际上可以以非常小的幅度超越它们。
但是如果您真的想要一个“大”数据库,那种在您合法使用 64 位 ID 列和 TB 级数据时被证明可以运行良好的数据库,那么它就是 (IBM) DB2。
(就宗教战争而言,我是 SQL Server 的粉丝,但即使我也知道它的局限性)
答案2
我想这实际上取决于您的应用程序开发人员和操作工程师可以支持什么;我想您不会将该数据集保存在单个服务器上,以实现冗余和性能。
如果您在 8 个月内写入 6Tb,这实际上并不是一个巨大的插入率,因此数据流失对于任何像样的硬件来说都不是问题。
大部分性能都来自于正确的设计,这在某种程度上取决于所使用的特定产品的特性。
如果不为两者进行正确的设计,然后将完全原型化的应用程序与生产量的数据进行比较,您将无法比较它们。我猜这在成本方面是无效的(开发人员需要努力构建两个原型并在生产级硬件上以满数据负载测试它们)。
我认为这两种方法都可以很好地完成工作,以及您愿意说出的其他任何方法。这一切都与正确的应用程序设计有关,并正确使用数据库的特定功能。
答案3
这完全取决于这些数据是什么、如何存储以及你用这些数据做什么
假设它是一个单表,那么 Oracle 当然有能力做到这一点,但您需要具有分区选项的企业版。有了它,您可以将数据划分为几个月、几周、几天或几小时,无论需要什么。然后,保持您的滚动 8 个月窗口就很容易了(我假设它是一个滚动窗口,而不仅仅是 8 个月内整个事情都会被束缚)。
对于任何解决方案,您都需要了解您将如何执行这个滚动窗口,有些数据库并不太允许您删除大量行。
另外请考虑一下,您可能需要某种解决方案来备份数据并在合理的时间内从故障中恢复。
答案4
有许多因素可能影响答案,如果没有更多信息,很难给出明确的答案。这些因素的例子包括数据的来源是什么、需要以什么速度记录、需要多久查询一次、分段的难易程度等。
总体而言,Oracle 确实享有比 SQL Server 更好地处理更大负载并可以在更强大的硬件上运行的声誉。
然而,我认为对于您所描述的大容量,考虑其他选择也是明智的,除非您的组织要求只使用这两种产品。
您最好考虑专门为处理此类数据而设计的“异国情调”数据库产品,例如 Vertica,或者甚至考虑云服务提供商使用的为海量数据而设计的非关系型产品,例如 Amazon Elastic Mapreduce 和 Google App Engine 数据存储。这些产品在需要大量数据的行业中越来越受欢迎,例如电信提供商、金融服务行业和远程信息处理行业。