• NoSQL 数据库


    什么是NoSQL?

    NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

    NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。

    NoSQL 数据库分类

    类型 部分代表 特点
    列存储

    Hbase

    Cassandra

    Hypertable

    顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。

    文档存储

    MongoDB

    CouchDB

    文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。

    key-value存储

    Tokyo Cabinet / Tyrant

    Berkeley DB

    MemcacheDB

    Redis

    可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)

    图存储

    Neo4J

    FlockDB

    图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。

    对象存储

    db4o

    Versant

    通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。

    xml数据库

    Berkeley DB XML

    BaseX

    高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

     

    键值(Key-Value)存储数据库

    这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果数据库管理员(DBA)只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。

    列存储数据库

    这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

    文档型数据库

    文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

    图形(Graph)数据库

    图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。
     

    不同分类特点对比

    分类
    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度关系查找等
    很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

    REF

    https://www.runoob.com/mongodb/nosql.html

    https://baike.baidu.com/item/NoSQL/8828247?fr=aladdin

     

  • 相关阅读:
    Eclipse调试常用技巧
    12个小技巧,让你高效使用Eclipse
    Java程序生成exe可执行文件详细教程(图文说明)
    手机打开PDF文档中文英文支持(乱码问题)解决攻略
    Java修饰符public,private,protected及默认的区别
    Eclipse 各种小图标的含义
    continue break return的区别
    Android开发快速入门(环境配置、Android Studio安装)
    Struts2中的Unable to load configuration错误的分析与解决方法
    认识与入门 Markdown,Markdown教程
  • 原文地址:https://www.cnblogs.com/emanlee/p/15170107.html
Copyright © 2020-2023  润新知