在进行 MongoDB 集合设计时,需要考虑数据模式的设计,为数据建立合适的索引以及一些最佳实践,以便获得出色的效果和性能。本篇文章将介绍 MongoDB 集合设计的最佳实践。
创建合适的数据模式
要想创建出有效的 MongoDB 数据模式,需要充分理解你的数据以及你要对其执行的操作。考虑如下最佳实践:
- 使用嵌套的文档来减少 join 操作
使用嵌套的文档是一种优雅的数据建模方式,可以避免复杂的 JOIN 操作,并且降低游动数据的出现频率。以下是一个典型的嵌套文档的例子:
- ------ ------------------------------------- ----------- ---------- -------- ---------------------- ---------- - --------- ---- ---- ----- ------- ---------- -------- ----- ------ ------- - -
可以看到,上述的地址信息被嵌套在主要的文档中,这就避免了 join 操作。而且,查询地址信息时是非常快速的,例如:
----------------------------- ---------
- 组织数据以支持用于查询的索引
组织你的数据以便支持索引查询是至关重要的。索引可以使你的查询速度提高许多倍,因为 MongoDB 可以快速访问索引,并从中定位文档。以下是一些最佳实践:
- 确保在存储大型嵌入式数组时使用数组索引。
- 将数组的一些属性扩展到数组外面,以便支持索引。例如,你可能在用户对象中有一个名为餐馆偏好的数组。为支持之后的查询,你可以将餐馆偏好的属性扩展出来,这样就可以针对该属性创建索引。
- 使用合理的数据类型。将字符串类型作为索引键可以消耗过多的内存,因为字符串类型通常比数值型数据大。如果数据可以使用数字类型表示,则使用它们来创建索引。此外,在时间戳字段及其他类型,你也应该根据数据实际情况进行选择。
最佳实践
除了创建良好的数据模式外,还有很多其他的最佳实践可以帮助你获得出色的 MongoDB 性能。以下是一些重要的最佳实践:
- 选择合适的写关注
在 MongoDB 中,写关注用于确定是否将文档数据同步到磁盘上。可以通过选择合适的写关注来优化读/写性能。以下是可用的三个写关注选项:
- "majority":至少需要在多数节点上写入副本数据时才返回成功命令。
- "fsync":等待数据写入磁盘后再返回成功命令。
- "none":不同步数据。写入操作要快得多,但可能会导致数据丢失。
- 使用索引来加快查询
创建索引可以提高查询性能并减少 I/O 操作。在创建索引时,需要选择数据集合中最常用的查询字段。要避免在太多的字段上创建索引,因为它们会消耗大量磁盘空间,并会导致写操作加重。使用过多的索引可能会导致增加了负载时间而不是减少。
------------------------------- ----
- 优化查询
避免使用 $where 和 $or 操作符,它们通常会导致较慢的查询。在有可能使用简单的查询语句时,请尽量避免使用复杂的查询语句。
- 适当使用分片
将数据集分片为多个 MongoDB 实例可以有效提高性能和可扩展性。最适合分片的数据集是可以通过文档键分片的数据集。如果数据需要频繁地扩展,那么分片是最佳选择。
示例代码
以下是一个简单的 Node.js 示例应用程序,说明了如何使用 MongoDB 进行查询:
----- ----------- - ------------------------------- ----- ------ - ------------------ ----- --- - ---------------------------- ----- ------ - ------------ ------------------------ ------------- ------- - ------------------ ----- ---------------------- ------------ -- --------- ----- -- - ------------------ ----------------- ---------- - --------------- --- --- ----- ------------- - ------------ --------- - ----- ---------- - --------------------------- ----------------------------------------- ----- - ----------------- ------ ------------------ --- --------- ---------- ------------------ --------------- --- --
以上示例代码介绍了如何通过 MongoDB 完成简单的查询。如果你想学习更多有关 MongoDB 的信息,请查看官方文档。
总结
MongoDB 的集合设计是一门艺术,在这里我们介绍了如何创建有效的数据模式、制定最佳实践以及写出简单、高效的代码。这些指导线路将使你能够快速入门 MongoDB,并使你能够创建性能优秀的应用程序。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6455c0ee968c7c53b0925271