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并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:

不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。

无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。

弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。

分区:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。

异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。

BASE:相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。

NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其他的NoSQL。

 

适用场景

NoSQL数据库在以下的这几种情况下比较适用:

1、数据模型比较简单;

2、需要灵活性更强的IT系统;

3、对数据库性能要求较高;

4、不需要高度的数据一致性;

5、对于给定key,比较容易映射复杂值的环境。

发展现状

计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状。Google的 BigTable 和Amazon 的Dynamo使用的就是NoSQL型数据库。

NoSQL项目的名字上看不出什么相同之处,但是,它们通常在某些方面相同:它们可以处理超大量的数据。

这场革命仍然需要等待。的确,NoSQL对大型企业来说还不是主流,但是,一两年之后很可能就会变个样子。在NoSQL运动的最新一次聚会中,来自世界各地的150人挤满了CBS Interactive的一间会议室。分享他们如何推翻缓慢而昂贵的关系数据库的暴政的经验,怎样使用更有效和更便宜的方法来管理数据。

“关系型数据库给你强加了太多东西。它们要你强行修改对象数据,以满足RDBMS (relational database management system,关系型数据库管理系统)的需要,”在NoSQL拥护者们看来,基于NoSQL的替代方案“只是给你所需要的”。

水平扩展性(horizontal scalability)指能够连接多个软硬件的特性,这样可以将多个服务器从逻辑上看成一个实体。

挑战

尽管大多数NoSQL数据存储系统都已被部署于实际应用中,但归纳其研究现状,还有许多挑战性问题。

已有key-value数据库产品大多是面向特定应用自治构建的,缺乏通用性;

已有产品支持的功能有限(不支持事务特性),导致其应用具有一定的局限性;

已有一些研究成果和改进的NoSQL数据存储系统,但它们都是针对不同应用需求而提出的相应解决方案,如支持组内事务特性、弹性事务等,很少从全局考虑系统的通用性,也没有形成系列化的研究成果;

缺乏类似关系数据库所具有的强有力的理论(如armstrong公理系统)、技术(如成熟的基于启发式的优化策略、两段封锁协议等)、标准规范(如SQL语言)的支持。

目前,HBase数据库是安全特性最完善的NoSQL数据库产品之一,而其他的NoSQL数据库多数没有提供内建的安全机制,但随着NoSQL的发展,越来越多的人开始意识到安全的重要,部分NoSQL产品逐渐开始提供一些安全方面的支持。

随着云计算、互联网等技术的发展,大数据广泛存在,同时也呈现出了许多云环境下的新型应用,如社交网络网、移动服务、协作编辑等。这些新型应用对海量数据管理或称云数据管理系统也提出了新的需求,如事务的支持、系统的弹性等。同时云计算时代海量数据管理系统的设计目标为可扩展性、弹性、容错性、自管理性和“强一致性”。目前,已有系统通过支持可随意增减节点来满足可扩展性;通过副本策略保证系统的容错性;基于监测的状态消息协调实现系统的自管理性。“弹性”的目标是满足Pay-per-use 模型,以提高系统资源的利用率。该特性是已有典型NoSQL数据库系统所不完善的,但却是云系统应具有的典型特点;“强一致性”主要是新应用的需求。

三、NoSQL数据库的四大分类的分析相关推荐

  1. Nosql数据库的四大分类

    1. KV键值:典型介绍 新浪:BerkeleyDB +redis 美团:redis+tair 阿里.百度:memcache+redis 2. 文档存储数据库(bson格式较多):典型介绍 MongD ...

  2. redis学习-NoSQL数据库的四大分类

    KV键值对 新浪:BerkeleyDB + Redis 美团:Redis + tair 阿里.百度:memcache + Redis 文档型数据库(bson格式比较多) CouchDB MongoDB ...

  3. NoSQL数据库的四大家族

    NoSQL,泛指非关系型的数据库,全称Not Only SQL,意即"不仅仅是SQL". NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难 ...

  4. 为什么会出现NoSQL数据库

    为什么会出现NoSQL数据库 一.总结 一句话总结:sql不支持分布式且且有性能瓶颈且不支持分布式,不同NoSQL适合不同的场景 1."不同的NoSQL数据库只适合不同的场景"这句 ...

  5. NoSQL数据库入门 二

    一.NoSQL数据库的四大分类   1.KV键值: NoSQL存储指非关系型数据库,它以键值对存储,结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结 ...

  6. NoSQL概述、NoSQL数据库的分类、主流产品及特点

    什么是NoSQL NoSQL(NoSQL = Not Only SQL),即"不仅仅是SQL",是一项全新的数据库理念,泛指非关系型数据库. 为什么需要NoSQL 随着互联网web ...

  7. 大数据技术原理与应用之【NoSQL数据库】习题

    1.如何准确理解NoSQL的含义? NoSQL是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的一类统称,它采用的数据模型并非传统关系数据库的关系模型,而是类似键/值.列族.文档等非 ...

  8. 【数据库】Nosql数据库的种类

    NoSQL数据库的四大家族 1.键值(Key-Value)存储数据库 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据.Key/value模型对于IT系统来说的优势在 ...

  9. 数据库分类与四大类NoSQL数据库

    0. 数据库分类 关系型数据库:Oracle.MySQL 非关系型数据库(NoSQL) Key-Value: 内存KV:Redis,Memcached 持久化KV:Redis,LevelDB Colu ...

最新文章

  1. 耗时3天,上亿数据如何做到秒级查询?
  2. Oracle truncate、 delete、 drop区别
  3. 有时间看下这个,分布式缓存,提高并发的
  4. 一个有趣的观察:关于内向和外向
  5. python人工智能——机器学习——数据的划分和介绍
  6. 重载练习3_实现重载的println方法
  7. 通过iscsi配置在aix上挂载存储设备
  8. java中可重入锁的学习总结
  9. 我们注意到您的计算机目前处于离线状态_你为什么会选择用反渗透设备离线清洗设备?...
  10. 笔试 - 高德软件有限公司python问题 和 答案
  11. [AD19] 使用元器件向导为元件绘制PCB封装
  12. 如何将计算机网络作为热点,教你如何三步让笔记本电脑做wifi热点??
  13. C#使用NOPI导入Excel
  14. Matlab 线性拟合 非线性拟合
  15. 开源软件之lftp的使用
  16. autojs图片加水印
  17. 小记 xian80 坐标转换 wgs84
  18. Spring Boot制作个人博客-标签页
  19. 没有安装sql数据库如何用vs打开mdf数据库文件
  20. 3ds Max下载_3ds Max 2023上线了哪些新功能?

热门文章

  1. 如何以sys用户登录oracle,在Oracle 10g 中如何以sys的身份登录isqlplus页面
  2. java一维数组插入元素_Java 数组 之 一维数组 追加 元素
  3. php文本文件操作,PHP文本操作类
  4. mysql status改变_mysql 配置详解mysql SHOW STATUS 详解
  5. php 多进程 返回值,php多进程
  6. qq分享 设备未授权报错解决方案_QQ 注销功能终于上线,我体验了一下!
  7. mysql 中遍历查询_mysql中循环查询
  8. cad文本改宋体字型lisp_CAD绘图员必须掌握的15个高能技巧,别人3天工作量你半天搞定!...
  9. 登录mysql报错2059,navicat连接mysql报错2059如何解决
  10. 线下实操:搭建微服务天气预报应用!