// voidDB is a cherished toy, a journey into the Unknown, a heroic struggle,
// and a work of love. It is the “Twee!” of a bird; a tree falling in the
// forest; yet another programmer pouring their drop into the proverbial [bit]
// bucket. Above all, it is a shrine unto simple, readable, and functional
// code; an assertion that the dichotomy between such aesthetics and practical
// performance is mere illusion.
Love the poetry in the comment prose! Endeavour so much needed in the industry. It can only come out of the joy of coding, how else could it be born...
I admire the author who took up the challenge of writing a KV DB and cherishing self's efforts. I hope someday I could do something similar and feel accomplished.
The benchmark doesn't accurately represent the real-world database performance because the dataset is too small (roughly half a gigabyte based on [1]?), meaning it fits into the page cache bypassing disk I/O.
I made a local change so that all Put benchmarks ran O(n) O(1) sized transactions and the results were quite different: Void was the slowest, followed by LMDB, Bold, LevelDB, then Badger.
I'd also wager the LMDB author would also (lovingly!) tell us we're holding it wrong
~/go/src/github.com/voidDB/voidDB git:(master)
$ go run github.com/tailscale/depaware@latest
github.com/voidDB/voidDB dependencies: (generated by github.com/tailscale/depaware)
github.com/voidDB/voidDB/common from github.com/voidDB/voidDB+
github.com/voidDB/voidDB/cursor from github.com/voidDB/voidDB
github.com/voidDB/voidDB/free from github.com/voidDB/voidDB
github.com/voidDB/voidDB/node from github.com/voidDB/voidDB+
github.com/voidDB/voidDB/reader from github.com/voidDB/voidDB
golang.org/x/sys/unix from github.com/voidDB/voidDB+
bytes from github.com/voidDB/voidDB+
cmp from internal/fmtsort+
encoding/binary from github.com/voidDB/voidDB/common+
errors from bytes+
D fmt from golang.org/x/sys/unix
hash from github.com/voidDB/voidDB+
hash/fnv from github.com/voidDB/voidDB
io from bytes+
io/fs from internal/filepathlite+
iter from reflect+
math from encoding/binary+
math/bits from golang.org/x/sys/unix+
os from fmt+
path from io/fs
reflect from encoding/binary+
slices from encoding/binary+
LD sort from golang.org/x/sys/unix
strconv from fmt+
LD strings from golang.org/x/sys/unix
sync from encoding/binary+
sync/atomic from internal/bisect+
syscall from github.com/voidDB/voidDB/cursor+
time from github.com/voidDB/voidDB+
unicode from bytes+
W unicode/utf16 from internal/poll+
unicode/utf8 from bytes+
Love the poetry in the comment prose! Endeavour so much needed in the industry. It can only come out of the joy of coding, how else could it be born...
It always made me happy to hack nearby the Neo4j page cache "Muninn", because it meant I'd pass by Chris Vest's poem and giant ascii Raven: https://github.com/neo4j/neo4j/blob/release/5.26.0/community...
I admire the author who took up the challenge of writing a KV DB and cherishing self's efforts. I hope someday I could do something similar and feel accomplished.
Seemingly faster and more compact than lmdb-go, bbolt, Badger, and goleveldb at <2K LOC.
Check out the docs at https://pkg.go.dev/github.com/voidDB/voidDBThe benchmark doesn't accurately represent the real-world database performance because the dataset is too small (roughly half a gigabyte based on [1]?), meaning it fits into the page cache bypassing disk I/O.
[1]: https://github.com/voidDB/voidDB/blob/master/test/bench_test...
This is a cool effort but their claims are wildly misleading as their benchmarks aren't fair across the board:
For example:
- BenchmarkVoidPut runs a single O(n) sized transaction
- BenchmarkLMDBPut runs a single O(n) sized transaction
- BenchmarkBadgetPut runs O(n) O(n) sized transactions (!!!)
I made a local change so that all Put benchmarks ran O(n) O(1) sized transactions and the results were quite different: Void was the slowest, followed by LMDB, Bold, LevelDB, then Badger.
I'd also wager the LMDB author would also (lovingly!) tell us we're holding it wrong
Since there are no strict OS dependency I can see, has anyone tried to compile this and run it on Windows?
Faster than rocksdb?
probably not if it's LMDB-based (at least for writes)
seems pretty bloated
https://github.com/voidDB/voidDB/blob/master/go.sum
A lot of it is indirect dependencies, and most of the direct dependencies in the go.mod are just for benchmarks, as far as I can tell.
Only "x/sys/unix" outside of tests/benchmarks