NoSQL数据库的四⼤类型
⼀般将NoSQL数据库分为四⼤类:键值(Key-Value)存储数据库、列存储数据库、⽂档型数据库和图形(Graph)数据库。它们的数据模型、优缺点、典型应⽤场景如下表所⽰。
分类数据模型优点缺点典型应⽤场景
键值(Key-Value)存储数据库Key指向Value
的键值对,通常
⽤hash表来实
现
查速度快
数据⽆结构化(通常只被当作字符
串或者⼆进制数据)
内容缓存,主要⽤于处理
⼤量数据的⾼访问负载,
也⽤于⼀些⽇志系统等
列存储数据库以列簇式存储,
将同⼀列数据存
在⼀起
查速度快,可扩展性强,
更容易进⾏分布式扩展
功能相对局限分布式的⽂件系统
⽂档型数据库Key-Value对应
的键值
对,Value为结
构化数据
数据结构要求不严格,表结
构可变(不需要像关系型数据
库⼀样需预先定义表结构)
查询性能不⾼,⽽且缺乏统⼀的
查询语法
Web应⽤
图形
(Graph)数据库图结构
利⽤图结构相关算法(如最短
路径寻址,N度关系查等)
很多时候需要对整个图做计算才
能得出需要的信息,⽽且这种结
构不太好做分布式的集⽅案
社交⽹络,推荐系统等
1、键值(Key-Value)存储数据库
这⼀类数据库主要会使⽤到⼀个哈希表,这个表中有⼀个特定的键和⼀个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进⾏查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
R edis
最佳应⽤场景:适⽤于数据变化快且数据库⼤⼩可遇见(适合内存容量)的应⽤程序。
例如:股票价格、数据分析、实时数据搜集、实时通讯。
2、列存储数据库
这部分数据库通常是⽤来应对分布式存储的海量数据。键仍然存在,但它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
H Ba se
最佳应⽤场景:适⽤于偏好BigTable并且需要对⼤数据进⾏随机、实时访问的场合。
例如: Facebook消息数据库
Ca ssa ndr a
最佳应⽤场景:当使⽤写操作多过读操作(记录⽇志)时
redis是nosql数据库吗例如:银⾏业,⾦融业(要求写⽐读更快)
R ia k
最佳应⽤场景:适⽤于想使⽤类似 Cassandra(类似Dynamo)数据库但⽆法处理 bloat及复杂性的情况。适⽤于你打算做多站点复制,但⼜需要对单个站点的扩展性,可⽤性及出错处理有要求的情况。
例如:销售数据搜集,⼯⼚控制系统;对宕机时间有严格要求;可以作为易于更新的 web服务器使⽤。
3、⽂档型数据库
⽂档型数据库的灵感是来⾃于Lotus Notes办公软件的,⽽且它同第⼀种键值存储相类似。该类型的数据模型是版本化的⽂档,半结构化的⽂档以特定的格式存储,⽐如JSON。⽂档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。⽽且⽂档型数据库⽐键值数据库的查询效率更⾼。如:CouchDB, MongoDb。国内也有⽂档型数据库SequoiaDB,已经开源。
Co uc hDB
最佳应⽤场景:适⽤于数据变化较少,执⾏预定义查询,进⾏数据统计的应⽤程序。适⽤于需要提供数据版本⽀持的应⽤程序。
例如: CRM、CMS系统
Mo ngo DB
最佳应⽤场景:适⽤于需要动态查询⽀持;需要使⽤索引⽽不是 map/reduce功能;需要对⼤数据库有性能要求;需要使⽤ CouchDB但因为数据改变太频繁⽽占满内存的应⽤程序。
4、图形(Graph)数据库
图形结构的数据库同其他⾏列以及刚性结构的SQL数据库不同,它是使⽤灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语⾔(SQL),因此进⾏数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接⼝或者查询API。如:
Neo4J,InfoGrid,OrientDB,HypherGraphDB,GraphBase,InfiniteGraph,AllegroGraph。
N eo4j
最佳应⽤场景:适⽤于图形⼀类数据。这是 Neo4j与其他nosql数据库的最显著区别
例如:社会关系,公共交通⽹络,地图及⽹络拓谱
附:常见的NoSQL数据库
分类实例
键值(Key-Value)存储数据库* Riak:⼀个开源、分布式键值数据库,⽀持数据复制和容错
* Redis:⼀个开源的键值存储数据库,⽀持主从式复制、事务,Pub/Sub、Lua脚本,还⽀持给Key添加时限
* Dynamo:⼀个键值分布式存储数据库,直接由亚马逊Dynamo数据库实现
* Oracle NoSQL Database:来⾃Oracle的键值NoSQL数据库,⽀持事务ACID和JSON
* Oracle NoSQL Database:具备数据备份和分布式键值存储系统
* Voldemort:具备数据备份和分布式键值存储系统
* Aerospike:⼀个键值存储数据库,⽀持混合内存架构,通过强⼀致性和可调⼀致性保证数据的完整性
列存储数据库* Cassandra:⽀持跨数据中⼼的数据复制,提供列索引
* HBase:⼀个开源、分布式、⾯向列存储的模型
* Amazon SimpleDB:⼀个⾮关系型数据存储
* Apache Accumulo:有序的、分布式键值数据存储,基于Google的BigTable设计* Hypertable:⼀个开源、可扩展的数据库,模仿Bigtable,⽀持分⽚
* Azure Tables:为要求⼤量⾮结构化数据存储的应⽤提供NoSQL性能
⽂档型数据库* MongoDB:开源、⾯向⽂档
* CounchDB:⼀个使⽤JSON的⽂档数据库,使⽤Javascript做MapReduce查询,也是⼀个使⽤HTTP的API
* Couchbase:基于JSON模型
* RavenDB:⼀个基于语⾔的⾯向⽂档数据库
* MarkLogic:⽤来存储基于XML和以⽂档为中⼼的信息,⽀持灵活的模式
图形(Graph)数据库* Neo4j:⼀个图数据库,⽀持ACID事务
* InfiniteGraph:⽤来维持和遍历对象间的关系,⽀持分布式数据存储
* AllegroGraph:结合使⽤了内存和磁盘,提供了⾼可扩展性,⽀持SPARQ、RDFS++和
Prolog推理
分类实例
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论