I feel particularly silly because I've been writing Clojure professionally for many years.
I feel particularly silly because I've been writing Clojure professionally for many years.
Seems to me this is a combination of Datomic and Amazon Lambda to deploy programs that can use Datomic without all surrounding deployment problems.
I could be totally off base here as I have no real experience with clojure, but this intro sentence threw me off right away.
>Ions let you develop applications for the cloud by deploying your code to a running Datomic cluster
What is an ion? What is a "datomic cluster"? Are these terms just new jargon for what is essentially a deployment system? If they're a clojure thing then ok, but a quick search makes me think they're not. I understand software and I understand deployment. I read the rest of the page and I feel like I would have to problem understanding what this really is if they cut down on the jargon.
The company behind Datomic (Cognitect, which also develops the Clojure language) recently started offering the database as a cloud service. This was something Datomic users had wanted for a long time, but one problem with the new service was that one of Datomic's primary features, i.e. having the database reside in memory with your application, was missing.
Ions is a new service that addresses this problem by allowing you to deploy your app to the same VMs that are hosting Datomic in the cloud (a "datomic cluster"). It's basically PaaS for Datomic-backed applications.
I'm a longtime Clojure user and I had some trouble understanding all this as well, so I agree that could do a better job with presentation.
I'm not sure I follow - are you saying it is desired to have an entire database also in memory? You don't probably mean that, but I thought a key feature of databases is for them to be your offline storage so things don't need to be in memory. I wouldn't be able to fit the contents of my SQL databases into memory on any machine I own.
You want the illusion that your database is entirely in memory, just as want the illusion that all your memory is in your L1 cache.
What does that mean?
And what kind of actual memory usage should people expect with a "big" database?
Datomic is designed for data sets larger than memory, and also to do a good job caching working sets that do fit in memory.
Of course. But you didn't answer my question.
Let's say someone has an application with 100GB of data in Datomic.
What kind of memory usage should he expect for the "peer" process?
See also https://docs.datomic.com/cloud/operation/caching.html.
I don't want illusions. When it comes to databases I want simple and predictable.
The data is modeled as a collection of (entity,property,values,txn) tuples (with schema on property). They are stored in a log and a few ordered sets (indexes) that are structured somewhat like 2-layer btrees with large pages. These pages and the tail of the log are loaded as needed while running queries. The nature of the data model also gets you point in time queries and queries across time (e.g. all previous values of a property).
(Which is natural if you consider the retarded development of disk/ram vs processing power; cf the memes of "disk is the new tape" "ram is the new disk")
Ah, that helps (I guess my search was a bit _too_ quick). So Ion is really the only jargon there. I'm not even going to delve deeper as I just don't know the ecosystem at all. I was hesitant to even comment in the first place. Thanks.
Datomic is a database consists of multiple services so you can deploy it on one machine or multiple. I called it a cluster because on AWS of course the idea is to deploy it on multiple.
Amazon Lambda is a way to deploy code without telling Amazon about the underlying machines/VMs. Ion is a way to deploy Clojure and Datomic without knowing anything about the underlying machines or VMs.
Are you also bewildered by "Postgres cluster" or "MongoDB cluster? Why isn't it your responsibility to spend the 10 seconds to see that Datomic is the name of another database?
and a reference https://docs.datomic.com/cloud/ions/ions-reference.html
This was a walk through of the mechanics. The TL;DR is if you are comfortable enough in AWS and Clojure implementing your system in a scalable and simple and wholistic way just got a bunch more accessibile.