背景
上篇博客已经对数据模型整体有了一个介绍,下面针对Nosql中的四种数据模型进行详解的介绍。如下图:
@H_502_7@
@H_502_7@
@H_502_7@
概念
键值数据库是一张简单的hash table,主要用在所有数据库访问均通过主键来操作的情况下。讨论每一种Nosql数据库的特征时,都要了解其”一致性“、”事务性“、查询特性、数据结构和可扩展性。
@H_502_7@
一致性
只有针对单个键的操作才局别“一致性”,因为这种操作只可能是“获取”、“设置”、或者“删除”。“乐观写入”功能其实也可以做出来,然而由于数据库无法侦测数值改动,所以其实现成本太高。Riak这种分布式键值数据库,用“最终一致性模型”实现一致性。因为树枝可能已经复制到其他节点,所以Riak有两种解决“更新冲突”的办法:一种是采纳新写入的数据而拒绝旧数据,另一种是将两者返回给客户端,令其解决冲突。
@H_502_7@
事务
不同类型的键值数据库产品,其“事务”规范不同。一般来说,无法保证写入操作的“一致性”。各种数据库实现“事务”的方式各异。Riak采用“仲裁”这一概念,在调用写入数据的API时,它使用W值与复制银子来实现“仲裁”。
@H_502_7@
查询功能
所有键值数据库都可以按关键字查询。他们的查询功能基本上仅限于此。
@H_502_7@
数据结构
键值数据库并不关心键值对里的值。它可以是二进制、文本、JSON、XML等。在使用Riak时,可在post请求中用Content—Type指定数据类型。
@H_502_7@