The Genji database for Go

I’ve been watching the development of the Genji database for Go. The author does a good job of responding to contributors, yet has high standards for code. Seems like a nice blend of high standards, humility, and generosity.

See example: https://github.com/genjidb/genji/pull/200

image

I also asked on slack if the plan is to keep the project pure Go – looks like it is:

image

1 Like

Did a test to check binary size when using the genji packages (important for embedded systems where you are deploying go apps OTA). A test app comes in at 5MB, which is good for a Go app. (xz compresses to 1.9MB). List of things in the app:

[cbrake@ceres go]$ goweight cmd/genji-test/main.go                              
  5.9 MB runtime         
  2.0 MB reflect       
  1.3 MB github.com/genjidb/genji/sql/query/expr
  1.2 MB syscall                                                               
  1.1 MB github.com/vmihailenco/msgpack/v5         
  1.0 MB go.etcd.io/bbolt
  982 kB database/sql                                                          
  925 kB github.com/genjidb/genji/document
  690 kB time            
  638 kB github.com/genjidb/genji/sql/planner
  617 kB fmt                  
  593 kB os                   
  582 kB github.com/genjidb/genji/sql/parser
  571 kB internal/reflectlite
  458 kB github.com/genjidb/genji/database
  394 kB strconv
  375 kB strings
  353 kB internal/poll
  345 kB math
  327 kB unicode
  289 kB bytes
  280 kB github.com/genjidb/genji/sql/query
  270 kB bufio
  265 kB encoding/binary
  263 kB github.com/genjidb/genji/sql/scanner
  236 kB sync
  233 kB database/sql/driver
  214 kB github.com/buger/jsonparser
  211 kB github.com/google/btree
  196 kB io
  188 kB github.com/genjidb/genji/document/encoding/msgpack
  171 kB sort
  152 kB context
  152 kB github.com/genjidb/genji/engine/memoryengine
  139 kB github.com/genjidb/genji

1 Like

When trying to update Genji to latest version in SIOT, I found a bug which just got fixed. Being able to communication problems clearly is an important skill when working with complex systems. I tell people – I don’t really know a lot, but I do know who to ask, and how to ask. I continue to be impressed with the Genji project and its pace and quality of development.

updated https://genji.dev/ web site looks nice!

Genji v0.14.0 release:

Genji v0.15.0 release:

The release notes are a very interesting read. They have switched from bolt/badger to pebble for the backing store, which they claim is very fast for writes. They also claim the database format is close to stable (v1).

I was planning to switch to SQLite for SIOT – probably still will, but nice to see other alternatives coming on …