每日数据库知识-mongodb的存储引擎wiredTiger

241 阅读8分钟

WiredTiger

WiredTiger 是 MongoDB 使用的存储引擎之一,从 MongoDB 3.0 版本开始引入。WiredTiger 取代了之前的 MMAPv1 和 RocksDB 存储引擎,成为 MongoDB 的默认存储引擎。WiredTiger 设计用于提供高性能、高可靠性和可扩展性。 WiredTiger 的主要特点包括:

  1. 并发控制:WiredTiger 提供了强大的并发控制机制,支持高并发读写操作,这对于多用户和高负载的应用非常重要。
  2. 持久性:WiredTiger 提供了更好的持久性保证。它使用预写日志(Write-Ahead Log, WAL)来确保即使在系统故障的情况下,数据也不会丢失。
  3. 压缩:WiredTiger 支持数据压缩,这可以减少磁盘空间的使用,并提高 I/O 性能。
  4. 索引:WiredTiger 支持高效的索引操作,这对于快速的数据检索非常重要。
  5. 可扩展性:WiredTiger 设计用于水平扩展,允许通过添加更多的服务器来增加数据库的容量和性能。
  6. 多版本并发控制(MVCC):WiredTiger 支持 MVCC,这允许在同一时间多个事务可以读取和写入数据,而不互相干扰。
  7. 事务支持:WiredTiger 支持事务,这使得它可以处理更复杂的业务逻辑,如跨多个文档的事务。

WiredTiger 的引入是 MongoDB 性能和可扩展性方面的重要进步,它使得 MongoDB 能够更好地满足现代应用程序的需求。

想一个问题,为什么要有存储引擎的存在?因为分模块设计是软件设计常用的思路。

下面,通过提问的形式来了解一下,关于mongodb存储引擎的事。

mongodb有哪些数存储引擎

1问:mongodb有哪些存储引擎

MongoDB支持多种存储引擎,每种存储引擎都有其特定的用途和特性。以下是MongoDB主要支持的几种存储引擎:

  1. WiredTiger
    • 从MongoDB 3.2版本开始,WiredTiger成为MongoDB的默认存储引擎。
    • 它支持文档级别的锁和快照隔离,提供了更优秀的并发性能。
    • 支持压缩和加密功能,可以有效地减少存储空间的使用和提高数据安全性。
    • 支持事务(从MongoDB 4.0开始),使得多文档 ACID 事务成为可能。
  2. MMAPv1
    • MMAPv1是MongoDB早期的默认存储引擎。
    • 它使用内存映射文件进行数据存储,简单且性能稳定。
    • 由于它的设计限制,它在处理大量数据和高并发写入时可能不如WiredTiger高效。
    • 从MongoDB 4.2版本开始,MMAPv1存储引擎已被弃用,并在后续版本中移除。
  3. In-Memory
    • 这个存储引擎将数据存储在内存中,适合于那些数据集可以完全放入内存且需要极快访问速度的场景。
    • 它不提供持久性保证,因为数据仅在内存中,重启后数据会丢失。
    • 主要用于缓存或需要高速读写的特定应用场景。 除了这些主要的存储引擎,MongoDB的灵活性还允许社区开发其他存储引擎,但这些可能不如官方支持的引擎那样稳定或得到广泛应用。

在选择存储引擎时,需要根据具体的应用场景、性能需求、数据安全性和持久性要求来决定。WiredTiger因其多功能性和性能优势,是大多数用户的首选。

2问:这些存储引擎都是必须依赖mongodb的吗?

是的,这些存储引擎是专门为MongoDB设计的,并且它们紧密集成在MongoDB数据库管理系统中。这意味着它们依赖于MongoDB的核心代码库和架构来运行。以下是几个关键点:

  1. 集成性:MongoDB的存储引擎是其数据库核心架构的一部分,它们被设计来与MongoDB的查询处理器、索引管理、复制、分片和其他功能紧密协作。
  2. 依赖性:这些存储引擎依赖于MongoDB提供的接口和抽象层来处理数据的存储、检索、索引和事务。它们不是为了作为独立的存储系统而设计的。
  3. 配置:在使用MongoDB时,你可以通过配置文件或命令行选项来选择不同的存储引擎。但是,这些操作都是在MongoDB的上下文中进行的。
  4. 兼容性:存储引擎必须与MongoDB的版本兼容。例如,WiredTiger是在MongoDB 3.2及以后版本中引入的,而In-Memory存储引擎是在MongoDB 3.2版本中作为一个实验性特性引入的。

