当前位置:  开发笔记 > 后端 > 正文

使用NOSQL加入操作

如何解决《使用NOSQL加入操作》经验,为你挑选了2个好方法。

我已经阅读了一些关于Bigtable和NOSQL的文章.他们避免JOIN操作非常有趣.

作为一个基本的例子,让我们采用Employee和Department表,并假设数据分布在多个表/服务器上.

只是想知道,如果数据分布在多个服务器上,我们如何进行JOIN或UNION操作?



1> MarkR..:

当您拥有非常大的数据时,您可能希望避免加入.这是因为单个密钥查找的开销相对较大(服务需要确定要查询的节点,并行查询它们并等待响应).通过开销,我的意思是延迟,而不是吞吐量限制.

这使得连接非常糟糕,因为你需要进行大量的外键查找,最终会进入许多不同的节点(在很多情况下).所以你想要避免这种模式.

如果它不经常发生,你可能会受到打击,但如果你想要做很多这样的事情,那么数据的"非规范化"可能是值得的.

存储在NoSQL存储中的东西通常是非常"异常"的.在各种不同的地方复制相同的数据以使查找更容易并不罕见.

此外,大多数nosql也不(实际上)支持二级索引,这意味着如果要按任何其他条件查询,则必须复制内容.

如果您正在存储员工和部门等数据,那么使用传统数据库会更好.


当我试图理解这个时,这个链接很有帮助:http://www.allbuttonspressed.com/blog/django/2010/09/JOINs-via-denormalization-for-NoSQL-coders-Part1-Intro

2> Kaleb Brasee..:

您将必须进行多项选择,然后在应用程序中手动加入数据。有关更多信息,请参见此SO帖子。从该帖子:

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

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有