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"
}
父子引用设计的优点和适用情况
- 引用数据内容是否非常多
- 引用数据量是否非常庞大,而且在增加
- 数据是否需要单独访问
反范式
范式是指按既定的用法,范式就是一种公认的模型或模式。 反范式=> 不走寻常路