《解读NoSQL》笔记

文章目录

  • 第一部分
    • 第2章 保持组件简单以促进重用。
      • 1 复用简单功能以实现新功能。
      • 2 将应用分层以简化设计
      • 3 策略地使用RAM,SSD和磁盘提升性能
      • 4 非RDBMS的事务控制Base
      • 5 通过数据库分片获得水平扩展能力
      • 6 基于Brewer的CAP定理进行权衡
      • 7 用正规流程评估系统是非常重要的
  • 第2部分 数据库模式
    • 第3章 基础数据构架模式
      • nosql的意思是不只是SQL
      • RDBMS的行存储模式
      • OLTP与OLAP
    • 第4章 NoSQL数据构架模式
      • 键值存储 redis
      • 图存储 neo4j
      • 列族存储 google的 bigtable
      • 文档存储 MongoDB
    • 第5章 原生XML数据库
  • 第三部分 NoSQL解决方案
    • 第6章 用NoSQL管理大数据
      • 大数据问题会持续存在,而且越来越大。
    • 第7章 用NoSQL搜索获取信息
    • 第8章 用NoSQL构建高可用的解决方案
      • 负载和压力测试需要时间和资源。
      • 为了成功,需要有受过正确培训并使用过相同工具的有经验的员工。
    • 第9章 用NoSQL提升敏捷性
  • 第四部分 高级主题
    • 第10章 NoSQL与函数式编程
      • 函数式编程
    • 第11章 安全:保护NoSQL系统中的数据
    • 第12章 选择合适的NoSQL解决方案

第一部分

第2章 保持组件简单以促进重用。

简单的接口和清晰的定义。

1 复用简单功能以实现新功能。

e.g.
unix管道实现单词统计次数

cat ch*.xml | grep ' | wc -l

2 将应用分层以简化设计

采用分层的思想,当必须做出一些改动的时,可以选择新增或者修改某一个特定层次,而不是去重写它。
重点,将功能分层的利弊进行衡量

集群:由一系列称之为处理单元的节点构成。

3 策略地使用RAM,SSD和磁盘提升性能

RAM最快,有效利用RAM。

4 非RDBMS的事务控制Base

《解读NoSQL》笔记_第1张图片

5 通过数据库分片获得水平扩展能力

数据库自动分片:将数据库划分为一些块,这些块称之为数据库分片,分布在分布式服务器上,作为持续存储数据和最小化宕机时间的手段。

分区容错性:当存储节点或者网络出现故障时仍维持数据库运行。

6 基于Brewer的CAP定理进行权衡

《解读NoSQL》笔记_第2张图片
一致性:写操作之后的读操作,必须返回该值。
可用性:只要收到用户的请求,服务器就必须给出回应
分区容错:当存储节点或者网络出现故障时仍维持数据库运行。
这三个指标不可能同时做到。(Eric Brewer)

7 用正规流程评估系统是非常重要的

有助于识别哪些特性对组织最重要,需要作出哪些妥协。

第2部分 数据库模式

第3章 基础数据构架模式

nosql的意思是不只是SQL

构架模式能够对反复出现的高层数据存储模式准确命名。描述当前的问题,列出建议方案的优缺点。
数据库构架模式:识别数据如何存储在系统中
数据库底层设计模式:识别如何与数据进行交互
模式:通常指遇到一份新问题,能够辨别出以前遇到过的结构。

RDBMS的行存储模式

行是数据存储的原子单位。必须满足每一列的要求。
列存储优先考虑聚合报表的操作速度,而不是数据插入的速度。

OLTP与OLAP

联机事务处理(OLTP):处理实时事务
联机分析处理(OLAP):分析用到的数据不经常变化,而是一次写入,多次读取。

第4章 NoSQL数据构架模式

模式存在是因为它能被其它的模式支持。

键值存储 redis

按照键建立索引,能够快速返回,不用关心数据类型。

图存储 neo4j

由一连串的节点和关系组成。
善于存储关联关系复杂的问题。【如社交关系】

列族存储 google的 bigtable

重要。可以进行扩展来管理海量数据。
列存储使用行和列的标识作为通用的键来查找数据。

文档存储 MongoDB

文档中的一切事物都会被自动建好索引。

第5章 原生XML数据库

第三部分 NoSQL解决方案

第6章 用NoSQL管理大数据

大数据问题会持续存在,而且越来越大。

大数据问题是指 任何已庞大到无法使用单处理器管理的商业问题。

第7章 用NoSQL搜索获取信息

搜索:为已知数据的部分信息在NoSQL数据库查找期望数据的行为。

第8章 用NoSQL构建高可用的解决方案

服务无中断地重复运行的系统。

负载和压力测试需要时间和资源。

为了成功,需要有受过正确培训并使用过相同工具的有经验的员工。

第9章 用NoSQL提升敏捷性

NoSQL的商业驱动力是企业对优雅地完成横向拓展的需求。
敏捷性是指快速实现以下目标的能力:

  • 构建新应用
  • 扩展应用快速满足新阶段的需求
  • 在不重写代码的前提下变更已有应用
  • 允许非编程人员创建和管理业务逻辑

第四部分 高级主题

第10章 NoSQL与函数式编程

世界是并发的。所有的事物都不共享数据。所有事物都通过消息沟通。所有事物都会失效。

函数式编程

约束:转化过程输出只依赖函数的输入。过程中不受干扰。
函数式编程是没有副作用的并行转化。

第11章 安全:保护NoSQL系统中的数据

第12章 选择合适的NoSQL解决方案

构架利弊分析:
客观地选择最契合业务问题的数据库的过程。

开发人员的目标是写出易于开发和维护的代码。

你可能感兴趣的:(站在巨人的肩膀上)