Database Partition Mode
Smile CDR has supported partitioning an RDBMS since the 2020.05.R01, although this support has had some limitations. The partitioning feature uses two database columns present on every resource table in the database, PARTITION_ID
and PARTITION_DATE
, to indicate which partition a given resource is in.
This column however is not a part of the primary key of the affected tables, and is not always used in SQL as an expression, meaning that this feature is often inadequate to fully take advantage of native RDBMS partitioning/sharding techniques. See the Database Partition Mode for more background.
RDBMS Platform | Variant | Suitable |
---|---|---|
Oracle SQL Server (MSSQL) MySQL MariaDB |
Not tested | |
Postgresql | Standard Deployment (includes managed-service/PaaS offerings such as AWS Aurora Postgres Azure Database for Postgres). | Supported |
Postgresql | Citus Database Extension (includes Azure Cosmos DB for PostgreSQL) | Supported (See Citus section below) |
Smile CDR can be deployed to a Citus cluster, including a managed Azure Cosmos DB for PostgreSQL on the Azure cloud when Database Partition Mode is enabled.
Using Smile CDR in this environment requires a database schema with several modifications. To install this schema, set Database Partition Mode Initial Schema to POSTGRES_CITUS
.
Due to limitations that Citus imposes on database actions, it is not currently possible to perform chained searches or sorts out of the box. This means that both of the following queries will fail when performed on a Citus-backed deployment:
If you require support for this type of search on a Citus cluster, you can use Uplifted Refchains to define a SearchParameter which indexes the entire chain. This technique works for both of the examples above.
You are about to leave the Smile Digital Health documentation and navigate to the Open Source HAPI-FHIR Documentation.