Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 谷歌';s Bigtable与关系数据库_Database_Relational_Bigtable - Fatal编程技术网

Database 谷歌';s Bigtable与关系数据库

Database 谷歌';s Bigtable与关系数据库,database,relational,bigtable,Database,Relational,Bigtable,复制品 我对Google的Bigtable了解不多,但我想知道Google的Bigtable与MySQL等关系数据库之间的区别是什么。两者的局限性是什么 谷歌的BigTable和其他类似项目(例如:,)是面向数据的数据库系统,因此数据主要是重复的和分组的 主要优点是: -由于非规范化,联接操作的成本较低 -由于数据独立性,数据的复制/分发成本较低(即,如果您希望跨两个节点分发数据,则可能不会出现在一个节点中有实体,而在另一个节点中有其他相关实体的问题,因为相似的数据是分组的) 此类系统适

复制品


我对Google的Bigtable了解不多,但我想知道Google的Bigtable与MySQL等关系数据库之间的区别是什么。两者的局限性是什么

谷歌的BigTable和其他类似项目(例如:,)是面向数据的数据库系统,因此数据主要是重复的和分组的

主要优点是: -由于非规范化,联接操作的成本较低 -由于数据独立性,数据的复制/分发成本较低(即,如果您希望跨两个节点分发数据,则可能不会出现在一个节点中有实体,而在另一个节点中有其他相关实体的问题,因为相似的数据是分组的)

此类系统适用于需要实现最佳规模的应用程序(即,向系统中添加更多节点,性能会相应提高)。在像MySQL或Oracle这样的RDBMS中,如果连接不在同一节点中的两个表,那么当您开始添加更多节点时,连接成本会更高。这在处理高容量时变得非常重要


RDBMS很好,因为它有丰富的存储模型(表、联接、FK)。分布式数据库很好,因为它易于扩展。

Bigtable是谷歌的发明,用于处理公司经常处理的大量信息。Bigtable数据集可以扩展到巨大的大小(数PB),存储分布在大量服务器上。使用Bigtable的系统包括Google的web索引和Google Earth等项目

根据关于这一主题的报告:

Bigtable是一个稀疏的、分布式的、持久的多维排序映射。映射由行键、列键和时间戳索引;映射中的每个值都是一个未解释的字节数组


Bigtable与MySQL的内部机制如此不同,以至于难以进行比较,预期目标也没有太多重叠。但您可以将Bigtable想象成有点像一个单表数据库。例如,想象一下,如果你试图用MySQL数据库实现Google的整个web搜索系统,你会遇到什么困难——Bigtable就是围绕解决这些问题而构建的


Bigtable数据集可以使用一种称为GQL(“gee-kwal”)的语言从AppEngine之类的服务中查询,GQL是基于SQL子集的。GQL中明显缺少任何类型的
JOIN
命令。由于Bigtable数据库的分布式特性,在两个表之间执行连接将非常低效。相反,程序员必须在他的应用程序中实现这种逻辑,或者设计他的应用程序以便不需要它。

在“相关”侧栏上有几个DUP。例如,想象一下,如果你试图用一个MySQL数据库来实现Google的整个web搜索系统,你会遇到什么困难?阿米巴表大小、索引大小、冗余、大规模并行同时访问等等。MySQL在某种程度上做得很好,但是扩展和分片到多台机器成了一场协调的噩梦。前几天晚上,我和一位谷歌工程师在晚餐时讨论了BigTable。对我来说,非常关键的一点是,如果有多个服务器同时存储数据,非关系数据库会更好。因此,您不会得到重复的引用,合并和查询数据更加无缝。我可以肯定地看到非关系数据库的好处,特别是在大规模可伸缩性方面。但是如果数据不规范化,更新将更加困难,因为您可能需要在多个位置反映相同的信息,如果它们是不同的节点,则更糟糕。非规范化数据库如何处理这个问题。。。你不是把ORM和RDBMS混淆了吗?