Database 与传统的RDBMS实现相比,新的数据库模型如何实现更好的可伸缩性和性能?

Database 与传统的RDBMS实现相比,新的数据库模型如何实现更好的可伸缩性和性能?,database,algorithm,database-design,rdbms,bigtable,Database,Algorithm,Database Design,Rdbms,Bigtable,我们有 , , 所有这些都旨在实现一个共同目标—使数据管理尽可能具有可扩展性 根据可伸缩性,我的理解是,当数据量增加时,使用成本不应该急剧上升 当数据量较大时,RDBMS的速度较慢,因为间接寻址的数量不变地增加,从而导致更多IO 这些定制的、可伸缩的、友好的数据管理系统是如何解决这个问题的 这是一个解释Google BigTable的数字: 在我看来是一样的。超可伸缩性是如何实现的?这是关于使用廉价的硬件来构建网络/网格/云,并传播数据和负载,例如使用map/reduce 在我看来,RDBMS数

我们有

, , 所有这些都旨在实现一个共同目标—使数据管理尽可能具有可扩展性

根据可伸缩性,我的理解是,当数据量增加时,使用成本不应该急剧上升

当数据量较大时,RDBMS的速度较慢,因为间接寻址的数量不变地增加,从而导致更多IO

这些定制的、可伸缩的、友好的数据管理系统是如何解决这个问题的

这是一个解释Google BigTable的数字:


在我看来是一样的。超可伸缩性是如何实现的?

这是关于使用廉价的硬件来构建网络/网格/云,并传播数据和负载,例如使用map/reduce

在我看来,RDBMS数据库就像最初设计在一台超级计算机上运行的软件。您可以使用各种硬盘阵列、DB群集,但仍然

数据量增加了,因此有一个理由要考虑到这一点来设计新的数据存储—可扩展性、高可用性和TB级的数据

另一件事——如果你用便宜的服务器构建一个网格/云,它是容错的,因为你将所有数据存储在三个不同的位置,同时它也是便宜的


回到您的图片-第一个通常来自一台计算机,第二个来自计算机网络。

关于可伸缩性的一个理论答案是-ACID保证是昂贵的。请参阅以获取反论点

事实上,仅仅在停电后生存下来是昂贵的。几年前,我将MySQL与Oracle进行了比较。MySQL几乎比Oracle快得难以置信,但我们无法使用它。当时的MySQL是建立在伯克利之上的
DB,这比Oracle的完整的基于日志的数据库快了好几英里,但是如果在运行基于Berkely DB的MySQL时断电,那么在重新通电时,要使数据库保持一致,需要手动过程,而且,您可能会永远失去最近的更新。

传统的SQL DBMS市场实际上意味着非常少的产品,这些产品传统上以企业环境中的业务应用程序为目标。历史上,这些产品或其客户并不优先考虑大规模无共享可扩展性。因此,支持互联网规模的数据库应用程序的替代产品自然会出现


这与这些新产品不是关系型DBMS这一事实无关。关系模型可以像任何其他模型一样进行扩展。可以说,关系模型比基于网络图的模型更适合这些类型的大规模可扩展应用程序。只是SQL语言有很多缺点,而且还没有人提出合适的关系型NOSQL非SQL替代方案。

特别针对您关于Bigtable的问题,不同之处在于上图中的继承权就是所有。每个Bigtable tabletserver负责一组表中相邻的行范围;从行范围到tablet的映射在元数据表中维护,而从tablet到tabletserver的映射在Bigtable master的内存中维护。查找一行或一系列行时,需要查找元数据条目,该条目几乎肯定位于托管该行的服务器上的内存中,然后使用该条目查找负责该行的服务器上的实际行,从而只需查找一个或几个磁盘


简而言之,这种扩展性很好的原因是,可以向它投入更多的硬件:如果有足够的资源,元数据总是在内存中,因此不需要到磁盘上获取元数据,只需获取数据,也不必总是获取数据

他们放下了“R”。它们是密钥/值对数据库。没有SQLSo,它如何更好地扩展?没有连接。但它们通常会存储非常非结构化的数据。考虑到RDBMS中的B*树索引随着数据量线性增加而在对数上增加。所以,我们不要假装RDBMS不可伸缩;它们不能很好地扩展到相对非结构化的数据中,在这些数据中,人们希望搜索任何东西。@Adam任何东西都不能很好地扩展到相对非结构化的数据中,人们希望搜索任何东西。事实上,RDBMS能够更好地回答这样的查询,尽管速度比非REL数据库慢。