Support for Mongodb Enterprise version and "inMemory" storage engine #913
Replies: 1 comment
-
Thanks for this write-up and testing.
I dont know if it will be fully supported, but i would not be against allowing the download url binary name and adding the storage-engine to the list (with explicit call-out about enterprise-only).
From what i can tell, at least currently, the enterprise urls are basically the same as the community versions aside from the added
I have no clue about legal things. In the download you provided, downloading there seemingly wants you to give some information and agree to the Customer Agreement EULA, though the Archive downloads seemingly dont require any kind of information sharing EDIT: nevermind, i didnt read the first sentences of the archive page:
Though this implies that it is basically the same regardless if it is community or enterprise. (For reference, the community archive) |
Beta Was this translation helpful? Give feedback.
-
As mentioned here and here, storage engine
ephemeralForTest
has been EOL'ed and was completely removed starting in Mongodb 7.0. Also as mentioned, only Mongodb Enterprise - not Community Edition - supports a newer storage engine calledinMemory
. I have done some tests with it, and while starting and stopping the db seems slower thanephemeralForTest
, it seems much faster thanwiredTiger
for my specific use case (~300 tests with db stop and start in between most of them). Storage engineinMemory
is also officially documented - here and here - unlikeephemeralForTest
and it seems to have a long-term future. There are other reasons to support Mongodb Enterprise for other Enterprise-only features like Client-Side Field Level Encryption.I have done some initial work and tests to support Mongodb Enterprise in MMS. It is quite simple to basically support it. But I'd like to get some feedback on concept and the approach.
Working assumptions and constraints
ephemeralForTest
is end of life'd and has been completely removed starting in Mongodb 7.0.ephemeralForTest
appears to be less stable in Mongodb 5.x than it was in 4.x.inMemory
storage engine is only supported in Mongodb Enterprise and it appears to be the long term successor toephemeralForTest
.How to support it
My first approach was to simply support Enterprise tgz urls via
downloadUrl
config. I got it working in a very crude way after making a minor change to the regex parsing logic (to ignore the-enterprise
path part).util/DryMongoBinary.js
regex change:With this change, I can use this in
package.json
to use Mongodb Enterprise 6.0.20 and run the defaultephemeralForTest
engine:To use the new
inMemory
engine, I just pass this config into MMS create method:How to make it configurable?
Obviously, we want MMS to automatically download the correct tgz file based on system OS and CPU arch. But how should it work? Should MMS users simply be able to configure a boolean like
useEnterprise=true|false
(defaultfalse
)? How should users toggle between storage engines? I know that recent versions of MMS automatically switch towiredTiger
when Mongodb version 7.0+ is used. Also, instead of having to set the storage engine when instantiating MMS, I think it would be more ergonomic to also be able to configure the default storage engine via env var or package.json.Considerations & complications
References
I will also mention this issue because it was the first one I came across when I looked for Mongodb Enterprise support - #128
Beta Was this translation helpful? Give feedback.
All reactions