我正在寻找一些在 Oracle 与 SQL Server 之间进行选择的有效点,以处理大约 5-6 TB 的数据。这些数据将在 8 个月内累积。任何超过 8 个月的数据都会从数据库中清除。
我正在考虑 Oracle 11G 标准版和 SQL Server 2008 标准版。
我不是在寻找易于开发的东西,我只是在处理大量数据并且仍然能够提供良好的性能。除了性能之外,如果有任何参数会产生任何影响,请突出显示。
我知道价格方面存在很大差异,但如果性能差异很大,这不是一个因素。
我希望得到公正的答案,没有宗教战争。
你不会喜欢这个答案,但也不喜欢。Oracle 和 MS SQL Server 在大规模数据处理方面大致相当(SQL Server 在易用性方面占优势,Oracle 在实用性方面占优势),当真正归结为原始数据时,PostgreSQL 实际上可以将它们都淘汰优化后的幅度很小。
但是,如果您真的想要一个“大”数据库,当您合法使用 64 位 ID 列和 TB 数据时,这种数据库被证明可以很好地工作,那么它就是 (IBM) DB2。
(就宗教战争而言,我是一个 SQL Server 人,但即使我也知道它的局限性)
我想这真的取决于您的应用程序开发人员和运维工程师可以支持什么;我想您不会为了冗余和性能而将此数据集保存在单个服务器上。
如果您在 8 个月内写入 6Tb,这实际上并不是一个巨大的插入率,那么对于任何体面的硬件来说,数据流失都不会成为问题。
大多数性能将来自正确的设计,这在某种程度上取决于所使用的特定产品的功能。
如果不对两者进行正确的设计,然后将完全原型化的应用程序与生产数据量进行比较,您将无法比较它们。我想这在成本方面将是无效的(开发人员努力构建两个原型并在生产级硬件上的全部数据负载下对其进行测试)。
我想这两者都可以很好地完成这项工作,以及任何你想命名的东西。这一切都将是关于正确的应用程序设计,正确使用数据库的特定功能。
这完全取决于这些数据是什么、它的存储方式以及您对数据的处理方式
假设它是一个单一的表,那么 Oracle 肯定有“能力”来做这件事,但你会想要带有分区选项的企业版。这样,您可以根据需要将数据划分为数月、数周、数天或数小时。那么保持你滚动的 8 个月窗口很容易(我假设它是一个滚动窗口,而不仅仅是在 8 个月的时间内整个事情都会被束缚)。
对于任何解决方案,您都会想看看您将如何执行此滚动窗口,某些数据库不会对您删除大量行感到太友好。
另请考虑,您可能需要一些解决方案,可以在合理的时间内备份该数据并从故障中恢复。
我还在考虑那种大小的数据库,您可能需要 SQL Server 企业版中的功能。
http://www.microsoft.com/sqlserver/2008/en/us/compare-std-ent.aspx
企业往往具有可扩展性功能。我相信甲骨文可能也是如此。
影响答案的可能因素有很多,如果没有更多信息,很难给出明确的答案。这些因素的例子是数据的来源是什么,需要以什么速度记录,需要多久查询一次,分割的难易程度等等。
一般来说,Oracle 确实享有盛誉,它可以更好地处理更大的负载,并且可以在比 SQL Server 更强大的硬件上运行。
但是,我认为对于您所描述的大量产品,除非您的组织要求仅使用这两种产品,否则考虑其他选项也是明智的。
您可能最好查看专门设计用于处理此类卷的“异国情调”数据库产品,例如 Vertica,或者甚至考虑为云服务提供商(例如 Amazon Elastic Mapreduce 和 Google)使用的海量卷设计的非关系型产品App Engine 数据存储区。这些产品在需要大量数据的行业中越来越受欢迎,例如电信提供商、金融服务行业和远程信息处理行业。
您还没有提到您是否将使用此数据库进行在线事务处理,或者这是用于更多数据仓库、商业智能。两者肯定都有一些专门设计的选项。 例如, Teradata用于为 BI 处理大量数据。
我不能说“5-6 TB 的数据”,但我目前有 1700 名全职胖客户端用户(应用程序内置于 .NET)使用 SQL 64 位 Itanium 攻击 1.5 TB 数据库。
它表现良好。我认为扩展问题与其说是数据库的大小,不如说是每秒的用户数和事务数。
Oracle 可以进行集群以将容量扩展至事务/秒(在某些情况下),但在原始数据库大小方面,我不一定更喜欢其中任何一个。