nosql四大分类:1、KV键值对。
创新新互联,凭借10年的网站设计制作、成都做网站经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有数千家案例。做网站建设,选创新互联公司。
2、文档型数据库。
3、列存储数据库。
4、图关系数据库。nosql是非关系型数据库,NoSQL(NotOnlySQL),意思是"不仅仅是SQL",指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。
1. 键值数据库
相关产品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
应用:内容缓存
优点:扩展性好、灵活性好、大量写操作时性能高
缺点:无法存储结构化信息、条件查询效率较低
使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)
2. 列族数据库
相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS
应用:分布式数据存储与管理
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Facebook(HBase)
3. 文档数据库
相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
应用:存储、索引并管理面向文档的数据或者类似的半结构化数据
优点:性能好、灵活性高、复杂性低、数据结构灵活
缺点:缺乏统一的查询语言
使用者:百度云数据库(MongoDB)、SAP(MongoDB)
4. 图形数据库
图形数据库-使用图作为数据模型来存储数据。
相关产品:Neo4J、OrientDB、InfoGrid、GraphDB
应用:大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱
缺点:复杂性高、只能支持一定的数据规模
使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)
基本含义NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。NoSQLNoSQL数据库的四大分类键值(Key-Value)存储数据库这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。[3] 举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.列存储数据库。这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.文档型数据库文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。图形(Graph)数据库图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。[2] 如:Neo4J, InfoGrid, Infinite Graph.因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。
通常数据库分为关系型数据库和非关系型数据库,关系型数据库的优势到现在也是无可替代的,比如MySQL、SQL Server、Oracle、DB2、SyBase、Informix、PostgreSQL以及比较小型的Access等等数据库,这些数据库支持复杂的SQL操作和事务机制,适合小量数据读写场景;但是到了大数据时代,人们更多的数据和物联网加入的数据已经超出了关系数据库的承载范围。
大数据时代初期,随着数据请求并发量大不断增大,一般都是采用的集群同步数据的方式处理,就是将数据库分成了很多的小库,每个数据库的数据内容是不变的,都是保存了源数据库的数据副本,通过同步或者异步方式保证数据的一致性,每个库设定特定的读写方式,比如主数据库负责写操作,从数据库是负责读操作,等等根据业务复杂程度以此类推,将业务在物理层面上进行了分离,但是这种方式依旧存在一定的负载压力的问题,企业数据在不断的扩增中,后面就采用分库分表的方式解决,对读写负载进行分离,但是这种实现依旧存在不足,且需要不断进行数据库服务器扩容。
NoSQL数据库大致分为5种类型
1、列族数据库:BigTable、HBase、Cassandra、Amazon SimpleDB、HadoopDB等,下面简单介绍几个
(1)Cassandra:Cassandra是一个列存储数据库,支持跨数据中心的数据复制。它的数据模型提供列索引,log-structured修改,支持反规范化,实体化视图和嵌入超高速缓存。
(2)HBase:Apache Hbase源于Google的Bigtable,是一个开源、分布式、面向列存储的模型。在Hadoop和HDFS之上提供了像Bigtable一样的功能。
(3)Amazon SimpleDB:Amazon SimpleDB是一个非关系型数据存储,它卸下数据库管理的工作。开发者使用Web服务请求存储和查询数据项
(4)Apache Accumulo:Apache Accumulo的有序的、分布式键值数据存储,基于Google的BigTable设计,建立在Apache Hadoop、Zookeeper和Thrift技术之上。
(5)Hypertable:Hypertable是一个开源、可扩展的数据库,模仿Bigtable,支持分片。
(6)Azure Tables:Windows Azure Table Storage Service为要求大量非结构化数据存储的应用提供NoSQL性能。表能够自动扩展到TB级别,能通过REST和Managed API访问。
2、键值数据库:Redis、SimpleDB、Scalaris、Memcached等,下面简单介绍几个
(1)Riak:Riak是一个开源,分布式键值数据库,支持数据复制和容错。(2)Redis:Redis是一个开源的键值存储。支持主从式复制、事务,Pub/Sub、Lua脚本,还支持给Key添加时限。
(3)Dynamo:Dynamo是一个键值分布式数据存储。它直接由亚马逊Dynamo数据库实现;在亚马逊S3产品中使用。
(4)Oracle NoSQL Database:来自Oracle的键值NoSQL数据库。它支持事务ACID(原子性、一致性、持久性和独立性)和JSON。
(5)Oracle NoSQL Database:具备数据备份和分布式键值存储系统。
(6)Voldemort:具备数据备份和分布式键值存储系统。
(7)Aerospike:Aerospike数据库是一个键值存储,支持混合内存架构,通过强一致性和可调一致性保证数据的完整性。
3、文档数据库:MongoDB、CouchDB、Perservere、Terrastore、RavenDB等,下面简单介绍几个
(1)MongoDB:开源、面向文档,也是当下最人气的NoSQL数据库。
(2)CounchDB:Apache CounchDB是一个使用JSON的文档数据库,使用Javascript做MapReduce查询,以及一个使用HTTP的API。
(3)Couchbase:NoSQL文档数据库基于JSON模型。
(4)RavenDB:RavenDB是一个基于.NET语言的面向文档数据库。
(5)MarkLogic:MarkLogic NoSQL数据库用来存储基于XML和以文档为中心的信息,支持灵活的模式。
4、图数据库:Neo4J、InfoGrid、OrientDB、GraphDB,下面简单介绍几个
(1)Neo4j:Neo4j是一个图数据库;支持ACID事务(原子性、独立性、持久性和一致性)。
(2)InfiniteGraph:一个图数据库用来维持和遍历对象间的关系,支持分布式数据存储。
(3)AllegroGraph:AllegroGraph是结合使用了内存和磁盘,提供了高可扩展性,支持SPARQ、RDFS++和Prolog推理。
5、内存数据网格:Hazelcast、Oracle Coherence、Terracotta BigMemorry、GemFire、Infinispan、GridGain、GigaSpaces,下面简单介绍几个
(1)Hazelcast:Hazelcast CE是一个开源数据分布平台,它允许开发者在数据库集群之上共享和分割数据。
(2)Oracle Coherence:Oracle的内存数据网格解决方案提供了常用数据的快速访问能力,一致性支持事务处理能力和数据的动态划分。
(3)Terracotta BigMemory:来自Terracotta的分布式内存管理解决方案。这项产品包括一个Ehcache界面、Terracotta管理控制台和BigMemory-Hadoop连接器。
(4)GemFire:Vmware vFabric GemFire是一个分布式数据管理平台,也是一个分布式的数据网格平台,支持内存数据管理、复制、划分、数据识别路由和连续查询。
(5)Infinispan:Infinispan是一个基于Java的开源键值NoSQL数据存储,和分布式数据节点平台,支持事务,peer-to-peer 及client/server 架构。
(6)GridGain:分布式、面向对象、基于内存、SQL+NoSQL键值数据库。支持ACID事务。
(7)GigaSpaces:GigaSpaces内存数据网格能够充当应用的记录系统,并支持各种各样的高速缓存场景。
nosql数据库的四种类型如下:
1.key-value键值存储数据库:
相关产品: Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached.
主要应用: 内容缓存,处理大量数据的高负载访问,也用于系统日志。
优点:查找速度快,大量操作时性能高。
2.列存储数据库:
相关产品: BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS.
主要应用: 分布式数据的储存与管理。
优点:查找速度快,可扩展性强,容易进行分布式扩展。
缺点:功能相对局限。
3.文档型数据库
相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit.
主要应用: web应用,管理面向文档的数据或者类似的半结构化数据。
优点:数据结构灵活,表结构可变,复杂性低。
缺点:查询效率低,且缺乏统一的查询语言。
4.Graph图形数据库
相关产品: Neo4J、OrientDB、InfoGrid、GraphDB.
主要应用: 复杂,互连接,低结构化的图结构场合, 专注构建关系图谱。
优点: 利用图结构相关算法, 可用于构建复杂的关系图谱。
缺点: 复杂度高。