为什么关系数据库无法满足大数据的规模?


17

大数据问题经常重复出现,关系数据库无法扩展以处理现在正在创建的海量数据。

但是,像Hadoop这样的大数据解决方案并没有受到这些可扩展性的限制?为什么Oracle RAC或MySQL分片或Teradata等MPP RDBMS无法实现这些壮举?

我对技术局限性感兴趣-我知道集群RDBMS的财务成本可能令人望而却步。

Answers:


15

MS刚刚在荷兰进行了一次技术讲座,他们在其中讨论了其中的一些内容。它起步很慢,但是在20分钟左右就进入了Hadoop的范畴。

其要旨是“取决于”。如果您合理地安排(至少在某种程度上)易于分区(至少在某种程度上)同质的数据集,那么使用RDBMS可以很容易地将其扩展到那些高数据量,具体取决于您在做什么。

Hadoop和MR似乎更适合于您被迫进行大型分布式数据扫描的情况,尤其是当这些数据不一定像我们在RDBMS世界中发现的那样均匀或结构化时。

大数据解决方案不受什么限制?对我而言,他们不受束缚的最大限制是必须提前制定严格的架构。借助大数据解决方案,您现在可以将大量数据推送到“框中”,并在以后向查询中添加逻辑以应对数据缺乏同质性的问题。从开发人员的角度来看,要权衡的是项目前端的易于实现和灵活性,而不是查询的复杂性和即时数据一致性较差。


谢谢Dave,您使我更接近了我要寻找的东西。您说Hadoop适用于具有大型分布式扫描的情况-如果某些/许多RDBMS具有集群解决方案(RAC,分片,MPP等),为什么它们也不能这样做?是什么让RDBMS像大型Hadoop集群那样在16小时内无法排序10万亿条记录呢?看到这里
杰里米·比尔德

2
没有什么让RDBMS集群执行这种工作是不可行的,您可以配置RDBMS进行横向扩展以执行此类操作。RDBMS的问题在于,为了做到这一点,您必须非常谨慎地了解如何结构化架构和分区以使其起作用。当您的数据结构不足以在RDBMS中轻松或有效地进行分区和优化时,大数据架构将为您赢得胜利。
戴夫·马克尔

1
不称职的数据库设计人员使关系数据库难以扩展。太多公司认为,当应用程序开发人员需要从一开始就雇用有能力的数据库开发人员时,他们可以设计数据库(或更糟糕的是使用ORMS进行设计)。您为涉及数据的项目雇用的第二个人应该是数据库开发人员。
HLGEM 2012年

3
@HLGEM:我对此的回应是“ meh”。最有效率的开发人员将是那些了解堆栈两面的开发人员-这种想法是,有一个很好的“应用程序开发人员”,他总是与RDBMS一起工作,却不知道它是如何工作的,这是谬论。同样,IMO之类的想法就是,一个优秀的“数据库开发人员”不了解ORM或它的应用程序方面,这也是谬论。
戴夫·马克

6

数据库先驱和研究人员Michael Stonebraker撰写了一篇论文,讨论了传统数据库体系结构的局限性。通常,它们可以使用更昂贵的硬件进行扩展,但是很难并行使用更多的商用硬件进行扩展,并且受到为较旧时代设计的传统软件体系结构的限制。他认为,BigData时代需要使用现代基础架构并针对特定工作负载进行优化的多种新数据库架构。例如,C商店项目导致了商业数据库Vertica Systems,H商店项目导致了VoltDB,VoltDB是为高速BigData工作负载设计的内存中OLTP SQL数据库。(完全公开,我为VoltDB工作)。

您可能会对此主题感兴趣的网络研讨会。它回应了NoSQL数据库成功带来的一些神话。基本上,他认为SQL并不是问题所在,不必为了提高性能而放弃传统的数据库功能(如一致性)。


6
要获得完全披露的资格,您可能还应该提到您的联合创始人兼首席技术官Michael Stonebraker也是您所有示例的共同建筑师。而VoltDB的SQL支持只是一个很小的子集
丹尼尔·里昂斯

5

RDBMS无法扩展并非完全正确。但是,声明中的部分事实取决于体系结构。在您提供的列表中,Oracle RAC与其余的(分片的MySQL和Teradata)不同。主要区别在于共享磁盘与无共享体系结构。

像Oracle RAC这样的共享磁盘体系结构会受到扩展的困扰,因为在某些时候或其他所有正在运行的计算机都应在数据的某些部分上进行同步。例如,全局锁管理器是杀手。您可以在一定程度上进行微调,但最终会遇到困难。如果您不能轻易添加计算机,则应减少数量,但超级强大的计算机可能会烧伤您的口袋。在没有共享架构(或分片数据)的情况下,每台机器都拥有某些数据的所有权。如果要更新某些数据,它不需要与其他机器同步。

然后出现了NoSQL数据库。我将它们视为传统RDBMS数据库的子集。并非这个世界上的所有应用程序都需要RDBMS提供的所有功能。如果我想将数据库用作缓存,则无需考虑持久性。在某些情况下,我可能也不会在乎一致性。如果我所有的数据查找均基于键,则不需要范围查询支持。我可能不需要二级索引。我不需要所有传统数据库都具有的整个查询处理/查询优化层。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.