NoSQL-键值数据库介绍
键值数据库是⼀类轻量级结合内存处理为主的NoSQL数据库。
为什么说他是轻量级
1.他的存储数据结构特别简单,数据库系统本⾝的规模也⽐较⼩
2.以内存为主的运⾏处理,⽬的是为了更快的实现对⼤数据的处理
键值存储实现:
键值数据库的设计原则是以提⾼数据处理速度为第⼀⽬标
⼀、键值数据库实现的基本原理
键值数据库数据结构最早借鉴了⼀维数组的设计⽅法;键值数据库设计时放宽了对下标和值的限制,所以key具有唯⼀地址的作⽤,也⽤来存在唯⼀内容,对value值存储内容不限制,可以存储字符串、数字、视频、图⽚、⾳频等,但是key--value必须成对出现。
且键下的内容必须具有唯⼀性,⽬的是为建⽴索引及数据查提供⽅便,但任然起着唯⼀地址的作⽤。
只有数据存储结构和数据,数据得不到永久保存不能称为真正的数据库。于是通过各种键值数据库系统的各种存储策略,以⼀定时间周期把数据复制到本地硬盘、闪存盘,键值数据库就初步成型了。但是在⼤数据环境下单机的内存要受容量限制,那么引⼊分布式处理⽅式便成为键值数据库的必然选择也是其基本特征之⼀。
⼆、键值数据库存储的基本要素
key(键):
起唯⼀索引值的作⽤,确保⼀致键值结构李数据记录的唯⼀性,同时也起信息记录的作⽤,可以采⽤复杂的⾃定义结构,只要保持唯⼀即可
注意:
键不是越长越好(不要超过1024字节),键的内⽤越多,内存开销越⼤,从⽽降低查询效率,⽽且在⼤数据环境下,给数据查这类计算带来更⼤的运⾏负担
键的内容太短也不好,可读性不⾼
在同⼀类数据集合中,键的命名规范最好统⼀
value(值):
值是对应键相关的数据,通过键来获取,可以存放任何类型的数据,键值数据库的值由⼆进制⼤对象(BLOB)进⾏存储,这意味着任何类型的数据都可以保存,⽆需预先定义数据类型,在关系型数据库中是强制要求预先定义存储数据类型的
注意:
不同的键值数据库对值会有不同的约束,特别是在值存储的⼤⼩上,不同数据库,甚⾄不同数据库⾥的不同数据集对象的约束是不⼀样的。例如redis中⼀个string的值,最⼤可以存储字节数为512M
键值对(key-value pair):
键和值的组合就构成了键值对,他们之间的关系是⼀对⼀
命名空间(namespace):
命名空间是由键值所构成的集合,通常是⼀类键值对数据构成⼀个集合。
在键值对的基础上增加命名空间,是为了在内存中访问该数据集时,该数据集具有唯⼀的名称,类似传统关系型数据库对应的表
PS:
可以把namespace看做是⼀个最⼩的键值数据库,当然键值数据库更多指的是多namespace。部分键值数据库也称之为桶,即键值数据库和桶是⼀个意思
三、基本数据操作⽅式
NoSQL的键值数据库有了存储结构和数据,就需要考虑对数据的读写删除的操作要求了,由于NoSQL数据库没有SQL概念,他们对数据操作的实现是通过PUT、GET、delete实现的
put命令:
⽤于写或者更新键值存储⾥指定地址的值,当指定地址有值时,更新值,没有值时,新增⼀个值
get命令:
⽤于读取键值存储⾥指定地址的值,如果没有值,返回⼀条错误提⽰信息
delete命令:
⽤于删除键值存储指定地址的键和值,如果键值存储⾥没有该键,就返回⼀条错误提⽰信息
键值存储的特点
优点
简单:
数据存储结构只有键和值,并成对出现,值理论上可以存储任意数据,并⽀持⼤数据存储,凡是具有类似关系的数据应⽤,可以考虑键值数据库,如热门⽹页排⾏
快速:
以内存为主的设计思路使键值数据库拥有了快速处理数据的优势
redis是nosql数据库吗
⾼效计算:
数据结构简单化,⽽且数据集之间关系的简单化(没有传统数据库中多表关联关系),基于内存的数据集计算,为⼤量⽤户访问情况下,提供⾼速计算并响应的应⽤提供了技术⽀持
分布式处理:
分布式处理能⼒使键值数据库具备了处理⼤数据的能⼒
缺点
对值进⾏多值查功能很弱
键值数据库在设计之初就以键为主要对象进⾏各种数据操作,包括查功能,对值直接进⾏操作的功能很弱
缺少约束,意味着更容易出错
键值数据库不⽤强制命令预先定义键和值所存储的数据类型,那么在具体业务使⽤过程中,原则上值⾥什么数据都可以存放,甚⾄放错了都不会报错。这在某些应⽤场景上很致命,例如商品价格,需要程序猿对业务代码进⾏编程约束,避免潜在问题,由于没有值的类型定义,当有多名程序猿编程的情况下,需要更加重视设计⽂档的建⽴,否则可能A把价格当做整型数据,B把价格看做字符串,C把价格看做浮点数,容易引起代码编写混乱,也给后续的软件系统的代码维护代码了⿇烦
不容易建⽴复杂关系
键值数据库的数据集,不能像传统关系型数据库那样建⽴复杂的横向关系,键值数据库局限于两个数据集之间的有限计算,例如redis数据库⾥做交、并、补集运算

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。