文章目录
  1. 1. NoSQL定义
  2. 2. ACID&BASE思想
    1. 2.1. Base:
  3. 3. NoSQL数据库的特点
  4. 4. 目前的NoSQL数据库模型
    1. 4.1. Key-Value
    2. 4.2. Column-Oriented
    3. 4.3. Document-Oriented
    4. 4.4. Graph-Oriented
  5. 5. 大数据的特征
    1. 5.1. 大数据时代下的系统需求
  6. 6. NoSQL的优势
    1. 6.1. 易扩展
    2. 6.2. 灵活的数据模型
    3. 6.3. 高可用
    4. 6.4. 大数据量,高性能
  7. 7. 某些与NoSQL匹配的需求如下:
    1. 7.1. 快速应用开发
    2. 7.2. 可伸缩性
    3. 7.3. 运行可靠性

NoSQL定义

NoSQL(Not only SQL),泛指非关系型数据库。nosql-database.org对NoSQL有一个较为全面的解释,指出NoSQL的特点:非关系、分布式、开源、水平扩展、schema-free、easy replication support、simple API、最终一致性(不支持ACID)、支持海量数据(Huge Data)

ACID&BASE思想

ACID模型侧重高一致性+数据可靠性,牺牲可用性。

Base:

  • Basically Available(基本可用):支持分区失败(e.g.sharding 碎片划分数据库)
  • Soft state(软状态):状态可以有一段时间不同步,异步
  • Eventually consistent(最终一致):最终数据是一致的就可以了,而不是时时高一致。

    BASE思想反ACID,完全不同与ACID模型,牺牲高一致性,获得可用性和可靠性。

NoSQL数据库的特点

NoSQL需要支持良好的扩展性,当系统容量不足或负载过重时,可随时添加节点而不影响现有业务,系统自动完成数据均衡。而集群中机器之间需要通讯,以了解彼此的状态信息。通常有两种架构:

  1. Master/Slave
    类BigTable的系统均采用Master/Slave架构,Master负责整个集群的命名空间管理、集群状态监控、负载均衡等,Slave来负责存储实际的数据,并定时的向Master报告自己的状态信息

  2. P2P
    类Dynamo的系统均采用P2P架构,与Master/Slave不同,它是完全去中心化,不存在Master,各个节点是对等的关系,如gossip

目前的NoSQL数据库模型

  • Key-Value(键值对)、
  • Column-Oriented(列式)、
  • Document-Oriented(文档型)、
  • Graph-Oriented(图形)。

Key-Value

数据模型:简单的键值对

典型应用: Cache

优势: 简单、读写速度快,高读写的简单存储

劣势: 存储数据缺少结构化,只能存储Key-Value对复杂的结构需要上层应用处理

Column-Oriented

数据模型:BigTable式表格,稀疏矩阵

典型应用: 海量数据存储与分析

优势: 查找列速度快,可扩展性强,更容易进行分布式扩展

劣势: 功能相对局限,对于跨表的join性能不高

Document-Oriented

数据模型:灵感来源于Lotus Notes,JSON-like

典型应用: Web应用

优势: 数据结构要求不严格,灵活

劣势: 查询性能不高,而且缺乏统一的查询语法

Graph-Oriented

数据模型:图模型

典型应用: 基于网络的应用,地理位置信息(用作GIS)、社交网络(SNS)、网络拓扑等

优势: 可以利用图结构相关算法

劣势: 需要对整个图做计算才能得出结果,不容易做分布式的集群方案

大数据的特征

3V——Volume(海量)、Variety(多样)、Velocity(实时)

海量——数据量巨大,对TB、PB数据级的处理, 已经成为基本配置。

多样——处理多样性的数据类型,结构化数据和非结构化数据,能处理Web数据,能处理语音数据甚至是图像、视频数据。

实时——在客户每次浏览页面,每次下订单的过程中都存在,都会需要对用户进行实时的推荐,决策已经变得实时

大数据时代下的系统需求

High performance –高并发读写的需求
高并发、实时动态获取和更新数据

Huge Storage –海量数据的高效率存储和访问的需求
类似SNS网站,海量用户信息的高效率实时存储和查询

High Scalability && High Availability –高可扩展性和高可用性的需求
需要拥有快速横向扩展能力、提供7*24小时不间断服务

NoSQL的优势

易扩展

NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。甚至有多种NoSQL之间的整合。

灵活的数据模型

NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。

高可用

NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。

大数据量,高性能

NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。

某些与NoSQL匹配的需求如下:


快速应用开发

  • 变化的市场需求
  • 变化的数据需求

可伸缩性

  • 未知的用户需求
  • 访问、添加和更新数据使吞吐量持续增长而带来的需求一致的性能
  • 低响应时间,以便支持更好地用户体验
  • 高吞吐量,以便处理快速地增长

    运行可靠性

  • 高可用性,能够优雅地处理失效并尽量减小对应用的影响
  • 内置监控API,便于运行时维护
文章目录
  1. 1. NoSQL定义
  2. 2. ACID&BASE思想
    1. 2.1. Base:
  3. 3. NoSQL数据库的特点
  4. 4. 目前的NoSQL数据库模型
    1. 4.1. Key-Value
    2. 4.2. Column-Oriented
    3. 4.3. Document-Oriented
    4. 4.4. Graph-Oriented
  5. 5. 大数据的特征
    1. 5.1. 大数据时代下的系统需求
  6. 6. NoSQL的优势
    1. 6.1. 易扩展
    2. 6.2. 灵活的数据模型
    3. 6.3. 高可用
    4. 6.4. 大数据量,高性能
  7. 7. 某些与NoSQL匹配的需求如下:
    1. 7.1. 快速应用开发
    2. 7.2. 可伸缩性
    3. 7.3. 运行可靠性