我不知道很多关于谷歌的Bigtable,但我想知道谷歌的Bigtable的区别和像MySQL这样的关系数据库。两者的局限性是什么?
回答
Bigtable的是谷歌的发明来处理大量的信息,该公司定期交易。有了BigTable数据集可以长到规模巨大(PB级多),与在大量服务器的分布式存储。使用Bigtable的系统包括Google的网络索引和Google地球等项目。
根据Google whitepaper关于这个问题:
有了BigTable是稀疏,分散,持续的多维有序映射。该地图由行键,列键和时间戳索引;映射中的每个值都是未解释的字节数组。
Bigtable与MySQL等内部机制是如此不同,以至于难以比较,而且预期目标也不重叠。但是你可以将Bigtable想象成一个单表数据库。想象一下,例如,如果您尝试使用MySQL数据库实施Google的整个网络搜索系统,您会遇到的困难--Bytable表格是围绕解决这些问题而建立的。
可以使用名为GQL(“gee-kwal”)的语言从AppEngine等服务查询Bigtable数据集,该语言基于SQL子集。 GQL显着缺失的是任何种类的JOIN
命令。由于Bigtable数据库的分布式特性,在两个表之间执行连接将非常低效。相反,程序员必须在他的应用程序中实现这样的逻辑,或者设计他的应用程序以便不需要它。
谷歌的BigTable和其他类似项目(例如:CouchDB,HBase)是的取向使得数据主要是denormalized数据库系统(即复制和分组)。
主要优点是: - 加入操作成本更低,因为非规范化 的 - 数据的复制/分发是因为数据独立性(即,如果你想在两个节点分发数据,你可能赢得的成本更低没有一个节点中的实体和另一个节点中的其他相关实体的问题,因为类似的数据被分组)
这种类型的系统适用于需要实现最佳规模的应用程序(即添加更多节点到系统和性能成比例增加)。在像MySQL或Oracle这样的ORM中,如果加入两个不在同一节点中的表,则当您开始添加更多节点时,联接成本会更高。当你处理大量数据时,这变得很重要。
由于存储模型(表,连接,fks)的丰富性,ORM很不错。分布式数据库很好,因为规模很容易。
但是,如果数据未规范化,则更新将变得更加困难,因为您可能需要在多个位置反映相同的信息,而如果它们是不同的节点,则更加糟糕。非规范化数据库如何处理这个问题? – Moeb 2010-08-16 05:56:10
Erm ...你难道不会把* ORM *与* RDBMS *混淆吗? – 2014-08-10 14:23:16
- 1. django谷歌应用程序引擎与关系数据库
- 2. 与谷歌App Engine和BigTable的
- 3. 谷歌云上的TTL Bigtable
- 4. 数据关系谷歌电子表格
- 5. 如何将关系数据库转换为一个Bigtable
- 6. 保持在谷歌的Bigtable数据更长的时间
- 7. Hadoop与关系数据库
- 8. XML与关系数据库
- 9. 管理谷歌的Cloud Bigtable从SQLAlchemy的
- 10. 实时数据库与谷歌地图
- 11. 谷歌应用程序引擎的Bigtable
- 12. 谷歌的Cloud Bigtable Python客户端API
- 13. 谷歌的数据库
- 14. 如何连接谷歌云平台以外的谷歌bigtable
- 15. 关系数据库与立体库
- 16. Laravel计数与关系数据库数
- 17. 谷歌AppEngine数据库
- 18. 谷歌地图数据库
- 19. 谷歌分析数据库
- 20. 与NoSQL数据库的关系
- 21. 快速的关系数据库,与Python
- 22. 如何关系数据库管理系统数据库与图形数据库
- 23. CakePHP数据库关系:歌手和作家的歌曲
- 24. 一个一对多的关系,谷歌数据存储的Python
- 25. MySql |关系数据库vs非关系数据库的性能
- 26. 关系数据库中的关系“OR”
- 27. HAS_MANY与主数据库的关系数据库设计BELONGS_TO
- 28. 数据库关系
- 29. 数据库关系
- 30. 数据库关系
那里的“相关”侧边栏上的几个嘟du。 HTTP://计算器。com/questions/144001 /选择数据库类型 – 2009-04-23 18:28:02