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