数据库学习 | NoSQL的意义

145 阅读2分钟

NoSQL意义

  • 易扩展,高性能,高可用
  • 较容易映射复杂数据(key-value)
  • 无事物特性要求(ACID特性)

引自百度百科 ACID,是指数据库管理系统DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。

在数据库系统中,一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性。

数据库相关的概念

  • 关系型数据库,是指采用了关系模型来组织数据库。
  • NoSql是对于不同于传统的关系数据库的数据库管理系统的统称

NoSQL的设计

  • 常见场景以及设计方法(内嵌,父/子引用,反范式)
  • 双向关联的场景及设计原则

NoSQL的常见数据库

常见场景以及设计方法(内嵌,父/子引用,反范式)

内嵌

内嵌是指存在关联关系的文档,放在同一文档中,以数组的形式存放,例如下面例子中储存的地址一,地址二,地址三

{
 "user":"admin",
 "address":["adress1","address2"]
}
内嵌设计的优点和适用情况
  • 减少了关联查询
  • 适用于单类需要描述的属性
  • 不经常变化的属性(扩展,嵌套关联)

父引用

父引用是指存在一对多的情况中,放在同一文档中,以数组的形式存放。 例如下面的例子,父集合文章的集合里存放了,评论的id

{
 "tid":"文章id",
 "comments":["comment1","comment2"]
}

子引用

子引用是指存在一对非常多的情况中,由于数据库文档存放限制,这个时候进行反向引用,就是在子级评论的集合里,关联了父集合文章的id

{
 "cid":"消息id",
 "tid":"文章id"
}

父子引用设计的优点和适用情况

  • 引用数据内容是否非常多
  • 引用数据量是否非常庞大,而且在增加
  • 数据是否需要单独访问

反范式

范式是指按既定的用法,范式就是一种公认的模型或模式。 反范式=> 不走寻常路