一、NoSQL数据库的四大种类

一)分类

redis和tair redis和tair区别_sql


图 1 NoSQL 数据库分类

二)不同分类特点对比

分类

例子

应用场景

数据模型

优点

缺点

键值数据库

Redis,Oracle BDB

内容缓存,主要处理大量数据的高访问负载,也有一些日志系统等

Key 指向 Value 的键值对,通常用hash table来实现

查找速度快

数据无结构化,通常只被当作字符串或者二进制数据

列存储数据库

Cassandra, HBase

分布式的文件系统

以列簇式存储,将同一列数据存在一起

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

功能相对局限

文档型数据库

CouchDB, MongoDB

Web应用

Key-Value对应的键值对,Value为结构化数据

数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

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

图形数据库

Neo4J, InfoGrid

社交网络,推荐系统等。专注于构建关系图谱

图结构

利用图结构相关算法。比如最短路径寻址,N度关系查找等

很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。







三)补充
1、KV键值对

  • 新浪:Redis
  • 美团:Redis + Tair
  • 阿里、百度:Redis + Memcached
  • Redis

Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

  • Tair

Tair是一种分布式结构数据存储系统,由一个中心控制节点和一系列的服务节点组成。
Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别与缓存和持久化存储对应。
Tair的功能是get、put、delete以及批量接口。

redis和tair redis和tair区别_数据_02

图2 Tair总体架构图

  • Memcached

Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。

Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。

Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。 本质上,它是一个简洁的key-value存储系统。

一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

2、文档型数据库

  • BSON格式

Bson格式是类似json的一种二进制格式,主要被用作MongoDB数据库中的数据存储和网络传输,专门为MongoDB而开发的。

这种格式不一定比json存储的文件小,其优点是解释快。

  • MongoDB

MongoDB是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档。
MongoDB是一个介于关系型数据库和非关系型数据库中间的产品,是非关系型数据库中功能最丰富,最像关系型数据库的。

  • ConthDB

二、NoSQL和SQL的区别

一)概念

SQL:是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。是用于所有数据库的基本语言,不同数据库之间存在较小的语法改,但基本的SQL语法基本保持不变。
SQL数据库:指关系型数据库,有:SQL Server、Oracle、MySQL(开源)…
NoSQL数据库:泛指非关系型数据库或分布式数据库,有:Redis、MongoDB、ConthDB…

二)区别

redis和tair redis和tair区别_nosql_03


图3 SQL数据库和NoSQL数据库对比

1、语言

SQL数据库是基于表的,它的定义和操作是基于数据的结构化查询语言(SQL)。这种语言非常强大,适用于复杂的查询,但要求所有数据都必须遵循相同的结构。这可能需要大量的前期准备,意味着结构的变化容易对整个系统造成破坏。

NoSQL数据库具有非结构化数据的动态模式,没有固定查询语言,是通过API、SDK来实现。数据以多种方式存储,有面向文档,面向列,基于图形或组织为KeyValue存储。可以在没有首先定义结构的情况下创建文档,语法因数据库而异,可以随时添加字段。

2、可伸缩性

SQL数据库都是可垂直扩展的。
NoSQL数据库可以横向扩展,更适用大数据存储。

3、遵循的属性

SQL数据库遵循ACID属性(atomicity原子性, consistency一致性, isolation隔离性和durability持久性)
NoSQL数据库遵循Brewers CAP定理(Consistency一致性,Availability可用性和Partitiontolerance分区容差)

4、适用场景

目前许多大型互联网项目都会选用MySQL(或任何关系型数据库) + NoSQL的组合方案。

  • 适合使用 SQL 开发的项目:

适合存储结构化数据,如用户的帐号、地址:
1)数据库模式,结构可以预先规定的,或者可以相对固定的项目
2) 要求数据事务性、一致性
3) 这些数据的规模、增长的速度通常是可以预期的

  • 适合使用 NoSQL 开发的项目:

适合存储非结构化数据,如文章、评论:
1)不相关,不确定和逐步发展的数据需求
2) 速度和可扩展性至关重要的
3)这些数据通常用于模糊处理,如全文搜索、机器学习