数据库相关概念梳理(walker)

Normalization/Denormalization

本节内容主要摘自: 阮一鸣《 Elasticsearch核心技术与实战》第 49 课·对象及Nested对象

范式化设计

Normalization 概念

设计关系数据库时,听从不一样的规范要求,设计出合理的关系型数据库,这些不一样的规范要求被称为不一样的范式,各类范式呈递次规范,越高的范式数据库冗余越小。html

Normalization 优势

  • 节省存储空间,并减小不必要的更新

Normalization 缺点

  • 查询缓慢:⼀个彻底范式化设计的数据库会常常⾯面临“查询缓慢”的问题,由于数据库越范式化,就须要 Join 越多的表

几种范式

  • 第一范式:1NF(First Normal Form)

消除非主属性对键的部分函数依赖算法

  • 第二范式:2NF(Second Normal Form)

消除非主要属性对键的传递函数依赖数据库

  • 第三范式:3NF(Third Normal Form)

消除主属性对键的传递函数依赖缓存

  • BC范式:BCNF(Boyce-Codd Normal Form)

主属性不依赖于主属性网络

反范式化设计

Denormalization 概念

数据 “Flattening”,不使用关联关系,⽽而是在文档中保存冗余的数据拷贝数据结构

Denormalization 优势

  • 读取性能好,查询快,无需 join 操做

Denormalization 缺点

  • 浪费空间
  • 一条数据的改动,可能会引发不少数据的更新

小结

  • 关系型数据库通常优先考虑范式化设计
  • 非关系型数据库通常优先考虑反范式化设计
  • 范式化设计节省了存储空间,可是存储空间却愈来愈便宜;范式化简化了更新,可是数据“读”取操做可能更多
  • 反范式化设计数据库会经过压缩尽可能减小空间占用,如 Elasticsearch 经过压缩 _source 字段,减小磁盘空间的开销

数据库事务

本节内容主要摘自: 理解数据库的事务,ACID,CAP和一致性

事务的概念

数据库事务(Database Transaction,简称“事务”)是数据库管理系统执行过程当中的一个逻辑单位,由一个有限的数据库操做序列构成。这个过程当中的全部操做要么都成功,要么都不成功。并发

ACID

ACID 是事务的四个特性,指的是atomicity,原子性;consistency,一致性;isolation,隔离性;durability,持久性。less

原子性(Atomicity)

指全部在事务中的操做要么都成功,要么都不成功,全部的操做都不可分割,没有中间状态。一旦某一步执行失败,就会所有回滚到初始状态。分布式

一致性(Consistency)

指的是逻辑上的一致性,即全部操做是符合现实当中的指望的。具体参考下一节函数

隔离性(Isolation)

即不一样事务之间的相互影响和隔离的程度。好比,不一样的隔离级别,事务的并发程度也不一样,最强的隔离状态是全部的事务都是串行化的(serializable)(即一个事务完成以后才能进行下一个事务),这样并发性也会降到最低,在保证了强一致性的状况下,性能也会受很大影响,因此在实际工程当中,每每会折中一下。

持久性(Durability)

能够简单地理解为事务执行完毕后数据不可逆并持久化存储于存储系统当中

CAP

CAP 理论主要是针对分布式存储系统的,C 是指 Consistency 一致性,A 是指 Availability 可用性,P 是指Partition tolerance 分区容忍性。CAP 定理认为分布式系统中这三个特性最多只能同时知足两个特性。
CAP

一致性(Consistency)

指在分布式系统中的全部数据备份,在同一时刻是否一样的值。(等同于全部节点访问同一份最新的数据副本)

可用性(Availability)

在集群中一部分节点故障后,集群总体是否还能响应客户端的读写请求。(对数据更新具有高可用性)

分区容忍性(Partition tolerance)

即当节点之间没法正常通讯时,就产生了分区,而分区产生后,依然可以保证服务可用,那么咱们就说系统是分区容忍的。显然若是节点越多,且备份越多,分区容忍度就越高(由于即使是其中一个或多个节点挂了,仍然有其它节点和备份可用)。

理解一致性(此 C 非 彼 C)

实际上咱们一般说的数据库事务的一致性和分布式系统的一致性并非一个概念。这里能够区分红“内部一致性”和“外部一致性”。“内部一致性”搞数据库的人不多这么说,通常就直接说一致性,更准确的说是“Consistency in ACID”(“事务 ACID 属性中的一致性”);“外部一致性”是针对分布式系统而言的,分布式领域说起的 Consistency 表示系统的正确性模型,著名的也是臭名昭著的 CAP 理论中的 C 就是这个范畴的。这主要是因为分布式系统写入和读取均可能不在同一台机器上,而这必然会有一段时间致使不一样机器上所存的数据不一致的状况,这就是所谓的“不一致时间窗口”。

NoSQL 的四大类型

本节摘自: NoSQL的四大类型

键值数据库

  • 相关产品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
  • 应用:内容缓存
  • 优势:扩展性好、灵活性好、大量写操做时性能高
  • 缺点:没法存储结构化信息、条件查询效率较低
  • 使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)

列族数据库

  • 相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS
  • 应用:分布式数据存储与管理
  • 优势:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
  • 使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Facebook(HBase)

文档数据库

  • 相关产品:MongoDB、Elasticsearch、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
  • 应用:存储、索引并管理面向文档的数据或者相似的半结构化数据
  • 优势:性能好、灵活性高、复杂性低、数据结构灵活
  • 缺点:缺少统一的查询语言
  • 使用者:百度云数据库(MongoDB)、SAP(MongoDB)

图形数据库

  • 相关产品:Neo4J、OrientDB、InfoGrid、GraphDB
  • 应用:大量复杂、互链接、低结构化的图结构场合,如社交网络、推荐系统等
  • 优势:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱
  • 缺点:复杂性高、只能支持必定的数据规模
  • 使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

Microsoft Access

  • 在安装 32 位 access 的机器上安装 64 位的 access 驱动,会报兼容性错误,解决方案以下:(摘自这里
一、使用"/passive"命令来安装,例如"C:\directory path\AccessDatabaseEngine_x64.exe" /passive
二、安装完成后,查看注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths,删除mso.dll

相关阅读

相关文章
相关标签/搜索