NoSQL:键值数据库

版权声明:本文为博主原创文章,源代码都是自己写的,100%测试通过(如果你没有配好环境那不怪我),如果喜欢的话,可以撩我哟,未经博主允许不得转载。 https://blog.csdn.net/qq_39384184/article/details/83048857

键值数据库(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这种分布式键值数据库,用“最终一致性模型”实现“一致性”。(参考:NosQL分布式模型:放宽一致性约束

  • 事务:Riak采用“仲裁”这一概念来实现事务功能。(参考:NosQL分布式模型:仲裁

  • 查询:由于需要根据键值查询,所以可以根据时间戳等数据库之外的值来生成键名,所以键值数据库非常适合保存会话(会话ID为主键)、购物车数据、用户配置等信息。还可以使用expiry_secs属性指定关键字的过期时间,这对会话或购物车对象特别有用。

  • 数据结构:键值数据库并不关心键值对里的值,可以是二进制块、文本、JSON、XML等。

  • 可扩展性:很多键值数据库都可用“分片”技术。(参考:NosQL分布式模型:分片


适用案例

  • 存放会话数据
  • 用户配置信息
  • 购物车数据

不适用案例

  • 需要在不同数据集之间建立关系,或是将不同的关键字集合联系起来。
  • 需要执行含有多项操作的事务,而又需要复原或回滚。
  • 需要根据键值对的某部分来查询关键字。
  • 需要同时操作多个关键字。

想了解更多关于NoSQL数据库:NoSQL数据库专栏

猜你喜欢

转载自blog.csdn.net/qq_39384184/article/details/83048857
今日推荐