MongoDB 存储引擎的区别及每种引擎的使用场景

阅读时长 5 分钟读完

MongoDB 是一款 NoSQL 数据库,因为其能够快速地存储和查询海量数据,而备受前端开发人员的喜欢。MongoDB 支持多种存储引擎,如 MMAP、WiredTiger 和 In-Memory 等,不同的存储引擎在使用场景和适用性上都有所差异。接下来,本文将会详细介绍 MongoDB 存储引擎的区别以及每种引擎的使用场景。

MMAP 存储引擎

MMAP 存储引擎是 MongoDB 的默认存储引擎,并且在之前版本中一直被广泛使用。这种存储引擎通过将数据库文件映射到内存中来实现快速读取和查询数据的目的。它的优点在于能够高效地处理大型文档和大型集合,适合于访问不太频繁的数据。然而,在高度并发的场景中,其写入性能相对较差,特别是在进行多个并发写入时会有锁冲突的问题。

使用 MMAP 存储引擎的示例代码:

-- -------------------- ---- -------
----- - ----------- - - -------------------
----- --- - ---------------------------------
----- ------ - --- ---------------- - ------------------- ---- ---

----- -------- ----- -
  --- -
    ----- -----------------

    ----- -------- - ------------------
    ----- ---------- - ------------------------------------

    ----- ---- - - ----- ------- ---- -- --
    ----- --- - ----- ---------------------------

    --------------------- -------------------- --------------
  - ------- -
    ----- ---------------
  -
-

-------------------------

WiredTiger 存储引擎

WiredTiger 存储引擎是 MongoDB 从 3.0 版本开始引入的。相较于 MMAP 引擎,它能够更好地处理高并发写入场景,采用了 MVCC(多版本并发控制)技术解决了锁冲突的问题。此外,WiredTiger 存储引擎还支持压缩和加密等功能。

使用 WiredTiger 存储引擎的示例代码:

-- -------------------- ---- -------
----- - ----------- - - -------------------
----- --- - ---------------------------------
----- ------ - --- ---------------- - ------------------- ---- ---

----- -------- ----- -
  --- -
    ----- -----------------

    ----- -------- - ------------------
    ----- ---------- - ------------------------------------

    ----- ---- - - ----- ------- ---- -- --
    ----- --- - ----- ---------------------------

    --------------------- -------------------- --------------
  - ------- -
    ----- ---------------
  -
-

-------------------------

In-Memory 存储引擎

In-Memory 存储引擎是 MongoDB 版本 3.2 引入的,所谓 In-Memory 意味着数据被存储在内存中。这种存储引擎主要是为了解决高度需求性能并且数据流通频繁的场景,例如缓存数据和会话存储等。In-Memory 存储引擎通过尽可能将数据保留在内存中,来加快数据库的处理速度,但缺点是在服务器重启后,所有内存中的数据都会丢失。

使用 In-Memory 存储引擎的示例代码:

-- -------------------- ---- -------
----- - ----------- - - -------------------
----- --- - ---------------------------------
----- ------ - --- ---------------- - ------------------- ---- ---

----- -------- ----- -
  --- -
    ----- -----------------

    ----- -------- - ------------------
    ----- ---------- - ------------------------------------------------- -------------- - --------- ---- - ---

    ----- ---- - - ----- ------- ---- -- --
    ----- --- - ----- ---------------------------

    --------------------- -------------------- --------------
  - ------- -
    ----- ---------------
  -
-

-------------------------

总结

MongoDB 存储引擎在适用场景和性能上都有所区别。选择适合的存储引擎可以提高存储和检索数据的性能。在使用 MongoDB 时,可以根据具体业务需求来选择合适的存储引擎,例如对并发写入场景有需求时可以选择 WiredTiger 引擎。如果需要缓存数据或实现会话存储,则可以使用 In-Memory 引擎来提高性能。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64957b7b48841e98942a569b

纠错
反馈