Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
ddia
提交
4fdcb259
D
ddia
项目概览
OpenDocCN
/
ddia
通知
6
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
ddia
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4fdcb259
编写于
3月 22, 2018
作者:
M
MuAlex
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ch6 translation
finish the ch6 translation and delete the unnecessary spaces
上级
3e16b1fb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
4 addition
and
14 deletion
+4
-14
ch6.md
ch6.md
+4
-14
未找到文件。
ch6.md
浏览文件 @
4fdcb259
...
...
@@ -53,7 +53,6 @@
我们可以做得更好。现在假设您有一个简单的键值数据模型,其中您总是通过其主键访问记录。例如,在一本老式的纸质百科全书中,你可以通过标题来查找一个条目;由于所有条目按字母顺序排序,因此您可以快速找到您要查找的条目。
### 根据键的范围分区
一种分区的方法是为每个分区指定一块连续的键范围(从最小值到最大值),如纸百科全书的卷(
[
图6-2
](
))。如果知道范围之间的边界,则可以轻松确定哪个分区包含某个值。如果您还知道分区所在的节点,那么可以直接向相应的节点发出请求(对于百科全书而言,就像从书架上选取正确的书籍)。
...
...
@@ -112,9 +111,6 @@ Cassandra采取了折衷的策略【11, 12, 13】。 Cassandra中的表可以使
也许在将来,数据系统将能够自动检测和补偿偏斜的工作负载;但现在,您需要自己来权衡。
## 分区与次级索引
到目前为止,我们讨论的分区方案依赖于键值数据模型。如果只通过主键访问记录,我们可以从该键确定分区,并使用它来将读写请求路由到负责该键的分区。
...
...
@@ -143,8 +139,6 @@ Cassandra采取了折衷的策略【11, 12, 13】。 Cassandra中的表可以使
这种查询分区数据库的方法有时被称为
**分散/聚集(scatter/gather)**
,并且可能会使二级索引上的读取查询相当昂贵。即使您并行查询分区,分散/聚集也容易导致尾部延迟放大(请参阅第16页的“实践中的百分比”)。然而,它被广泛使用:MongoDB,Riak 【15】,Cassandra 【16】,Elasticsearch 【17】,SolrCloud 【18】和VoltDB 【19】,都使用文档分区二级索引。大多数数据库供应商建议您构建一个能从单个分区提供二级索引查询的分区方案,但这并不总是可行,尤其是当在单个查询中使用多个二级索引时(例如同时需要按颜色和制造商查询)。
### 根据关键词(Term)的二级索引
我们可以构建一个覆盖所有分区数据的
**全局索引**
,而不是给每个分区创建自己的次级索引(本地索引)。但是,我们不能只把这个索引存储在一个节点上,因为它可能会成为瓶颈,违背了分区的目的。全局索引也必须进行分区,但可以采用与主键不同的分区方式。
...
...
@@ -167,8 +161,6 @@ Cassandra采取了折衷的策略【11, 12, 13】。 Cassandra中的表可以使
全局关键词分区索引的其他用途包括Riak的搜索功能【21】和Oracle数据仓库,它允许您在本地和全局索引之间进行选择【22】。我们将在
[
第12章
](
ch12.md
)
中涉及实现关键字二级索引的话题。
## 分区再平衡
随着时间的推移,数据库会有各种变化。
...
...
@@ -187,7 +179,7 @@ Cassandra采取了折衷的策略【11, 12, 13】。 Cassandra中的表可以使
### 平衡策略
有几种不同的分区分配方
式【23】。
让我们依次简要讨论一下。
有几种不同的分区分配方
法【23】,
让我们依次简要讨论一下。
#### 反面教材:hash mod N
...
...
@@ -253,8 +245,6 @@ Cassandra和Ketama使用的第三种方法是使分区数与节点数成正比 -
出于这个原因,再平衡的过程中有人参与是一件好事。这比完全自动的过程慢,但可以帮助防止运维意外。
## 请求路由
现在我们已经将数据集分割到多个机器上运行的多个节点上。但是仍然存在一个悬而未决的问题:当客户想要发出请求时,如何知道要连接哪个节点?随着分区重新平衡,分区对节点的分配也发生变化。为了回答这个问题,需要有人知晓这些变化:如果我想读或写键“foo”,需要连接哪个IP地址和端口号?
...
...
@@ -297,8 +287,6 @@ Couchbase不会自动重新平衡,这简化了设计。通常情况下,它
数据仓库查询的快速并行执行是一个专门的话题,由于分析有很重要的商业意义,可以带来很多利益。我们将在第10章讨论并行查询执行的一些技巧。有关并行数据库中使用的技术的更详细的概述,请参阅参考文献【1,33】。
## 本章小结
在本章中,我们探讨了将大数据集划分成更小的子集的不同方法。数据量非常大的时候,在单台机器上存储和处理不再可行,则分区十分必要。分区的目标是在多台机器上均匀分布数据和查询负载,避免出现热点(负载不成比例的节点)。这需要选择适合于您的数据的分区方案,并在将节点添加到集群或从集群删除时进行再分区。
...
...
@@ -317,7 +305,9 @@ Couchbase不会自动重新平衡,这简化了设计。通常情况下,它
通过散列进行分区时,通常先提前创建固定数量的分区,为每个节点分配多个分区,并在添加或删除节点时将整个分区从一个节点移动到另一个节点。也可以使用动态分区。
混合方法也是可行的,例如使用复合主键:使用键的一部分来标识分区,而使用另一部分作为排序顺序。我们还讨论了分区和二级索引之间的相互作用。次级索引也需要分区,有两种方法:
两种方法搭配使用也是可行的,例如使用复合主键:使用键的一部分来标识分区,而使用另一部分作为排序顺序。
我们还讨论了分区和二级索引之间的相互作用。次级索引也需要分区,有两种方法:
*
按文档分区(本地索引),其中二级索引存储在与主键和值相同的分区中。这意味着只有一个分区需要在写入时更新,但是读取二级索引需要在所有分区之间进行分散/收集。
*
按关键词分区(全局索引),其中二级索引存在不同的分区的。辅助索引中的条目可以包括来自主键的所有分区的记录。当文档写入时,需要更新多个分区中的二级索引;但是可以从单个分区中进行读取。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录