【发布时间】:2010-09-12 16:12:47
【问题描述】:
MS SQL Server 和 Oracle,在可扩展性方面哪个更好?
例如,如果数据大小达到 500 TB 等。
【问题讨论】:
标签: sql-server database oracle
MS SQL Server 和 Oracle,在可扩展性方面哪个更好?
例如,如果数据大小达到 500 TB 等。
【问题讨论】:
标签: sql-server database oracle
oracle 人会告诉你 oracle 更好,sql server 人会告诉你 sql server 更好。 我说它们的规模几乎相同。使用你更了解的东西。你在 oracle 和 sql server 上都有这么大的数据库
【讨论】:
这还取决于您的应用程序的用途。如果它只使用很少更新的插入,那么我认为 MSSQL 在性能方面会更具可扩展性和更好。但是,如果有很多更新,那么 Oracle 会更好地扩展
【讨论】:
Oracle 或 MSSQL 是否会更好地扩展/执行是问题 #15。无论您运行的是 Oracle、MSSQL、Informix 还是其他任何东西,数据模型都是第一个成功或失败的项目。数据模型结构、什么样的应用程序、它如何访问数据库等、您的开发人员非常了解哪个平台可以针对大型系统等是您应该问自己的第一个问题。
【讨论】:
Oracle 和 SQL Server 都是共享磁盘数据库,因此对于对大量数据进行表扫描的查询,它们会受到磁盘带宽的限制。 Teradata、Netezza 或DB/2 Parallel Edition 等产品是'shared nothing' 架构,其中数据库在各个节点上存储水平分区。这种类型的架构提供了最佳的并行查询性能,因为每个节点上的本地磁盘不受 SAN 中心瓶颈的限制。
共享磁盘系统(例如 Oracle Real Application Clusters 或 Clustered SQL Server 安装仍需要共享 SAN,这限制了流传输的带宽。在 VLDB 上,这会严重限制可能实现的表扫描性能. 大多数数据仓库查询跨大块数据运行表或范围扫描。如果查询将命中超过百分之几的行,则单个表扫描通常是最佳查询计划。
节点上的多个本地直接连接磁盘阵列可提供更多磁盘带宽。
话虽如此,我知道一家 Oracle DW 商店(一家主要的欧洲电信公司)拥有一个基于 Oracle 的数据仓库,每天加载 600 GB,因此共享磁盘架构似乎没有施加无法克服的限制。
MS-SQL 和 Oracle 之间存在一些差异。恕我直言,Oracle 比 SQL Server 具有更好的 VLDB 支持,原因如下:
Oracle 原生支持bitmap indexes,这是一种适用于高速数据仓库查询的索引结构。它们本质上是在 CPU 上进行 I/O 权衡,因为它们是运行长度编码的并且使用相对较少的空间。另一方面,微软声称Index Intersection 的速度并没有明显变慢。
Oracle 具有比 SQL Server 更好的表分区功能。 IIRC SQL Server 2005 中的表分区只能在单个列上完成。
Oracle 可以在 somewhat larger hardware 而不是 SQL Server 上运行,尽管可以在某些 quite respectably large 系统上运行 SQL Server。
Oracle 对Materialized views 和Query rewrite 的支持更加成熟,可以优化关系查询。 SQL2005 确实具有一些查询重写功能,但它的文档记录很差,我还没有看到它在生产系统中使用过。不过,微软会建议你使用Analysis Services,它确实支持无共享配置。
除非您拥有真正符合圣经的数据量并在 Oracle 和无共享架构(如 Teradata)之间进行选择,否则您可能会发现 Oracle 和 SQL Server 之间几乎没有实际差异。特别是自从 SQL2005 引入以来,SQL Server 中的分区功能被认为已经足够好,并且已经在其上成功实现了 plenty 的 examples 的 multi-terabyte 系统。
【讨论】:
我曾在 Oracle 上担任 DBA(尽管几年前),现在我广泛使用 MSSQL,尽管不是正式的 DBA。我的建议是,在绝大多数情况下,两者都将满足您所能提供的一切,并且您的性能问题将更多地取决于数据库设计和部署,而不是产品的基本特征,在这两种情况下都是绝对和完全的可靠(在许多人看来,MSSQL 是 MS 制造的最好的产品,所以不要让对 MS 的通常看法蒙蔽了你)。
我自己 我会倾向于 MSSQL,除非您的系统将非常庞大且真正的企业级(大量用户、多个 9 的正常运行时间等)仅仅是因为根据我的经验,Oracle 往往需要更高级别的 DBA 知识和维护比 MSSQL 更好地利用它。 Oracle 也往往更昂贵,无论是初始部署成本还是为其雇用 DBA 的成本。 OTOH,如果您正在寻找企业系统,那么 Oracle 将具有优势,尤其是因为如果您负担得起,他们的支持是首屈一指的。
【讨论】:
我非常怀疑您是否会得到该特定问题的客观答案,直到您遇到在两个平台上实现了相同数据库(架构、数据等)的任何人。
但是,鉴于您可以找到数百万对这两个数据库感到满意的用户,我敢说任何一个都可以很好地扩展(我见过 300 TB 的快速 Sql 2005 实现)似乎反应灵敏)
【讨论】:
我不得不同意那些说设计更重要的人。
我使用过许多不同风格的超快和超慢数据库(最糟糕的是 Oracle 数据库,但这不是 Oracle 的错)。数据库的设计以及如何决定对其进行索引、分区和查询与可伸缩性的关系远大于产品来自 MSSQL Server 还是 Oracle。
我认为您可能更容易找到更多具有 TB 级数据库经验的 Oracle dbas(运行大型数据库是一项专业,就像了解一种特殊的 SQL 风格一样),但这可能取决于您所在的地区。
【讨论】:
当您达到 OBSCENE 数据库大小(超过 1TB 确实足够大,而 500TB 非常庞大)时,操作支持必须在要求列表中占据非常靠前的位置。有了这么多数据,您就不会纠结于一分钱一分货的系统规格。
你打算如何备份这么大的系统?升级操作系统并修补数据库?可扩展性和可靠性是否值得关注?
我有 Oracle 和 MS SQL 的经验,对于真正非常大的系统(用户、数据或重要性),Oracle 更适合用于运营支持和数据管理。
每个人都试图备份和恢复一个 1TB+ 的 SQL Server 数据库,该数据库拆分为多个实例上的多个数据库,事务日志文件被每个数据库到处吐出并试图保持所有同步?祝你好运。
使用 Oracle,您拥有一个数据库(因此我不同意“不共享任何内容”的方法更好),其中包含一组重做日志 (1) 和一组存档日志 (2),您只需添加额外的硬件节点无需更改(即重新分区)您的应用程序和数据。
(1) 重做日志当然是镜像的。 (2) 存档日志当然存储在多个位置。
【讨论】:
当您谈到 500TB 时,即 (a) 大而 (b) 专业。 我会去一家有合适专家的咨询公司,看看现有的技能组合、与现有技术堆栈的集成、预期的使用、备份/恢复/DR 要求......
简而言之,这不是我会根据 stackoverflow 的意见进入的那种项目。无意冒犯,但要考虑的因素太多了,其中很多都是商业机密。
【讨论】:
Oracle 就像一台高质量的手动胶片相机,需要最好的摄影师才能拍出最好的照片,而 MS SQL 就像一台自动数码相机。在过去,当然所有专业摄影师都会使用胶卷相机,现在想想有多少专业摄影师使用自动数码相机。
【讨论】: