Application area

We do believe that TingoDB must be targeted somewhere in the middle between trivial key-value stores and full blown NoSQL solutions. Consider to use it when you need small to middle app demands in lightweight database for your NodeJS project. But remember that you always can grow when you need it.

MongoDB compatible API

For features that TingoDB implements it exposes them thru 100% MongoDB compatible API. As the proof for this statement all tests are designed to work on both MongoDB using its native driver and TingoDB. More other, significant part of tests is taken as-is from NodeJS driver project.

Indexing

TingoDB supports B-tree indexes that stored in memory. Indexes are used for search query optimizations and mimics MongoDB indexes (spare, unique and so on). Compound indexes are not supported yet.

Search, Sorting, Grouping and Map Reduce

Full set of MongoDB search operators is supported. Both search and indexes are supported for embedded arrays. Sorting is fully supported and also using indexes when possible. Grouping and Map Reduce works as it designed to be.

Atomic updates and concurrent access

NodeJS is not multi-threaded application, but still with asynchronous approach you can make many things in parallel. TingoDB is safe for this kind of usage and supports atomic updates the same way as its big brother.

Safe persistence

TingoDB uses append only files for storing of collection documents. This ensures that you never lost all your data and can rollback to good copy if any damage happens.

Reasonable big data-sets

TingoDB uses memory only for indexes and optional cache. It loads collection documents using file access operations. We estimated memory consumption vs data-set size ratio as 1:100. This of course depends on amount of indexes that database uses.

Reasonable speed

TingoDB is not super fast, but very close to what you can expect from MongoDB on reasonable sized data-sets. In average we estimate that it 1 to 2 times slower that MongoDB which not so bad for pure JavaScript solution.