In the production topology, a Datomic Cloud system scales horizontally in three ways:
- arbitrary and automatic scaling of durable storage
- user-initiated scaling to handle additional databases
- elastic autoscaling for query and applications
Datomic stores database data in three places:
All three of these storages scale automatically, and do not require any configruation.
Transactions are distributed across the primary compute group. If you are writing to a large number of different databases, you can increase the size of the primary compute group by explicitly expanding its Auto Scaling Group.
You should not enable AWS Auto Scaling on the primary compute group. If you need autoscaling for query, see the next section.
Larger systems consist of a primary compute group for transactions, plus one or more query groups for various read loads and applications. This provides two forms of horizontal read scaling:
- You can explicitly start and stop query groups, and then route particular loads to them. This allows you to make after-the-fact decisions to adapt to new usage patterns. For example, you might have a query group dedicated to a range of data, to a high priority consumer, or to a single hot query. Note that your data is never partitioned, and no up-front decisions need to me made.
- Within a query group, you can set an elastic autoscaling trigger so that the group grows and shrinks based on load.
Note that when you are using ions, this elastic auto scaling applies to your entire application.