Fork me on GitHub
#asami
<
2021-03-17
>
ribelo20:03:34

does anyone use asami in production, as a central db e.g. for re-frame or something similar?

ribelo20:03:12

is it even suitable for such purpose?

ribelo20:03:59

after a long time I am very disappointed with datascript and I am looking for something instead

quoll20:03:18

When you say, “for re-frame” then do you mean that you have a re-frame app, and you want storage for the data, or are you specifically talking about re-frame structures that will be stored in the database?

quoll20:03:02

Well, I don’t know much about re-frame, so I can’t comment 🙂

ribelo20:03:22

btw, thank you for your work @quoll, especially around documentation, nice to read

👍 3
quoll20:03:01

Some days I just can’t code. Or I want someone else to use a feature, and I know that they’ll never even look at it if it’s not documented. So I write docs 🙂

quoll20:03:30

We had a simpler system based on Rum, where the data was all kept in Asami. But the UI has been pulled out completely and given to a team who does JavaScript. We’re now building an engine that stores everything in Asami, and the engine provides an interface that the JS team can talk to

ribelo20:03:42

sounds cool

quoll20:03:54

I think there’s over 100k deployments now, so for the features that the engine team are using it’s holding up well

quoll20:03:33

I’m actually on that engine team, but as Asami got used more and more, I’ve moved to focusing on it

ribelo20:03:19

I find it surprising that asami in the clojure world is still somewhere in the shadows of datascript

quoll20:03:41

Well, DataScript has been around a long time, and has been promoted at Clojure/conj

quoll20:03:03

People have heard about it

ribelo20:03:58

I first heard about Asami when watching your talk at ClojureD 2019

ribelo20:03:13

great talk

quoll20:03:07

Thank you 🙂

quoll20:03:55

The idea of it was that I wanted to give developers (who like to know how things work) a sense of what graphs are, and how a graph database does it

ribelo20:03:05

there's a lot of activity around graphs in clojure recently

quoll20:03:27

I’ve noticed!

quoll20:03:44

If I’d known all of this 5 years ago then I wouldn’t have bothered 🙂

ribelo20:03:51

it would be a great loss for us

quoll21:03:40

When we started Mulgara, we thought it was a bit of effort, but was not too big an effort. But then the more we did, the more we needed to do. Several years later, the owner of the company said that if he’d known what it would involve, then he never would have committed to it. Because of that, I never wanted to build another complete database from scratch. I knew how much effort that entails. But back in 2016, when I was asked if I could implement my own open source database for Naga (and not rely on Datomic), I figured it would be OK, because it only needed to be in memory, and it only needed to handle storage and join operations. I did that in about a day. Then I decided that it needed a query optimizer (again… easy, because of so few operations), and that only took half of a Saturday. It seemed so simple

quoll21:03:12

The query engine (it did not support a q function… only a :where clause and projection to the required columns) and query planner were here: https://github.com/threatgrid/naga/blob/d36cb2a44d38c27669a52b6b3f421d9db3bc6a96/src/naga/storage/memory/core.clj

quoll21:03:19

That’s 100% of it

ribelo21:03:40

It was nice to have a few words with you Paula

ribelo21:03:06

I'll definitely stop by again, but I have to run.

ribelo21:03:11

thx!

👋 3