datomic

Tobias Sjögren 2025-09-26T10:46:58.107959Z

I’m working on some text for my Datomic-inspired framework (implemented in FileMaker): > I reject the separation of data and metadata. Instead, I move metadata - also called meaning or semantics - from being defined by table names and field names into the data itself, so that all data (including metadata) resides in one unified place (plain database data) rather than being scattered across schema, storage, and data. Do you think this is a valid core principle ?

respatialized 2025-09-26T15:03:36.116579Z

<https://en.wikipedia.org/wiki/Codd%27s_12_rules> You're in good company :slightly_smiling_face: &gt; *Rule 4:* _Dynamic <https://en.wikipedia.org/wiki/Online|online>_ _<https://en.wikipedia.org/wiki/Database_catalog|catalog> based on the relational model_: &gt; The data base description is represented at the logical level in the same way as ordinary data, so that authorized users can apply the same relational language to its interrogation as they apply to the regular data.

👍 1
Filipe Silva 2025-09-26T11:35:53.844799Z

Is there a database count limit, or some nasty issues that come up when a single transactor is used with like 10k databases? I'm asking in the context of multi tenancy like in rails now https://youtu.be/Sc4FJ0EZTAg?si=Q_G54Xxf4-u-Lf6P

maxweber 2025-10-04T17:22:57.423359Z

@filipematossilva we use a cell-based architecture where we run around 100 customers per dedicated server. Each server runs its own Datomic transactor pair. Sqlite is used as storage. We also run one Docker container per customer. Every customer has its own Datomic database. If you have a multi-tenant Clojure web application you can probably run way more Datomic databases per cell / server.

Filipe Silva 2025-10-04T17:50:04.722579Z

@maxweber so 1 sqlite db - 1 transactor pair - 100 dbs, right? how have you been finding sqlite for this case btw?

2025-09-29T05:46:09.538589Z

There’s some prior discussions about this in the datomic forum, but at least one limitation I know of is that the per-database schema is held in memory

jaret 2025-09-29T17:47:37.416099Z

@filipematossilva for pro see: https://docs.datomic.com/operation/capacity.html#multiple-databases. The general gist is current datomic Pro it is not recommended to run multiple large and/or mission critical databases on a single transactor pair. Because of competing resources, but mostly the process must hold a sum of every databases memory index.

👍 2
jaret 2025-09-29T17:53:37.151419Z

For Cloud we support multi tenancy quite nicely but there is a catalog name limit that you would encounter if you created around 10,000 datomic level databases on the same Cloud system. I am not certain on the precise number but I believe it might be 10,000. Confirming.

jaret 2025-09-29T17:57:23.999639Z

And usual caveat applied that in Cloud there are lots of scaling considerations based on the specifics your thousands of DBs and their usage.

Filipe Silva 2025-09-29T18:15:00.751459Z

Hey thanks for taking the time to respond! I was thinking pro more than cloud, and knowing about that detail makes a lot of sense why it's hard. Still sounds a bit like it'd be similar to a single large db of similar total memory index size.

2025-09-29T18:50:52.969709Z

also increases startup time I think

👍 1
maxweber 2025-10-05T23:59:52.889179Z

@filipematossilva yes, 1 sqlite db - 1 transactor pair - 100 dbs. No problems with Sqlite so far. However, I would prefer to have one Sqlite db file per customer, since it would make migrating one customer to another cell more straight-forward, then to use the Datomic backup mechanism for it.