收集级别上的MongoDB存储引擎

收集级别上的MongoDB存储引擎,mongodb,Mongodb,在MongoDB上,是否可以在集合级别更改数据库引擎?就像MYSQL为InnoDB和MyISAM所做的一样 请让我知道 谢谢 K 注意:这个答案适用于MongoDB 2.x。自3.0版以来,情况发生了变化 我的答案是否定的 据我所知,默认内存映射存储引擎是唯一支持MongoDB的存储引擎。启动mongod时,没有与存储引擎相关的配置选项。在收集层面上,这样的选择更难想象,也根本不切实际 如果您有兴趣更改MongoDB背后的引擎,请查看用于MongoDB的TokuMX或用于Mongo的Spire。

在MongoDB上,是否可以在集合级别更改数据库引擎?就像MYSQL为InnoDB和MyISAM所做的一样

请让我知道

谢谢

K

注意:这个答案适用于MongoDB 2.x。自3.0版以来,情况发生了变化

我的答案是否定的

据我所知,默认内存映射存储引擎是唯一支持MongoDB的存储引擎。启动mongod时,没有与存储引擎相关的配置选项。在收集层面上,这样的选择更难想象,也根本不切实际


如果您有兴趣更改MongoDB背后的引擎,请查看用于MongoDB的TokuMX或用于Mongo的Spire。

这在MongoDB 2.8中是可能的:

因为MongoDB 3.0,在集合级别上支持不同的存储引擎。MongoDB提供两个存储引擎,基本上是旧的MMAPv1存储引擎和新的WiredTiger引擎

使用参数
--storageEngine
或配置键启动
mongo
时,可以设置默认存储引擎

但是,如果要创建使用不同存储引擎的集合,可以在使用
db.createCollection
方法创建集合时显式选择它:

db.createCollection(
   "<collectionName>",
   { storageEngine: { <engineName>: { <engineOptions> } } }
)
db.createCollection(
"",
{storageEngine:{:}}
)

无法在收集级别更改存储引擎。MongoDB 3.0提供语法
db.createCollection(…{storageEngine:…}…
,但它仅用于将参数传递给已用于数据库的新wiredTiger存储引擎。无法更改已创建数据库的存储引擎。请参阅。

什么存储引擎?在任何数据库中,存储引擎何时在收集级别工作?我相信存储引擎是用于管理(删除、插入、更新)数据的软件。以何种方式管理?你能充分解释你的意思吗?听起来你指的是数据库软件的锁定和隔离级别,但我不确定这听起来很可疑,好像你在试图避免自己回答M102期末考试:-(为什么@FGM的答案有这么多UPs?因为很多人都在寻找M102期末考试lol的答案。遗憾的是,Spire似乎已经不存在了。从Draw to scale网站上可以看到:“遗憾的是,Draw to scale已经不起作用了。”。此答案已过时。因为MongoDB 3.0存储引擎是可插拔的,并且提供了现成的替代存储引擎WiredTiger。答案已过时,因为MongoDB 3.0支持附加引擎(WiredTiger),但响应始终为否。引擎只能在mongod级别定义,而不能在集合级别定义(或数据库)级别。如另一条注释中所述,此语法仅用于更改存储引擎选项,而不是用于收集的存储引擎不在收集级别(这是问题)。