第一章 为什么使用NoSQL
1.1 关系型数据库的价值
1.1.1 获取持久化数据
1.1.2 并发
通过”事务“ 来控制,出错有“回滚”机制。
1.1.3 集成
共享数据库集成,多个应用程序将数据保存在同一个数据库中(这种机制必须保证有一个共享的来操作数据库的模块,这样才可以控制并发访问)。
1.1.4 近乎标准的模型
不同厂商的SQL方言相似,“事务”的操作方式几乎一样。
1.2 阻抗失衡
关系模型和内存中的数据结构之间的差异。
关系数据库的问题:
关系元组中的值必须很简单,不能包含嵌套或列表。内存数据结构无此限制。
hibernate和MyBatis实现了 对象-关系映射(OR-mapping)
1.3 “应用程序数据库” 与 “集成数据库” 略
1.4 蜂拥而来的集群
集群下,关系型数据库可以分片存储,应用程序必须控制所有分片,分片对应用不透明;并且查询/参照完整性和事务、一致性控制都无法以分片的形式执行。
NoSOL 更适合集群。
1.5 NoSQL登场
关系型数据库的ACID事务保证一致性,这个与集群环境冲突,NoSQL数据库为处理并发和分布问题提供了众多选项。
NoSQL不需要使用模式,这样不用事先修改结构定义,就可自由添加字段。在处理不规则数据和自定义字段时非常有用
1.6 要点
- 关系型数据库受到阻抗失衡困扰。
- 数据库领域迁移趋势:多个应用使用通用同一个数据库 -》 各个应用使用自己的数据库,彼此提供服务。
- 集群上运行大量数据,而关系型数据库不能在集群中高效运行。
- NoSQL共同特征: 不用关系模型/集群中运行良好/开源/适合互联网/无模式