Asami: A flexible graph store in Clojure
github.com
Asami: A flexible graph store in Clojure
1–10 of 22 posts
Re: Asami: A flexible graph store in Clojure
#2It's really good to see a scalable database that did schemas a bit like typescript does types. Opt-in explicit schema, try to infer schemas when possible and allow schema-less if I ask for it.
Hmm, I suppose elasticsearch does have this.
Re: Asami: A flexible graph store in Clojure
#3Re: Asami: A flexible graph store in Clojure
#4I just spent ten minutes looking through the repo. I like how the query language is similar enough to Datomic’s to have an easy learning curve. I wish I could push a magic button and have this in Common Lisp (where I usually just use SQLite as an easy to use data store).
I don't actually know Common Lisp, though it seems to work nicely when compiled to binary via Graal, so maybe there's some possibilities of integration using that approach?
Re: Asami: A flexible graph store in Clojure
#5> schema-less It's really good to see a scalable database that did schemas a bit like typescript does types. Opt-in explicit schema, try to infer schemas when possible and allow schema-less if I ask for it. Hmm, I suppose elasticsearch does have this.
Re: Asami: A flexible graph store in Clojure
#6I just spent ten minutes looking through the repo. I like how the query language is similar enough to Datomic’s to have an easy learning curve. I wish I could push a magic button and have this in Common Lisp (where I usually just use SQLite as an easy to use data store).
I know way too little about Datalog, but it goes something like this:
1. create helper functions to create/alter/drop tables.
2. create helper functions for insert/select/update/delete queries, etc. Probably with the same syntax as in Datomic / Asami / etc.
3. each table its name would be a Datalog "attribute", and would have 2 columns: the "id" and the "value". "id" would be indexed, "value" would be a value or a foreign key to another table.
I guess writes would be slow if everything you insert into the DB is indexed, not sure what the other downsides would be.
Re: Asami: A flexible graph store in Clojure
#7I just spent ten minutes looking through the repo. I like how the query language is similar enough to Datomic’s to have an easy learning curve. I wish I could push a magic button and have this in Common Lisp (where I usually just use SQLite as an easy to use data store).
An idea that pops up more and more often in my head is to create a SQLite wrapper library that basically treats SQLite like Datalog. I know way too little about Datalog, but it goes something like this: 1. create helper functions to create/alter/drop tables. 2. create helper functions for insert/select/update/delete queries, etc. Probably with the same syntax as in Datomic / Asami / etc. 3. each table its name would…
Regardless, I have a partial attempted implementation of this on top of SQLite using Python: https://git.sr.ht/~chiefnoah/quark
No query engine, I didn't get that far.
Re: Asami: A flexible graph store in Clojure
#8I just spent ten minutes looking through the repo. I like how the query language is similar enough to Datomic’s to have an easy learning curve. I wish I could push a magic button and have this in Common Lisp (where I usually just use SQLite as an easy to use data store).
An idea that pops up more and more often in my head is to create a SQLite wrapper library that basically treats SQLite like Datalog. I know way too little about Datalog, but it goes something like this: 1. create helper functions to create/alter/drop tables. 2. create helper functions for insert/select/update/delete queries, etc. Probably with the same syntax as in Datomic / Asami / etc. 3. each table its name would…
https://news.ycombinator.com/item?id=33518320
https://github.com/cozodb/cozo
Note: there was a fair amount of discussion about the license; the author eventually switched it to MPL2.
Re: Asami: A flexible graph store in Clojure
#9Earlier quoted context omitted.
An idea that pops up more and more often in my head is to create a SQLite wrapper library that basically treats SQLite like Datalog. I know way too little about Datalog, but it goes something like this: 1. create helper functions to create/alter/drop tables. 2. create helper functions for insert/select/update/delete queries, etc. Probably with the same syntax as in Datomic / Asami / etc. 3. each table its name would…
It's not like datomic claims to be lightening fast, it's not. The real problem is if you want to support the historical queries "as_of()", which is very difficult to do efficiently with only B-tree indexes. So you're either left maintaining your own indices as tables or externalizing it to something else. I think the latter would actually be a pretty ok option if your dataset fits entirely in memory (though... for hi…
Re: Asami: A flexible graph store in Clojure
#10Earlier quoted context omitted.
An idea that pops up more and more often in my head is to create a SQLite wrapper library that basically treats SQLite like Datalog. I know way too little about Datalog, but it goes something like this: 1. create helper functions to create/alter/drop tables. 2. create helper functions for insert/select/update/delete queries, etc. Probably with the same syntax as in Datomic / Asami / etc. 3. each table its name would…
It's not like datomic claims to be lightening fast, it's not. The real problem is if you want to support the historical queries "as_of()", which is very difficult to do efficiently with only B-tree indexes. So you're either left maintaining your own indices as tables or externalizing it to something else. I think the latter would actually be a pretty ok option if your dataset fits entirely in memory (though... for hi…
And to sum up what I know about Datalog, it's basically just this article (not reference material, but it got me interested in the concept), plus some light wikipedia-ing: https://www.instantdb.com/essays/datalogjs
Edit: I think you added the part with your git repo after I wrote this. Looks cool, could you add a license file to it?