大数据问题经常重复出现,关系数据库无法扩展以处理现在正在创建的海量数据。
但是,像Hadoop这样的大数据解决方案并没有受到这些可扩展性的限制?为什么Oracle RAC或MySQL分片或Teradata等MPP RDBMS无法实现这些壮举?
我对技术局限性感兴趣-我知道集群RDBMS的财务成本可能令人望而却步。
大数据问题经常重复出现,关系数据库无法扩展以处理现在正在创建的海量数据。
但是,像Hadoop这样的大数据解决方案并没有受到这些可扩展性的限制?为什么Oracle RAC或MySQL分片或Teradata等MPP RDBMS无法实现这些壮举?
我对技术局限性感兴趣-我知道集群RDBMS的财务成本可能令人望而却步。
Answers:
MS刚刚在荷兰进行了一次技术讲座,他们在其中讨论了其中的一些内容。它起步很慢,但是在20分钟左右就进入了Hadoop的范畴。
其要旨是“取决于”。如果您合理地安排(至少在某种程度上)易于分区(至少在某种程度上)同质的数据集,那么使用RDBMS可以很容易地将其扩展到那些高数据量,具体取决于您在做什么。
Hadoop和MR似乎更适合于您被迫进行大型分布式数据扫描的情况,尤其是当这些数据不一定像我们在RDBMS世界中发现的那样均匀或结构化时。
大数据解决方案不受什么限制?对我而言,他们不受束缚的最大限制是必须提前制定严格的架构。借助大数据解决方案,您现在可以将大量数据推送到“框中”,并在以后向查询中添加逻辑以应对数据缺乏同质性的问题。从开发人员的角度来看,要权衡的是项目前端的易于实现和灵活性,而不是查询的复杂性和即时数据一致性较差。
数据库先驱和研究人员Michael Stonebraker撰写了一篇论文,讨论了传统数据库体系结构的局限性。通常,它们可以使用更昂贵的硬件进行扩展,但是很难并行使用更多的商用硬件进行扩展,并且受到为较旧时代设计的传统软件体系结构的限制。他认为,BigData时代需要使用现代基础架构并针对特定工作负载进行优化的多种新数据库架构。例如,C商店项目导致了商业数据库Vertica Systems,H商店项目导致了VoltDB,VoltDB是为高速BigData工作负载设计的内存中OLTP SQL数据库。(完全公开,我为VoltDB工作)。
您可能会对此主题感兴趣的网络研讨会。它回应了NoSQL数据库成功带来的一些神话。基本上,他认为SQL并不是问题所在,不必为了提高性能而放弃传统的数据库功能(如一致性)。
RDBMS无法扩展并非完全正确。但是,声明中的部分事实取决于体系结构。在您提供的列表中,Oracle RAC与其余的(分片的MySQL和Teradata)不同。主要区别在于共享磁盘与无共享体系结构。
像Oracle RAC这样的共享磁盘体系结构会受到扩展的困扰,因为在某些时候或其他所有正在运行的计算机都应在数据的某些部分上进行同步。例如,全局锁管理器是杀手。您可以在一定程度上进行微调,但最终会遇到困难。如果您不能轻易添加计算机,则应减少数量,但超级强大的计算机可能会烧伤您的口袋。在没有共享架构(或分片数据)的情况下,每台机器都拥有某些数据的所有权。如果要更新某些数据,它不需要与其他机器同步。
然后出现了NoSQL数据库。我将它们视为传统RDBMS数据库的子集。并非这个世界上的所有应用程序都需要RDBMS提供的所有功能。如果我想将数据库用作缓存,则无需考虑持久性。在某些情况下,我可能也不会在乎一致性。如果我所有的数据查找均基于键,则不需要范围查询支持。我可能不需要二级索引。我不需要所有传统数据库都具有的整个查询处理/查询优化层。