I don't like how it's a closed source binary that's downloaded as part of the install process. Realm used to be like this too, but they open sourced their core later, I wonder if ObjectBox has similar plans.
" We will open source more components later, but first we need to figure out some things with ObjectBox. Please give us time on this. We’re currently putting all our efforts in advancing the product. Please contact us if you have questions about this (email contact [at] objectbox.io.). Thank you."
Definitely not free and definitely no support for go. I was actually wondering how objectbox compares to versant but I quickly answered myself: objectbox is designed for low-end loads and iot stuff while versant is more geared towards big databases (ie millions of objects) and concurrent, networked access.
Anyone willing to correct me or add to this is welcome (and please do).
Most likely by not providing data safety and a bunch of features. The classic example with databases is that the super fast ones will report your writes are finished even before the database starts thinking about writing the data to disk, not to mention flushing it.
Based on safety research [1][2] I’ve read on numerous databases, I’ve learned that there is almost always a big difference between vendor promises and reality. Thus when reading claims of order of magnitude performance gains against one of the most well tested databases in the world, I lean towards the assumption that the gains are due to shortcomings, whether intentional or not.
I've got GBs of CSV data that I'm managing manually and due to response times, need solutions that reduce wire trips. This means that traditional databases have proven difficult due to the distance between process and DB. Something designed for local usage (SQLite/etc) is an area I want to research, so ObjectBox sounds interesting on that front as well. Though, it looks like its goals are mainly IoT, so I'm not too hopeful on this front.
SQLite is pretty bulletproof and tested in this area. Lots of examples for your project to take advantage of, and very high performance for in-memory data sets.
It's ACID compliant, and thus not not in-memory.
https://golang.objectbox.io/faq covers that in detail. In the FAQ, there is a section on comparing to JSON; I guess the same would hold true for CSV.
PS.: Wouldn't worry about a label saying "IoT" if the technology fits your need.
I have used SQLite databases sharded at 2GB due to mobile fs limitations, storing 10-14GB in total, total lookup times across whole query was still on the order of 100ms untuned, unoptimized.
I've been using clickhouse (https://clickhouse.yandex) a lot recently. One thing I found useful was that the underlying tables are just folders on disk that you can easily copy around. The data will be automatically compressed too.
I'm sure it'll depend on some of your other constraints, but may be worth looking at. I've been extremely impressed with its performance.
I'm afraid I've not tried those, I played around only a bit and mostly spent a while trying to get cassandra setup but failed.
Then I hit on https://tech.marksblogg.com/benchmarks.html and saw clickhouse sitting at a very impressive point given the hardware it's on there. It was one of the few data things I saw that looked like it scaled down to a level relevant for me (cassandra I think talks about a dev setup of 5 servers). It's been fast enough with zero tuning or work so far that I've not done that much. I'm sure I could get closer to its speed by carefully setting some things in postgres, or clever work somewhere but I've got other things to do and that's not my speciality.
It has a few issues with ingesting CSV (I end up quoting everything, though I think it's less hassle if you use TSV instead).
Frankly, it's been incredible for my analysis work. apt-get install setup, fast to ingest data, easy to query and output large amounts of things. Happily works on a single box, though apparently scales up as well. More than happy to waffle on about this but I'm aware I've gone on very long already for a "I don't know" answer.
The Go release post (https://objectbox.io/go-objectbox-golang/) has some numbers. "On a i7-8850H CPU, ObjectBox consistently processes over 1.5 million CRUD operations per second with 4.4 million object reads per second."
I only see Java source code here. Is ObjectBox Java the same database code as ObjectBox Go?
EDIT: I see the 'objectbox-go' repo has a separate set of perf tests, but only for ObjectBox Go -- not either of the unnamed "NoSQL" competitors, nor for SQLite.
The initial question was about Realm, thus the link to Java. The core of ObjectBox is the same on every platform (C/C++ for maximum speed). We haven't finished the other benchmarks yet. Sorry for teasing with those. We'll be done with those soon and they will be open source.
You probably don't do a lot of queries? Badger is a K/V store and has no knowledge about the value. Thus querying sucks and if you want indexing, you are on your own. Relations? Anyway, for simple caching that's probably fine.
What does 'object oriented' database mean? A relational database is already an interface to data. Is it just storing serialized binary data with a key?