因此,这些存储引擎不能脱离MongoDB单独使用。它们是为了优化MongoDB的性能和功能而开发的,并且只能在其数据库管理系统中发挥作用。如果你需要使用这些存储引擎,你必须安装和运行MongoDB。

3问 wiredtiger是哪个团队开发的

WiredTiger是由一个同名的小公司WiredTiger, Inc.开发的。这个团队由数据库和高性能存储系统领域经验丰富的工程师组成,其中许多成员之前在其他知名数据库公司工作过,比如Oracle和MySQL。 WiredTiger公司成立于2009年,其目标是创建一个高性能、可扩展的存储引擎,该引擎能够支持多种数据模型,包括文档、键值对和关系数据。WiredTiger存储引擎以其支持事务处理、快照隔离、并发控制和数据压缩等特性而闻名。 2014年,MongoDB, Inc.收购了WiredTiger,并将其存储引擎集成到MongoDB中,成为MongoDB 3.2版本及以后版本的默认存储引擎。这次收购显著提升了MongoDB的性能和功能,使其在数据库市场中更具竞争力。收购后,WiredTiger团队的大部分成员加入了MongoDB公司,继续开发和优化WiredTiger存储引擎。

4问 wiredTiger存储引擎可以用在MySQL上吗

WiredTiger 是专为 MongoDB 设计的存储引擎,并且从 MongoDB 3.2 版本开始成为其默认的存储引擎。WiredTiger 并不是为 MySQL 设计的,因此不能直接用在 MySQL 上。 MySQL 使用的是自己的存储引擎架构,最著名的包括 InnoDB、MyISAM、Memory 等。每个存储引擎都有自己的特性和用途,并且与 MySQL 的查询处理器、事务管理器和其他组件紧密集成。 虽然理论上可以开发一个适配器或转换层来让 WiredTiger 与 MySQL 一起工作,但这样做会非常复杂,并且需要大量的工作来确保兼容性和稳定性。实际上,没有官方或广泛认可的项目来支持将 WiredTiger 作为 MySQL 的存储引擎。

总之,WiredTiger 是 MongoDB 的一个组件,并不是为了与 MySQL 一起使用而设计的。如果你想要在 MySQL 中使用类似 WiredTiger 的特性,最好的办法是寻找 MySQL 支持的存储引擎或外部解决方案。

5问 为什么他们会专门为mongdodb开发存储引擎?

他们会专门为MongoDB开发存储引擎的原因可能包括以下几点:

  1. 市场需求:MongoDB作为一个新兴的NoSQL数据库,在推出时需要高性能和可扩展的存储解决方案来满足市场需求。WiredTiger, Inc.看到了这一市场机遇,并决定开发一个能够满足这些需求的存储引擎。
  2. 技术优势:WiredTiger团队拥有数据库和高性能存储系统领域的深厚经验。他们可能看到了MongoDB的潜力,并认为他们能够提供一个在并发处理、事务支持、压缩和持久性方面具有技术优势的存储引擎。
  3. 业务合作:WiredTiger可能希望通过与MongoDB的合作来提升自己的品牌知名度和市场影响力。通过为MongoDB这样快速增长的公司提供核心组件,WiredTiger可以扩大其业务范围。
  4. 创新驱动:WiredTiger可能想要推动存储引擎技术的创新。通过与MongoDB这样的现代数据库平台合作,他们有机会实现和展示他们的创新技术。
  5. 商业战略:作为一个创业公司,WiredTiger可能希望通过开发一个高度差异化的产品来建立自己的市场地位。与MongoDB的合作可以为他们提供一个展示其技术实力的平台,并可能吸引更多的客户和投资者。
  6. 兼容性和集成:WiredTiger存储引擎的设计理念与MongoDB的数据模型和需求相契合。他们可能专门为MongoDB开发了存储引擎,以确保最佳的兼容性和集成效果。 最终,WiredTiger存储引擎的成功开发和使用不仅为MongoDB带来了显著的性能提升,也为WiredTiger公司本身带来了商业上的成功,这最终导致了MongoDB公司对WiredTiger的收购。

6问 mongodb什么时候创立的?

MongoDB是由DoubleClick的前员工Eliot Horowitz和Dwight Merriman在2007年创立的。该公司最初的名字是10gen,后来在2013年改名为MongoDB, Inc.。MongoDB的第一个版本在2009年发布,之后迅速成为最受欢迎的NoSQL数据库之一。

2014年,MongoDB, Inc.收购了WiredTiger。