1. 是什么是文档model?
文档模式是非关系数据库中最常见的一种数据模型. 传统的关系式数据库利用正规形式(NF, or 三范式)限定数据库设计, 哀求数据仅通过键相connected. 而非构造化数据库 , 尤为 NoSQL, 它许可数据在保存和检索数据时, 保持在原始的构造、格式和关系而不进行转换. Documents 是文档 model 中的基本物理单元.它可以是 JSON 串、XML 文档和 BSON 等数字格式. 有了文档模式, 数据库系统可以更好地处理动态的数据构造,即数据构造在用户需求的变动下可以灵通地发生变换.
2. 文Documentary 模型的适用场景

比较于关系表模型, 笔墨模型在以下 scenaria 更加头等:
- 数据表构造不愿定但数据量大: 大量数据的传INPUT/OUTPUT 应利用文档模式, 由于它许可数据构造的动态变革.
- Multi-structure data: 数据呈现多种属性和构造时要利用文档模式.
- Real-time queries: 当须要快速查询时,数据库系统需供应快速相应,文档模式可以知足得更好.
- Collaborative and social data.
3. 文Documentary 模型的优点以及缺陷
就优点而言 , 文档模式具有以下优先:
- 灵敏度: 数据内容和构造的管理变得大略单纯, 由于构造和数据是平等的.
- BSON 格式利于存储和查阅大量数据,能够有效的分配内存. JSON 格式能避免构造化风险, 能与 JavaScript 和 HTML,更有利于对数据的操作掌握.
- 快照读: 可以做到高性能阅读, 由于与关系型数据庫比较, 数据块的读取不须要穿越关键路径.
- Replication: 文档中的数据可以像键值对一样复制, 通过大略的方案实现高可用与数据复制.
可能的缺陷列举如下:
- 数据模式不透明: 没法像关系型表中一样看 clear 的列和行,有时须要利用 JSON, BSON 等事情办法来理清数据的构造和对其的操作可能会更加繁芜化.
- 数据安全性问题: 大量数据的传입/输出会很随意马虎导致查询数据库时供应的信息太過详细, 增大了数据泄密风险.
- Full-text search: 在 SQL 数据库中,FULL-TEXT SEARCH 功能可以轻松办理全文检索用例, 但数据库中的文ument 并不是字符串, 所有的全文检索索引都须要常日的运用层机制来实现.
4. 文Documentary 模型的实践
实施文档模型须要与传统的关系型数据库有何差异?
大部分 NoSQL DataBase 系统,比方说 MongoDB 都适用文档模式. 下面以 MongoDB 为例作为实践先容:
查询数据:
- json 格式: MongoDB 支持 json queries, 如: `"name": "John Doe'`
- Regular Expressions support: 如: `/Jack/`
- Logic operators: 如: `{$where: "this.age > 50"}`.
变动数据:
- Upgrade: 更新单值: `db.collection.update() { $set: { "age" : 25 } }`
- Decrement: 变动数值: `inc()` 和 `decor()`
- Replacements: 更换操作: `replaceOne(filter, replacement, options)` or `replaceMany(filter, replacement, options)`
插入数据:
- 增加一条新记录: `db.collection.insertMany(arrayOfDocuments)`, 或者 `db.collection.insertOne(document)`