1. 首页 > 科技

键值存储数据库? 关系数据库和键值数据库

键值存储数据库?关系数据库和键值数据库

什么叫键值数据库?

兼职数据库就是数据按照键值对的形式进行组织、索引和存储。

KV存储非常适合不涉及过多数据关系业务关系的业务数据,同时能有效减少读写磁盘的次数,比SQL数据库存储拥有更好的读写性能。

介绍9种用于大数据处理的免费键值存储数据库。

1. Aerospike 社区版

2. LevelDB

3. Scalaris

4. Project Voldemort

5. HyperDex

6. Berkeley DB

7. Apache Accumulo

8. Redis

9. Apache Cassandra

文档数据库和键值数据库有什么区别

首先 文档数据库 和 键值数据库 都是 NoSQL

第二 文档数据库 最典型的是 MongoDB 而 键值数据库 最典型的是 Redis

第三 文档数据库 提供嵌入式文档 这对于非规范化非常有用 文档数据库将经常查询的数据存储在同一个文档中 而不是存储在表中 如果一个应用程序需要存储不同的属性 以及大量的数据 那么文档数据库将会是一个很好的选择

第四 键值数据库 适用于那些频繁读写 拥有简单数据模型的应用 键值数据库中存储的值 可以是简单的标量值 如整数或布尔值 也可以是结构化数据类型 比如列表和 JSON 结构 键值数据库通常具有简单的查询功能 允许通过键来查找一个值

如何在嵌入式产品中应用键值存储数据库

EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU提供便捷、通用的上层应用接口,它提供的主要功能有3种:Env(环境变量)、IAP(在线升级)以及Log(Flash存储日志)。这里主要介绍可以让Flash变为小型键值存储数据库的Env功能。

  增删改查

  下图为通过控制台(终端)来调用环境变量的常用接口,演示了环境变量 “temp” 从创建到保存,再修改,最后删除的过程。这些接口都支持被应用层直接调用。

 

主要使用方法如下:

  /* 创建Key名为temp的环境变量,并赋初值"123" */

ef_set_env("temp","123");

/* 修改环境变量temp的值为"456" */

ef_set_env("temp","456");

/* 读取环境变量temp的值 */

char *temp = ef_get_env("temp");

/* 删除环境变量temp */

ef_set_env("temp","");

实现键值对存储(一):什么是键值对存储,为什么

键值对存储是数据库最简单的组织形式。基本上全部的编程语言都带有应用在内存中的键值对存储。C++STL的映射容器(map container)和Java的HashMap以及Python的字典类型都是键值对存储。键值对存储通常都有例如以下接口:

Get( key ): 获取之前存储于某标示符“key”之下的一些数据,或者“key”下没有数据时报错。

Set( key, value ): 将“value”存储到存储空间中某标示符“key”下。使得我们能够通过调用同样的“key”来访问它。

假设“key”下已经有了一些数据,旧的数据将被替换。

Delete( key ):  删除存储在“key”下的数据。

大部分低层实现都是使用哈希表或者某种自平衡树(比如B-树或者红黑树)。有时候数据太大而不装不进内存,或者必须维持数据谨防系统由于未知原因而崩溃。在这些情况下。就必须使用到文件系统。

键值对存储是NoSQL运动的一部分。NoSQL将全部不使用基于关系型数据库概念的数据库系统组合在一起。

维基百科上的NoSQL词条非常好的总结了这些数据库的特征。

不使用SQL查询语言

可不全面支持ACID(原子性、一致性、隔离性、持久性)。

可提供分布式、容错强的结构