asami

quoll 2024-02-05T21:13:04.925629Z

Good question! On one hand… Cisco Systems thought it was 🙂

nando 2024-02-06T10:40:39.203359Z

Thanks for the reply Paula. The reason I asked is because I’m in the middle of trying to figure out how to use SQLite as in process storage for a Datomic database. It’s a struggle, at least for me. The rationale is to start with simple, in process storage and if the app I’m working on scales, then I can switch storage to a distributed approach. Your documentation is certainly much better than Datomic’s, and it is much easier to get started with Asami in production. So I’m wondering if I should just use Asami.

quoll 2024-02-06T11:30:02.421899Z

Well, if you’re in memory, then storage is actually pretty robust. There are various tweaks, but it’s just a set of nested Hashmaps. It’s hard to get that wrong

quoll 2024-02-06T11:31:20.151029Z

If querying were to have a bug in it, you can still just pull data out with simpler interfaces at any time.

quoll 2024-02-06T11:31:40.420129Z

(Also, please tell me and I’ll fix the bug!)

nando 2024-02-06T11:32:16.187239Z

I’d be working with storage to disk.

quoll 2024-02-06T11:34:45.513569Z

OK… that’s a different risk profile, but I think it’s pretty good. There are faster systems, but it’s been kept simple, which is why I think it works well.

quoll 2024-02-06T11:37:07.140059Z

It shares many of its features with http://mulgara.org/, which was used for nearly 20 years in many commercial and government applications, but the persistency makes it simpler and faster

nando 2024-02-06T11:41:13.586889Z

I’m building an app to finance climate solutions. It might scale, it might not. If it scales, and Asami can no longer handle the load (I have no idea at this point … just trying to plan ahead) what could be done to deal with that?

quoll 2024-02-06T11:41:24.407029Z

So… I know I’m being immodest, but in terms of storage and retrieval, I do think it’s robust

quoll 2024-02-06T11:43:38.664169Z

At that point you’ll be looking for a different storage mechanism. I do have plans to do more there, but this is where the lack of commercial support could hurt. What I would do then, is port the data to a new graphdb. But that’s actually easy to do. (IMO)

quoll 2024-02-06T11:45:00.347829Z

Though, I personally would ensure the data was RDF compliant and move to a big RDF system at that point

quoll 2024-02-06T11:45:30.686909Z

Because there are lots of commercial vendors who offer a lot of support there.

quoll 2024-02-06T11:46:00.957749Z

This is an easy change to make, because I build it all around RDF principles

nando 2024-02-06T11:48:19.297329Z

How do I ensure the data is RDF compliant? I’m a part-time programmer, part-time engineer, part-time sales lead, part-time everything …

nando 2024-02-06T11:51:22.519889Z

Is it just a question of triples? entity attribute value ? or are there some data types that are not compliant?

quoll 2024-02-06T11:52:43.600689Z

You can use vectors as IDs, which isn’t compliant. Most other things will work, with varying amounts of effort

quoll 2024-02-06T11:56:47.477209Z

eg, if you use a lot of keywords, you can map them to URIs

quoll 2024-02-06T11:57:27.250529Z

This is actually a good point… maybe I should build a tool to automate this for people 🤔

nando 2024-02-06T12:04:48.646889Z

The data in my case will be simple. Thanks for your help Paula. I appreciate it.

quoll 2024-02-06T12:19:07.724259Z

You’re welcome

quoll 2024-02-05T21:13:40.319539Z

On the other hand… I’m the only one maintaining it, and I’m doing 20 things at the same time right now. That makes me nervous.

quoll 2024-02-05T21:13:48.579139Z

But I try to respond to bugs quickly

quoll 2024-02-05T21:15:16.805639Z

In general, I’ve been surprised at how robust it has proven to be. So that’s good. And I should remember that no production system is perfect.

quoll 2024-02-05T21:16:30.666419Z

But with a couple of exceptions it’s almost entirely my personal code, and I feel like I’m letting my ego get out of control if I say that it’s great!

❤️ 2
✅ 1