首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bigtable实用示例

Bigtable实用示例
EN

Stack Overflow用户
提问于 2011-07-21 18:16:31
回答 2查看 11.5K关注 0票数 14

有人能提供一个真实的例子,说明数据在Bigtable中是如何结构化的吗?请从搜索引擎、社交网络或任何其他熟悉的角度谈一谈,这些观点清楚而实用地说明了行->列系列->列组合如何优于传统的规范化关系方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-25 14:00:20

阅读最初的Google白皮书是有帮助的:

http://static.googleusercontent.com/external_content/untrusted_dlcp/labs.google.com/en//papers/bigtable-osdi06.pdf

这是Google数据架构上的信息源的综合列表:

http://highscalability.com/google-architecture

更新: 11/4/14

新版本的Google白皮书PDF可以在这里找到:

http://static.googleusercontent.com/media/research.google.com/en/us/archive/bigtable-osdi06.pdf

票数 8
EN

Stack Overflow用户

发布于 2011-07-21 19:20:23

我认为更多的区别在于查询数据的方式,而不是存储数据的方式。

关系数据库和NoSQL之间的主要区别是后者没有SQL

这意味着您(而不是查询优化器)自己编写查询计划。

如果您知道如何做到这一点,这可能会提高查询性能。

考虑一个典型的搜索引擎查询:查找包含所有(或一些)单词的顶级10页面,例如,“湿t恤竞赛”,按相关性排序(为了简单起见,我们将单词邻近性放在一边)。

为此,您需要拆分所有单词,并将其保存在按(word, relevance, source)排序的可搜索和可迭代列表中。然后将该列表划分为(3 * ranks)集合(每个集合从搜索查询中给定排名的单词的顶部开始),其中ranks是可能的数字或排名,例如,110;并在source上连接这些集合。

在关系数据库中,它将如下所示:

代码语言:javascript
复制
SELECT  w1.source
FROM    ranks r1
JOIN    words w1
ON      w1.word = 'wet'
        AND w1.rank = r1.value
CROSS JOIN
        ranks r2
JOIN    words w2
ON      w2.word = 'shirt'
        AND w2.rank = r2.value
        AND w2.source = w1.source
CROSS JOIN
        ranks r3
JOIN    words w3
ON      w3.word = 'contest'
        AND w3.rank = r2.value
        AND w3.source = w1.source
ORDER BY
        relevance_formula (w1.rank, w2.rank, w3.rank)
LIMIT 10

这最好是在按等级划分的三个集合上使用MERGE JOIN来执行。

然而,据我所知,没有一个优化器会构建这个计划(抛开relevance_formula可能不会在单个级别上分布的事实不谈)。

要解决这个问题,您应该实现您自己的查询计划:从每个单词/等级对的顶部开始,同时向下递减所有三个集合,跳过缺少的值,如果您觉得其中一个集合中有太多要跳过的值,则使用search而不是next

因此,关系方法为您提供了一种更方便的查询数据的方法,但代价是可能的性能损失。

如果你正在开发一个校园web服务器,那么编写这些SELECT *是可以的,即使它们的执行时间比可能的时间长了1微秒。但是,如果您正在开发一个谷歌,那么花一些时间优化查询是值得的(纯关系系统只允许使用SQL访问它们的数据,而不允许这样做)。

这种所谓的NoSQL和关系数据库有时会相互扩散。例如,Berkeley DB是一个广为人知的NoSQL存储引擎,MySQL使用它作为其存储后端,以允许SQL查询。反之亦然,HandlerSocket允许对带有构建在其上的InnoDB数据库的关系MySQL存储进行纯粹的键值查询。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6774503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档