键值存储数据库? 关系数据库和键值数据库
什么叫键值数据库?
兼职数据库就是数据按照键值对的形式进行组织、索引和存储。
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(原子性、一致性、隔离性、持久性)。
可提供分布式、容错强的结构