NoSQL分布式模型实现之一:Single Server

翻译内容:

NoSQL Distilled 第四章 Distribution Models

作者简介:

本节摘要:

第四章我们主要说的是NoSQL运行在分布式的集群上的一些细节。今天我们主要说分布式的第一种方案就是不分布,只有一个server来部署的方案。由于新的一章的开始,我们还是先从引言开始,引言之后便是今天的内容。

The primary driver of interest in NoSQL has been its ability to run databases on a large cluster. As data volumes increase, it becomes more difficult and expensive to scale up—buy a bigger server to run the database on. A more appealing option is to scale out—run the database on a cluster of servers. Aggregate orientation fits well with scaling out because the aggregate is a natural unit to use for distribution.

催生NoSQL的主要原因就是我们需要一种数据库可以运行在庞大的集群上。随着数据量的增长,通过购买更大的服务器来纵向扩展变得越来越麻烦和昂贵。与之相对的,将服务器运行在服务器集群上的横向扩展的方式,开始倍受青睐。面向聚合的这种结构恰好就和这种横向扩展很般配,因为聚合在集群上此时就自然成了数据分布单元。

Depending on your distribution model, you can get a data store that will give you the ability to handle larger quantities of data, the ability to process a greater read or write traffic, or more availability in the face of network slowdowns or breakages. These are often important benefits, but they come at a cost. Running over a cluster introduces complexity—so it’s not something to do unless the benefits are compelling.

各式分布式模型所带来的好处也不同。有些模型的数据库存储能够处理大量的数据,有些能够处理大量网络读取或写入请求,还有一些能够更好地应对网络速度慢或网络故障等状况。这些优势都很重要,不过它们都有成本。在集群上运行数据库比较复杂,所以除非刚才说的那些优点确有必要,否则不应该随意选用。

Broadly, there are two paths to data distribution: replication and sharding. Replication takes the same data and copies it over multiple nodes. Sharding puts different data on different nodes. Replication and sharding are orthogonal techniques: You can use either or both of them. Replication comes into two forms: master-slave and peer-to-peer. We will now discuss these techniques starting at the simplest and working up to the more complex: first single-server, then master-slave replication, then sharding, and finally peer-to-peer replication.

更宽泛的说,数据分布有两条路径:复制(replication)和分片(sharding)。复制就是把同一份数据拷贝到多个节点上;而分片就是把不同数据存放到不同的节点上。复制和分片是两项“正交”的技术:既可以二选一,也可以两种同时使用。复制有主从式(master-slave)和对等式(peer-to-peer)。现在我们就从易到难来讨论这些技术:先讲单一服务器,然后讲分片,然后讲主从复制,最后讲对等复制。

现在我们进入今天的内容:

4.1 Single Server 单一服务器

The first and the simplest distribution option is the one wewould most often recommend—no distribution at all. Run the database on a single machine that handles all the reads and writes to the data store. We prefer this option because it eliminates all the complexities that the other options introduce; it’s easy for operations people to manage and easy for application developers to reason about.

第一个也是最简单的分布式方案,也是我们大部分时候推荐使用的方案,就是根本就不分布,就一个server。(译者曰:这个时候,你是不是感觉出现了哲学:不分布也是一种分布)我们把数据库放在一个server,然后让它处理对数据的存取。我们推荐这种方案是因为它比其它的分布式的那些方案要简单很多。一个server对于维护人员来说好管理,对于应用开发人员来说也是非常简单。

Although a lot of NoSQL databases are designed around the idea of running on a cluster, it can make sense to use NoSQL with a single-server distribution model if the data model of the NoSQL store is more suited to the application. Graph databases are the obvious category here—these work best in a single-server configuration. If your data usage is mostly about processing aggregates, then a single-server document or key-value store may well be worthwhile because it’s easier on application developers.

尽管很多的NoSQL数据库都是为集群而生的,但是NoSQL运行在单机上有时候也是很有感觉的,如果你的应用程序恰好需要某种NoSQL数据库的数据模型的话。(译者曰:只要某个NoSQL数据库的数据模型符合你的应用需求,运行在单机上也是很带感的。) 图数据库就是这种特别适合运行在单机上的NoSQL数据库(译者曰:我们前面的某章说图数据库就是NoSQL阵营的奇葩)。如果你的数据使用大部分时候都是处理聚合的话,那么你完全可以把文档数据库或者key-value数据库运行在单机上,而且这样对于application developers也是很简单的。

以上就是今天的内容,下回我们说分片(sharding)。

附:本节词汇及短语

key-value store 这里我们统指键值数据库。比如redis、Cassandra等。

document store 这里我们统指文档数据库。比如MongoDB、CouchDB、Apa

che Jackrabbit等。

Graph databases 图数据库。比如:neo4j等。

application developers 应用程序开发人员。

operations people 运维人员

running on a cluster 运行一个集群上

原文发布于微信公众号 - ImportSource(importsource)

原文发表时间:2016-04-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

微信机器人进化指南

听说阿尔法狗又要挑战柯杰了。时至今日,人工智能不断刷新我们对这个世界的理解。或许再过不久,你真的不知道跟你在网上聊天的对象还是不是一个“人”,也不知道自己的工作...

80770
来自专栏FreeBuf

CVE-2018-5711:一张GIF图片就能让服务器宕机的PHP漏洞

最近,台湾Web漏洞挖掘大牛Orange Tsai在对一些Web开发框架和程序实现模块进行安全审核的过程中,发现了一些有意思的漏洞。就比如说,这个PHP的CVE...

30990
来自专栏IT大咖说

饿了么:Redis Cluster运维方案

内容来源:2017 年 8 月 12 日,饿了么高级Python工程师黄光星在“CRUG 2017北京活动”进行《Redis Cluster运维方案》演讲分享。...

31220
来自专栏hotqin888的专栏

golang语言的办公工作流的包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

27220
来自专栏PHP在线

NoSQL数据库的分布式算法

原文出处: highlyscalable.wordpress.com 译文出处:juliashine 系 统的可扩展性是推动NoSQL运动发展的的主要...

35650
来自专栏Android 开发者

Android 8.1 开发者预览版 —— 为 ML 机器学习做好准备的 Oreo 升级版

24240
来自专栏mySoul

测试用例概念 原则

测试用例为一组条件或变量,根据其来确定应用软件是否能够正常的工作。其条件和变量为测试用例。

13720
来自专栏北京马哥教育

分布式与集群的联系与区别

集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群就象是一个服务实体,但事实上集群由一组服务实体组成。与单...

29230
来自专栏阮一峰的网络日志

全文Feed的终极解决方案

但是,世界上的大部分Feed,都是摘要Feed,甚至是标题Feed。我们只好自己动手,制作全文Feed。

17920
来自专栏人人都是极客

聊聊Linux IO(下)

广义上Cache的同步方式有两种,即Write Through(写穿)和Write back(写回). 从名字上就能看出这两种方式都是从写操作的不同处理方式引出...

42910

扫码关注云+社区

领取腾讯云代金券