Our great sponsors
-
sirix
SirixDB is an an embeddable, bitemporal, append-only database system and event store, storing immutable lightweight snapshots. It keeps the full history of each resource. Every commit stores a space-efficient snapshot through structural sharing. It is log-structured and never overwrites data. SirixDB uses a novel page-level versioning approach.
-
xtdb
An immutable database for application development and time-travel data compliance, with SQL and XTQL. Developed by @juxt
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
I'm working on something similar for the JVM, however with no document semantics, but on a much more fine granular level.
JSON is shredded during an initial import into a tree structure with fine granular nodes. Thus, an import can be done with very low memory consumption (permitted that auto-commit issues a sync to disk before RAM space is exceeded). Furthermore, it doesn't require a WAL for consistency. Instead the indexes are stored in a log-structure using a persistent tree (as in every commit creates a new tree root). A sliding snapshot algorithm makes sure, that only a fragment of a page has to be copied on a write.
As thus, it's also a perfect candidate for an event store, storing both the (lightweight) snapshots and tracking the changes optionally.
https://github.com/sirixdb/sirix
The architecture is described over here:
https://sirix.io/docs/concepts.html
Furthermore I'm working on a tutorial for a local client usage (work in progress):
https://sirix.io/docs/jsoniq-tutorial.html
Kind regards
it's bitemporal, will be SQL-compatible, and also has another query-language - XTQL :
https://github.com/xtdb/xtdb/tree/2.x/dev/xtql
I think the documentation you're looking for is here:
https://docs.endatabas.com/sql/path_navigation.html
I've just pushed a change mentioning that paths can be used in both SELECT and WHERE clauses. Sorry for the ambiguity.
For example:
`select * from stores where addresses[0].city = 'New Jersey';`
...can be used on the demo data, found here:
https://www.youtube.com/watch?v=oDHGjUMqPvI&t=140s - demo
https://github.com/endatabas/marketing/tree/main/2023-09-dem... - code
HTH!