NoSQL:键值数据库
发布日期:2021-07-01 04:08:48 浏览次数:2 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:NoSQL:文档数据库
下一篇:NoSQL:映射-化简

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月16日 03时46分31秒