I have a question about Datomic Pro. In the transactor.properties, there is a property called aws-dynamodb-table, which seems to be required (at least with protocol=ddb).
I'd like to use the same transactor to read/write multiple DynamoDB tables. Is this possible, or would I have to run multiple transactors on different ports?
Hi Brandon, can you help me understand the use case?
I have several apps hosted on AWS, and am self-hosting a Datomic transactor. Each app points to a different DynamoDB table and I'd like to just use one transactor to service all the apps, rather than one transactor per app.
Right, I think you're describing what you'd like, but I'm trying to understand why you desire that capability. Today, Datomic transactors using DDB are 1:1 w/ a DDB Table, and many Datomic databases can be served via that transactor +ddb-table pair.
I see. So the value here is really just resource consolidation. Rather than allocating CPU/RAM per transactor, I'd prefer to just lump it together and scale that one transactor up/down as needed.
many Datomic databases can be served via that transactor +ddb-table pair. Could you elaborate?
You can invoke d/create-database multiple times for app-foo, app-bar, app-baz and have distinct applications each served by that same transactor with their own independent transaction update pipeline + shared indexer
I wouldn't add hundreds or thousands of databases to the same transactor, but if you want you can definitely run a few small-medium sized apps out of the same transactor for quite a while.
Ahh right. Okay, yeah that did come to mind, but wasn't sure what limitations that came with.
So then, suppose I did go the route of using one DynamoDB table for multiple databases: app-foo, app-bar, and app-baz. Would I be able to deny the foo application access to app-bar and app-baz databases while providing it permission to the app-foo database?
No, you would not.
Ok, so pros and cons here. This was very helpful. Thanks for taking the time!
Sure thing!