本文共 1010 字,大约阅读时间需要 3 分钟。
键值数据库(key-value store)是一张简单的哈希表(hash table),主要用在所有数据库访问均通过主键(primary key)来操作的情况下。
应用程序可以提供键和值,并将这一键值对持久化。假如键已存在,就用新值覆盖当前值,否则就新建一条数据。
下表是关系型数据库Oracle和键值数据库Riak的术语对比:
Oracle | Riak |
---|---|
数据库实例(database instance) | Riak集群(Riak cluster) |
表(table) | 存储区(bucket) |
行(row) | 键值对(key-value) |
伪列(rowid) | 键(key) |
什么是键值数据库
从API的角度来看,简直数据库是最简单的NoSQL数据库。客户端可以根据键查询值,设置键所对应的值,或从数据库中删除键。“值”只是数据库存储的一块数据而已,它并不关心也无需知道其中的内容;应用程序负责理解所存数据的含义。由于键值数据库总是通过主键访问,所以它们一般性能较高,且易于扩展。
在Redis等键值数据库中,所存储的聚合不一定非要是领域对象(domain object),任何数据结构都可以。Redis能够存储list、set、hash等数据结构,而且支持“获取某个范围内的数值(range)”、“求差集(diff)”、“求并集(union)”、“求交集(intersection)”等操作。
键值数据库特性
-
一致性:只有针对单个键的操作才具备“一致性”。对于Riak这种分布式键值数据库,用“最终一致性模型”实现“一致性”。(参考:)
-
事务:Riak采用“仲裁”这一概念来实现事务功能。(参考:)
-
查询:由于需要根据键值查询,所以可以根据时间戳等数据库之外的值来生成键名,所以键值数据库非常适合保存会话(会话ID为主键)、购物车数据、用户配置等信息。还可以使用expiry_secs属性指定关键字的过期时间,这对会话或购物车对象特别有用。
-
数据结构:键值数据库并不关心键值对里的值,可以是二进制块、文本、JSON、XML等。
-
可扩展性:很多键值数据库都可用“分片”技术。(参考:)
适用案例
- 存放会话数据。
- 用户配置信息。
- 购物车数据。
不适用案例
- 需要在不同数据集之间建立关系,或是将不同的关键字集合联系起来。
- 需要执行含有多项操作的事务,而又需要复原或回滚。
- 需要根据键值对的某部分来查询关键字。
- 需要同时操作多个关键字。
转载地址:https://mortal.blog.csdn.net/article/details/83048857 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!