Our great sponsors
-
server
ToroDB Server is an open source NoSQL database that runs on top of a RDBMS. Compatible with MongoDB protocol and APIs, but with support for native SQL, atomic operations and reliable and durable backends like PostgreSQL (by torodb)
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
service-tests
Correctness test runner for MongoDB API endpoint and instructions for performance testing
-
stampede
The ToroDB solution to provide better analytics on top of MongoDB and make it easier to migrate from MongoDB to SQL
FerretDB co-founder there.
The order of fields is maintained by adding a special field with keys in the original order. For example, `{z: 1, a: {y:2, x:3}}` is stored as `{"a":{"x":3,"y":2,"$k":["y","x"]},"z":1,"$k":["z","a"]}`.
Additional types are stored as objects with special fields too. For example, binary values are stored as `{"$b": "", "s": }`. The full mapping is there: https://github.com/FerretDB/FerretDB/blob/b7e8240607e043a858...
This has been attempted before:
https://github.com/torodb/server
I emailed the project authors a while back and they said that unfortunately it had been abandoned. A shame. I hope the FerretDB people can pull it off.
The MongoDB test suite used to test compatibility is here:
https://github.com/mongodb-developer/service-tests
Hah, I wasn't taking FerretDB seriously because it mentioned it was previously MangoDB. I was only familiar with https://github.com/dcramer/mangodb.
It was both. There were two separate software based on the same underlying technology:
* ToroDB Stampede[1]: MongoDB replica, converting on-the-fly documents to relational structures. Targeting OLAP, as data normalization made queries from some % faster to 2-3 orders of magnitude faster.
* ToroDB Server[2]: what DocumentDB is or FerretDB is planning to be. It was less developed than Stampede, certainly.
[1]: https://github.com/torodb/stampede/