背景
概念
一致性
只有针对单个键的操作才局别“一致性”,因为这种操作只可能是“获取”、“设置”、或者“删除”。“乐观写入”功能其实也可以做出来,然而由于数据库无法侦测数值改动,所以其实现成本太高。Riak这种分布式键值数据库,用“最终一致性模型”实现一致性。因为树枝可能已经复制到其他节点,所以Riak有两种解决“更新冲突”的办法:一种是采纳新写入的数据而拒绝旧数据,另一种是将两者返回给客户端,令其解决冲突。
事务
不同类型的键值数据库产品,其“事务”规范不同。一般来说,无法保证写入操作的“一致性”。各种数据库实现“事务”的方式各异。Riak采用“仲裁”这一概念,在调用写入数据的API时,它使用W值与复制银子来实现“仲裁”。
查询功能
数据结构
键值数据库并不关心键值对里的值。它可以是二进制、文本、JSON、XML等。在使用Riak时,可在post请求中用Content—Type指定数据类型。
可扩展性
很多键值数据库都用“分片”技术扩展。采用此技术后,键的名字就决定了负责存储该键的节点。当集群中的节点数变多时,这种“分片”设定可提高效率。但是“分片”也会引发某些问题。像Riak,可以快弄告知“CAP定理”中的参数:N(存放键值对的副本节点数)、R(顺利完成读取操作所需的最小节点数)和W(顺利完成写入操作所需的最小节点数)
适用案例
存放会话信息、用户配置信息、购物车数据
不使用场合
数据间关系、含有多项操作的事务、查询数据、操作关键字的集合。
原文链接:https://www.f2er.com/nosql/203988.html