当前位置:嗨网首页>书籍在线阅读

08-动态文档结构

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.2.2 动态文档结构

MongoDB 不会限制文档结构。不用定义结构,就可以在集合中添加文档。甚至不需要先创建集合,向不存在的集合中插入数据时会创建这个集合。对比关系型数据库,必须要明确地定义表和schema,对数据结构的任何更改都需要更改schema。不需要schema的数据库有一些有趣的优点。

文档结构灵活。不管是什么结构,MongoDB都会存储文档。如果文档结构频繁更改或者文档没有结构,不需要对它们进行调整,MongoDB会直接存储。

经常变化的应用不需要更改数据库。当更新文档而有了新的或者是不同的属性时,我们可以部署应用,它会立即开始保存新的文档结构。否则,可能需要修改代码,为以前保存的文档增加不存在的文档属性。

没有会引起停机和延时的schema变化。我们不必锁定数据库的部分功能,以便应对文档结构的变化。而在此之前,可能需要修改应用程序。

不需要schema设计的专业知识。没有schema意味着,不需要掌握构建应用的一个完整的领域知识。这意味着对于一般的技术人员,构建应用变得更加容易,上线运行所需的规划可能也更少。

但没有schema也有缺点。

没有强制的文档结构。没有在数据库级别强制文档结构,对文档结构的任何修改都不会自动传播给已经存在的文档。当多个应用程序使用相同的集合时尤其令人痛苦。

没有文档结构的定义。数据库中没有地方为数据库工程师或者应用程序来确定数据结构是什么。通过查看文档来确定集合的目的就更加困难了,因为无法保证文档与文档之间的结构是一样的。

没有明确的定义。文档数据库没有数学上的明确定义。当在关系型数据库中存储数据的时候,经常有数学上可证明的最佳实践可作参考,使得数据访问尽可能的灵活和快速。对MongoDB的优化也几乎没有明确的定义,尽管一些传统的方法是支持的,比如创建索引。

现在对于MongoDB如何存储数据有了大概的了解,我们开始来使用它。