NoSQL数据库

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

1.NOSQL数据库的分类

        当前出现了很多不同类型、面向不同应用的No SQL产品,按照所使用的数据结构的类型,一般可以将NoSQL数据库分为4种类型列式存储数据库、键值对存储数据库、文档型数据库、图数据库

1.1.列式存储数据库

         行式数据库即传统的关系型数据库,数据按记录存储,每一条记录的所有属性存储在一行。列式数据库是按数据库记录的列来组织和存储数据的,数据库中每个表由一组页链的集合组成。每条页链对应表中的一个存储列。

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

1.2.键值对存储数据库

         键值存储的典型数据结构一般为数组链表:先通过Hash算法得出Hashcode,找到数组的某一个位置,然后插入链表。

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

1.3.文档型数据库

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

1.4.图数据库

        图行结构的数据库同其他采用行列以及刚性结构的SQL数据库不同,它使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要指定数据模型。许多NOSQL数据库都有REST式的数据接口或者查询API。适合存储通过图进行建模的数据,例如社交网络数据,生物信息网络数据,交通网络数据等。常见的产品有Neo4J、InfoGrid、Infinite Graph等。

2.NoSQL数据库的一些共同特征 

        目前业界对于NoSQL并没有一个明确的范围和定义,但是它们普遍存在下面一些共同特征易扩展;大数据量,高性能;灵活的数据模型;高可用

  •         易扩展:去掉了关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。
  •         大数据量,高性能:NoSQL数据库都具有非常高的读写性能,尤其在大数据量下。这得益于它的无关系性,数据库的结构简单。
  •         灵活的数据模型:NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
  •         高可用:NoSQL在不太影响性能的情况下,就可以方便地实现高可用的架构,有些产品通过复制模型也能实现高可用。

3.体系框架

        NoSQL整体框架分为4层,由下至上分为数据持久层(DataPersistence)、数据分布层(Data Distribution Model)、数据逻辑模型层(Data Logical Model)和接口层(Interface),层次之间相辅相成,协调工作。 

        (1)数据持久层定义了数据的存储形式,主要包括基于内存、硬盘、内存和硬盘接口、定制可插拔4种形式。

        (2)数据分布层定义了数据是如何分布的,相对于关系型数据库,NoSQL可选的机制比较多,主要有3种形式:一是CAP支持,可用于水平扩展;二是多数据中心支持,可以保证在横跨多数据中心时也能够平稳运行;三是动态部署支持,可以在运行着的集群中动态地添加或删除结点。

        (3)数据逻辑层表述了数据的逻辑表现形式。

        (4)接口层为上层应用提供了方便的数据调用接口,提供的选择远多于关系型数据库。接口层提供了5种选择:Rest、Thrift、Map/Reduce、Get/Put、特定语言API,使得应用程序和数据库的交互更加方便。

相关推荐

  1. NoSQL数据库

    2024-04-02 22:16:04       37 阅读
  2. NoSQL数据库

    2024-04-02 22:16:04       17 阅读
  3. 【架构-15】NoSQL数据库

    2024-04-02 22:16:04       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 22:16:04       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 22:16:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 22:16:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 22:16:04       18 阅读

热门阅读

  1. docker + miniconda + python 环境安装与迁移(简化版)

    2024-04-02 22:16:04       16 阅读
  2. 22 多态

    22 多态

    2024-04-02 22:16:04      12 阅读
  3. 算法——逆波兰式

    2024-04-02 22:16:04       13 阅读
  4. 超越传统:探讨ChatGPT在学术论文写作中的突破

    2024-04-02 22:16:04       13 阅读
  5. 【NOIP2004提高】津津的零花钱

    2024-04-02 22:16:04       13 阅读
  6. 在html页面中引入的element-plusMessage 消息提示用法

    2024-04-02 22:16:04       15 阅读
  7. 外观模式详解:简化复杂系统的“门面”担当

    2024-04-02 22:16:04       15 阅读
  8. Memcached 教程之 Memcached set 命令(五)

    2024-04-02 22:16:04       12 阅读