RDBMS

关系型数据库。

优点:

  • 事务型,遵循ACID
  • 数据的规范性和结构性
  • 数据处理对应用透明
  • 对表关联查询
  • 规范的SQL标准
  • 多年企业实践,非常成熟

劣势:

  • 水平扩展困难
  • 无法满足非结构化数据的处理

关系型数据库可以分为:

  • 传统的行式数据库
  • 列式数据库

传统行式数据库:

  • 数据是按行存储的
  • 没有索引的查询使用大量I/O
  • 建立索引的和物化视图需要花费大量时间和资源
  • 面对查询的需求,数据库必须被大量膨胀才能满足性能要求

列式数据库(例如sybase iq数据库):(适合OLAP系统)

  • 数据按列存储,每一列单独存放
  • 数据即是索引
  • 只访问查询涉及的列,大量降低系统IO
  • 每一列由一个线索来处理,查询的并发处理
  • 数据类型一致,数据特征相似,高效压缩

NOSql

NOSql(Not Only Sql),例如:Redis、MongoDB、Neo4j等

NOSql数据库分类:

  • Key Value型(例如Redis)
  • Column型(例如Hbase)
  • Document型(例如MongoDB)
  • Graph型(例如Neo4j)

k-v类型:

说明
应用场景 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等
数据模型 key指向value的键值对,通常用hash table实现
强项 查找速度快
弱项 数据无结构化,通常只能被当做字符串或二进制数据

列式存储类型:

说明
应用场景 分布式文件系统
数据模型 以列簇式存储,将同一列数据存在一起
强项 查找速度快,可扩展性强,更容易进行分布式扩展
弱项 功能相对局限

文档类型:

说明
应用场景 Web应用(与k-v类似,value是结构化的,不同的是数据库能够了解value的内容)
数据模型 k-v对应的键值对,value为结构化数据
强项 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
弱项 查询性能不高,而且缺乏统一的查询语法

图结构类型:

说明
应用场景 社交网络,推荐系统等。专注于构建关系图谱
数据模型 图结构
强项 利用图结构相关算法,比如最短路径寻址,N度关系查找等
弱项 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案

Hadoop

Hadoop:

  • 发源于Google
  • 分布式处理的软件框架
  • 用于海量数据的处理
  • 可靠、高效、可伸缩的数据处理平台
  • Hadoop != NOSql

RDBMS和NOSql对比

RDBMS NOSql
ACID第一,严格保证 Throughout第一,弱/松ACID
Schema-centric,严格的结构化数据模型 Schema-free,灵活的非结构化/半结构化数据模型
复杂的数据关系、主外键、多表join等 简单的数据关系,一般不提供复杂的join
天生的Scale-up(高性能服务器)及后天培养的Scale-out(如Rac) 天生的分布式架构,优秀的横向扩展能力
基于ORM的SQL语句,映射、解析、执行成本较高 NO-Sql一般提供各类高级语言API,简单的读/写函数