by rhim on 6/13/21, 6:47 AM with 48 comments
by ludocode on 6/13/21, 7:30 AM
All of these embedded NoSQL databases seem to be missing critical features. One such feature for my use case is database compaction. Last I checked, an LMDB database file can never shrink. Full compaction of LevelDB is slow and complicated (as I understand it essentially breaks the levels optimization which is the whole point of the thing.) SQLite meanwhile supports fast incremental vacuum, and it can be triggered manually or automatically.
SQLite just has everything. Plus the reliability is unmatched. Even if you just need a single table that maps blob keys to blob values, I would still recommend SQLite over any NoSQL database today.
by creshal on 6/13/21, 7:27 AM
by andrey_utkin on 6/13/21, 7:27 AM
Linux has VFS cache which is very robust and efficient.
Remember that it is typical for programs to read /etc/nsswitch.conf, /etc/resolve.conf and tons of others at startup time - the filesystem is the datasource in Unix tradition, so the machinery is very well optimized.
by quantumofalpha on 6/13/21, 7:05 AM
If you just need a r/w store for some jsons in a single file, why not sqlite? You can put arbitrary-length blobs into it. Some sql will be involved but you can hide it in a wrapper class tailored to your application with a few dozen lines of code or so.
by Rochus on 6/13/21, 9:06 AM
Here is a NoSql database based on the SQLite backend: https://github.com/rochus-keller/Udb.
I use it in many of my apps, e.g. https://github.com/rochus-keller/CrossLine. It's lean and fast, and supports objects, indices, hierarchical "globals" like ANSI-M and transactions.
by fulafel on 6/13/21, 7:51 AM
An interesting one I ran into recently is Datalevin, a Datalog DB on top of LMDB for Clojure: https://github.com/juji-io/datalevin
by teekay on 6/13/21, 7:40 AM
It's small yet capable. If you are familiar with MongoDB, you will feel right at home.
It's great for .NET developers as it's written in C# but since it's Netstandard 1.3 compatible, you can presumably run it under Ubuntu or Mac OS or wherever else the new .NET 5 runtime works. I've got a C# app running on ARM64 the other day - just saying.
I wrote about my experience playing with LiteDB here - https://tomaskohl.com/code/2020-04-07/trying-out-litedb/. It's not an in-depth look at all, just a few notes from the field, so to speak.
by erk__ on 6/13/21, 7:12 AM
[0]: https://en.m.wikipedia.org/wiki/Lightning_Memory-Mapped_Data... [1]: https://dbmx.net/tkrzw/
by adamansky on 6/13/21, 7:14 AM
by maxk42 on 6/13/21, 7:27 AM
by kenOfYugen on 6/13/21, 7:43 AM
With proper concurrency control, it can work very well even for multi process applications.
by xiphias2 on 6/13/21, 7:09 AM
by Tpt on 6/13/21, 8:57 AM
However, it is still in heavy development and a bit of a moving target even if the developers are currently heading toward stabilization of the file format.
by throwaway888abc on 6/13/21, 6:50 AM
by 1vuio0pswjnm7 on 6/13/21, 8:07 AM
by Blackthorn on 6/13/21, 7:17 AM
by abrookewood on 6/13/21, 11:38 PM
by quickthrower2 on 6/13/21, 11:07 PM
In memory, high performance, no schema. Get the object to journal to disk and you are almost there!
by tutlane on 6/16/21, 12:22 AM
by pistoriusp on 6/13/21, 7:37 AM
by Abishek_Muthian on 6/13/21, 7:39 PM
by diehunde on 6/15/21, 5:10 AM
by nicodds on 6/13/21, 7:54 AM
by dvfjsdhgfv on 6/13/21, 7:20 AM
by RustyRussell on 6/13/21, 7:40 AM
by CRConrad on 6/14/21, 4:45 PM
by jf22 on 6/14/21, 12:37 PM
by amachefe on 6/13/21, 7:36 AM
by basiclaser on 6/13/21, 8:24 AM
by voodoochilo on 6/13/21, 7:42 AM