关系数据库大行其道, 提供丰富灵活的查询功能. 同时吸纳对象数据库和XML数据库的优点. 近些年,关系数据库也备受质疑,并演化为NoSQL运动.

NoSQL首先是在1998年提出用于指代忽略SQL的关系数据库. 2009年,这一术语又被重新拿出来指代非关系数据库. 而使其为大家所熟知的则是Rackspace的Eric Evans.

计算机世界杂志曾在2009年的一篇文章中说: NoSQLer们正抛弃行动迟缓而昂贵的关系数据库并转投高效而价格低廉的非关系数据库.
计算机世界杂志文章总结开发和使用非关系数据库的原因为:
A. 避免不必要的复杂性, 某些应用并不需要关系数据库提供的众多特性及强数据一致性.
B. 高吞吐量
C. 水平扩展并运行在通用硬件上
D. 避免昂贵的对象关系映射, 指key-value存储
C. 构建数据库集群的复杂度和成本
D. 牺牲可靠性提升性能
E. 'one size fits all'的数据库设计思想在以前和现在都是错误的
F. Centrelized数据库模型设计之初没有考虑分布式和分区
G. 编程语言和设计架构的演化
H. 云计算的需求
I.  RDBMS加内存缓存的模式对比构建之初即考虑扩展性的系统
J. 昨天的需求对比今天的需求

理论:
关系数据库已经有30-40年的历史, 其并没有和硬件的发展同步, 如CPU速度的提升, 相反,硬盘和内存之间的速度则没有同步的提升,关系数据库的设计理念也没有根本变化.

A. 面向硬盘的存储及索引结构
B. 利用多线程解决阻塞问题
C. 基于锁的并发控制机制
D. 基于log的恢复机制

关系数据库设计的初衷是应用于商业数据处理, 但在新的应用领域则力不从心,如
A. 文本
B. 数据仓库
C. 流媒体处理
D. 科学计算

即使在商业数据处理上,也显露出不足之处.
另外,数据库的操作者已不仅仅是人.

设计考虑
A. 主存, 内存越来越大,越来越便宜. 能在内存处理的问题就在内存处理. 而关系数据库仍然固守面向硬盘的思路不变.尽管有些关系数据库采用在内存中处理数据的方式, 但其本质上基于硬盘日志的恢复机制以及锁机制限制了关系数据库性能提升的空间.
B. 多线程及资源控制, 数据操作无非是读写操作,如果都在内存操作, 没必要多线程. SMP呢?
C. 网格计算, 从共享内存,共享硬盘到什么也不共享. 数据库发展也应体现这一趋势.
D. 高可靠性,高可靠性和异地容灾应是关系数据库的基本功能.要保持多个备份数据的一致性;以share nothing为设计的基础,而不是求助于SMP架构;通过P2P方式实现share nothing. 不同服务器实现负载均担, 各服务器间实现数据备份. Log恢复没必要.
E. 节省人力,关系数据库设计之初, 服务器比人贵; 而现在则相反, 易于配置, 或者不需管理的系统更受欢迎.
posted on 2013-02-17 19:56  #hanhui  阅读(253)  评论(0编辑  收藏  举报