通过写代码学习AWS DynamoDB (2)

简介

在上一篇文章里,我们实现了DDB的基本API。上一篇文章请见《通过写代码学习AWS DynamoDB(1)》。在本文中,我们将进一步增强该DDB的模拟实现,给DDB加入Partition。

Partition是Shard的一种。关于Shard的介绍可以参看这篇文章。我们简单介绍一下Shard和Parition的概念。然后我们会在DDB的实现中加上一个简单的Parition的实现。

Shard介绍

区别于传统的基于集中式环境实现数据存储,分布式系统是将数据分散的存储在多个地方,可能是不同的host,或者是server,或者是cluster,等等。每一个这样的节点就是一个shard。使用shard带来的好处有以下几点:

  • scale更加容易实现和管理:假如数据存储在一个集中的节点上,我们就要预先估计我们要使用的数据存储容量。过大会浪费很多存储,过小又会需要经常调整,非常麻烦。而且单一存储节点的容量调整本身也很麻烦,一般需要具有一定的专业知识,通过复杂的操作和指令来实现存储容量的扩容。但是有了shard这一切就变得简单和灵活很多。在需要调整数据存储容量时,我们仅仅需要增加和减少shard。
  • 系统的robust会得到加强。传统的集中存储方式,一旦存储的服务器出现问题,整个系统就会瘫痪。但是基于shard的实现,如果一个shard出现问题,系统仅仅是部分数据无法访问,整体功能仍然可以部分得到保障。如果我们将shard和replica配合使用,则可以保障整体系统的robust会更好。
  • 系统的响应时间会得到改善。不同于传统的集中式存储,数据可以根据需要存储在多个shard里。首先,多个存储本身就很有利于并行的处理数据操作,从而使得响应时间得到改善。其次,shard可以根据需要部署到和client更近的地方,从而改善响应时间。例如,如果数据是和城市有关的,那么我们可以将数据按照城市分别存到不同的shard里,并将每个城市的shard部署到该城市。
  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值