Amazon DynamoDB 入门2: 工作原理、API和数据类型介绍

本节主要介绍DynamoDB 基本概念、核心组件、数据结构、Api DynamoDB工作原理 DynamoDB 基本概念 DynamoDB 是 AWS 独有的完全托管的 NoSQL Database。它的思想来源于 Amazon 2007 年发表的一篇论文:Dynamo: Amazon’s Highly Available Key-value Store。在这篇论文里,Amazon 介绍了如何使用 Commodity Hardware 来打造高可用、高弹性的数据存储。想要理解 DynamoDB,首先要理解 Consistent Hashing。Consistent Hashing 的原理如下图所示: HUGOMORE42 它的概念是: 我有一个足够大的Keyspace(2的160次方,比较一下:IPv6是2的128次方),我们记作X。 然后将X放在一个环形的空间里划分成大小相等的Y个 Partition,依次循环排列(如图),每个 Partition 由一个Vnode(Riak的概念)管理, 当你有M个Database Server(Node),Y个Vnode再平均映射到M个Node上。 当数据要插入时,将其主键(Hash Key)映射到K中的一个地址(Addr),对应到某个Vnode,再进一步对应到某个Node,如果这个数据需要N个Replica,则将数据写入Addr(Vnode a),Addr + 1(Vnode b), …,Add + N(Vnode n)。 这里,M就是你的Shards,N是Replica。 以后添加新的Node时,映射发生变化,只需要把相应的变化了的Vnode迁移到新的Node上即可。在这种结构下,Sharding/Replica对程序员基本上是透明的。 DynamoDB 核心组件 基本 DynamoDB 组件包括:表、项目、属性 表 - 类似于其他数据库系统,DynamoDB将数据存储在表中。表是数据的集合。(类似于关系型数据库中的表) 项目 - 每个表包含多个项目。项目是一组属性,具有不同于所有其他项目的唯一标识。(类似于其他数据库系统中的行、记录或元组。) 属性 - 每个项目包含一个或多个属性。属性是基础的数据元素,无需进一步分解。(类似于其他数据库系统中的字段或列。) 下图是一个名为 People 的表,其中显示了一些示例项目和属性: 请注意有关 People 表的以下内容: ...

2017-01-09 · 4 min · 652 words

Amazon DynamoDB 入门1:配置(本地)及python示例

本节主要介绍AmazonDynamoDB 安装配置及Python开发示例" 什么是 Amazon DynamoDB Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,提供快速而可预测的性能,能够实现无缝扩展。使用 DynamoDB,您可以免除操作和扩展分布式数据库的管理工作负担,因而无需担心硬件预置、设置和配置、复制、软件修补或集群扩展等问题。 使用 DynamoDB,您可以创建数据库表来存储和检索任意量级的数据,并提供任意级别的请求流量。您可以扩展或缩减您的表的吞吐容量,而不会导致停机或性能下降,还可以使用 AWS 管理控制台来监控资源使用情况和各种性能指标。 HUGOMORE42 Amazon DynamoDB 特点 DynamoDB 会自动将数据和流量分散到足够数量的服务器上,以满足吞吐量和存储需求,同时保持始终如一的高性能。所有数据均存储在固态硬盘 (SSD) 中,并会自动复制到 AWS 区域中的多个可用区中,从而提供内置的高可用性和数据持久性。 DynamoDB 是 NoSQL 数据库并且无架构,这意味着,与主键属性不同,无需在创建表时定义任何属性或数据类型。与此相对,关系数据库要求在创建表时定义每个列的名称和数据类型。 Amazon DynamoDB 使用 AWS 配置 注册 Amazon Web Services 并创建访问密钥 创建 AWS 凭证文件 开启DynamoDB 服务 在计算机上运行 DynamoDB 除了 Amazon DynamoDB Web 服务之外,AWS 还提供可本地运行的可下载版本的 DynamoDB。 使用本地版本,在开发应用程序时无需 Internet 连接。 方法1 直接在计算机上安装 需要安装java环境 下载 DynamoDB 解压,并将解压后的目录复制到某个位置 打开命令提示符窗口,打开 DynamoDBLocal.jar 的目录,并输入以下命令: java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb 现在就可以使用了 ...

2017-01-07 · 2 min · 304 words