MS SQL Server和Oracle,哪一个在可扩展性方面更好?
例如,如果数据大小达到500 TB等.
Oracle和SQL Server都是共享磁盘数据库,因此对于表扫描大量数据的查询,它们受磁盘带宽的限制.产品如Teradata的,Netezza公司或DB/2并行版是"不共享"体系结构,其中各个节点上的数据库中存储的水平分区.这种类型的体系结构提供了最佳的并行查询性能,因为每个节点上的本地磁盘不受SAN上的中心瓶颈约束.
共享磁盘系统(例如Oracle Real Application Clusters或Clustered SQL Server安装仍然需要共享SAN,这限制了流的带宽.在VLDB上,这会严重限制可能实现的表扫描性能.大多数数据仓库查询跨大型数据块运行表或范围扫描.如果查询将达到超过百分之几的行,则单个表扫描通常是最佳查询计划.
节点上的多个本地直接连接磁盘阵列可提供更多磁盘带宽.
话虽如此,我知道Oracle DW商店(一家主要的欧洲电信公司)拥有一个基于oracle的数据仓库,每天可以加载600 GB,因此共享磁盘架构似乎没有施加不可逾越的限制.
在MS-SQL和Oracle之间存在一些差异.恕我直言Oracle有比SQL服务器更好的VLDB支持,原因如下:
Oracle对位图索引具有本机支持,位图索引是适用于高速数据仓库查询的索引结构.它们基本上用于I/O权衡的CPU,因为它们是行程编码的并且使用相对较小的空间.另一方面,微软声称Index Inteection的速度并不慢.
Oracle具有比SQL Server更好的表分区功能.IIRC SQL Server 2005中的表分区只能在单个列上完成.
甲骨文可以运行在一定程度上 较大的 硬件比SQL Server中,虽然可以在某些运行SQL服务器相当 体面 的大系统.
Oracle对Materialized视图和Query重写提供了更成熟的支持,以优化关系查询.SQL2005确实有一些查询重写功能,但它的文档很少,我还没有看到它在生产系统中使用过.但是,Microsoft建议您使用Analysis Services,它实际上支持无共享配置.
除非您拥有真正的圣经数据量,并且正在选择Oracle和无共享体系结构(如Teradata)之间,否则您可能会发现Oracle和SQL Server之间几乎没有实际区别.特别是自SQL2005引入以来,SQL Server中的分区工具被认为是足够好的,并且有大量已经在其上成功实现的多TB系统的示例.
当你说500TB时,那是(a)大和(b)专业.我会去用适当的专业顾问公司,看看现有的技能,与现有的技术堆栈,预期使用,备份/恢复/ DR要求整合....
简而言之,根据stackoverflow的意见,这不是我要进入的那种项目.没有违法行为,但有太多因素需要考虑,其中很多都是商业机密.