常见的NoSQL数据库及相关介绍
NoSQL数据库(Not Only ),NoSQL,泛指⾮关系型的数据库。
⼀、NoSQL数据库的四⼤分类
1、键值()存储
这⼀类数据库主要会使⽤到⼀个,这个表中有⼀个特定的键和⼀个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果只对部分值进⾏查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
2、列存储数据库。
这部分数据库通常是⽤来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
3、⽂档型数据库
⽂档型数据库的灵感是来⾃于Lotus Notes办公软件的,⽽且它同第⼀种键值存储相类似。该类型的数据
模型是版本化的⽂档,半结构化的⽂档以特定的格式存储,⽐如JSON。⽂档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。⽽且⽂档型数据库⽐键值数据库的查询效率更⾼。如:CouchDB, MongoDb. 国内也有⽂档型数据库SequoiaDB,已经开源。
4、图形(Graph)数据库
图形结构的数据库同其他⾏列以及刚性结构的SQL数据库不同,它是使⽤灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语⾔(SQL),因此进⾏数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接⼝或者查询API。如:Neo4J, InfoGrid, Infinite Graph.
因此,我们总结NoSQL数据库在以下的这⼏种情况下⽐较适⽤:1、数据模型⽐较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较⾼;4、不需要⾼度的数据⼀致性;5、对于给定key,⽐较容易映射复杂值的环境。
⼆、NoSQL数据库的四⼤分类表格分析
redis是nosql数据库吗
分类Examples举例典型应⽤场景数据模型优点缺点
键值(key-value)Tokyo
Cabinet/Tyrant,
Redis,
Voldemort,
Oracle BDB
内容缓存,主
要⽤于处理⼤
量数据的⾼访
问负载,也⽤
于⼀些⽇志系
统等等。
Key 指向
Value 的
键值对,
通常⽤
hash table
来实现
查速度快数据⽆结构
化,通常只
被当作字符
串或者⼆进
制数据
列存储数据库Cassandra,
HBase, Riak
分布式的⽂件
系统
以列簇式
存储,将
同⼀列数
据存在⼀
查速度
快,可扩展
性强,更容
易进⾏分布
式扩展
功能相对局
⽂档型数据库CouchDB,
MongoDb
Web应⽤(与
Key-Value类
似,Value是结
构化的,不同
的是数据库能
够了解Value的
内容)
Key-
Value对应
的键值
对,Value
为结构化
数据
数据结构要
求不严格,
表结构可
变,不需要
像关系型数
据库⼀样需
要预先定义
表结构
查询性能不
⾼,⽽且缺
乏统⼀的查
询语法。
图形(Graph)数据库Neo4J,
InfoGrid,
Infinite Graph
社交⽹络,推
荐系统等。专
注于构建关系
图谱
图结构利⽤图结构
相关算法。
⽐如最短路
径寻址,N
度关系查
很多时候需
要对整个图
做计算才能
得出需要的
信息,⽽且
这种结构不
太好做分布
式的集⽅
案。
三、适⽤场景
NoSQL 数据库在以下的这⼏种情况下⽐较适⽤:
1、数据模型⽐较简单;
2、需要灵活性更强的IT 系统;
3、对数据库性能要求较⾼;
4、不需要⾼度的数据⼀致性;
5、对于给定key ,⽐较容易映射复杂值的环境。
四、常见NoSql 数据库
据说现在已经有上百种NoSQL 数据库了,下⾯来了解下常见的⼀些NoSQL 数据库
先来看张表,了解下典型的NoSQL 数据库的分类:
(临时性)的键值存储⼀般作为关系型数据库的缓存来使⽤具有⾮常快的处理速度由于存在数据丢失的可能,所以⼀般⽤来处理不需要持久保存的数据
⽤于需要使⽤expires 时(需要定期清除数据)
使⽤⼀致性散列(Consistent Hashing)算法来分散数据
Tokyo Tyrant 持久性的键值存储
⽤来处理需要持久保存,⾼速处理的数据具有⾮常快的处理速度
⽤于不需要定期清除的数据
使⽤⼀致性散列(Consistent Hashing)算法来分散数据
Redis
兼具Memcached 和Tokyo Tyrant 优势的键值存储
擅长处理数组类型的数据
具有⾮常快的处理速度
可以⾼速处理时间序列的数据,易于处理集合运算
拥有很多可以进⾏原⼦操作的⽅法
使⽤⼀致性散列(Consistent Hashing)算法来分散数据
MongoDB
⾯向⽆需定义表结构的⽂档数据
具有⾮常快的处理速度
通过BSON 的形式可以保存和查询任何类型的数据
⽆法进⾏JOIN 处理,但是可以通过嵌⼊(embed)来实现同样的功能
使⽤sharding(范围分割)算法来分散数据
上⾯多次提到了⼀致性散列,那到底什么是⼀致性散列呢?请参考 ,我就不赘述了
不过,当server 数量很少时,很可能他们在圆周上的分布不是特别均匀,
导致cache 不能均匀分布到所有的server 上。
这时候,就该请出虚拟节点了
为每个物理节点(服务器)在圆上分配100~200个点,
这样就能抑制分布不均匀,最⼤限度地减⼩服务器增减时的缓存重新分布,
⽤户数据映射在虚拟节点上,就表⽰⽤户数据真正存储位置是在该虚拟节点代表的实际物理服务器上。

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