Database
The Terminus system provides three most popular data storage cluster for all APPs, covering RDS
, NoSQL
, and Cache
data storage use cases.
RDS
The system has deployed PostgreSQL and provides two types of databases.
- Standalone PostgreSQL, providing the most commonly used
RDS
database layer functions. - Distributed PostgreSQL extension, powered by Citus. Provides the ability to horizontally scale the database.
When setting up a PostgreSQL database, you can specify the type of database to be used in TerminusManifest.yaml.
middleware:
postgres:
username: postgres
databases:
- name: db
distributed: true # Whether the database is distributed in the cluster.
If you use Citus, Terminus will automatically shard the database tables and perform rebalancing during the horizontal scaling of PostgreSQL replicas.
NoSQL
The NoSQL cluster is not deployed by default in Terminus, but it can be easily installed from the Market. To set up a NoSQL cluster, the administrator needs to install the MongoDB middleware. Once installed, the Percona Operator for MongoDB automatically manages the MongoDB cluster. Users can then horizontally scale MongoDB cluster replicas, as well as perform backup and restore operations on databases.
You can specify detailed configuration for MongoDB in TerminusManifest.yaml as follows:
middleware:
mongodb:
username: mongodb
databases:
- name: db0
- name: db1
options:
dependencies:
- name: terminus
type: system
version: '>=1.6.0-0'
- name: mongodb
version: ">=6.0.0-0"
type: middleware
Cache
In terms of the Cache cluster, Terminus uses Redis Cluster. The cluster is managed by a customized Redis Cluster Operator to achieve cloud nativeness. It enables us to scale replicas horizontally in a convenient and effective manner.
To ensure data isolation between users and apps in the Redis cluster, the Terminus system has added a Redis cluster proxy. It isolates data based on the namespace
. This operation is transparent, meaning app developers typically do not need to be aware of it.
Additionally, this proxy simplifies the process of connecting to clusters. It eliminates the need to switch from a standalone Redis Client to a Redis Cluster client in the app, thus simplifying app code modifications.
middleware:
redis:
password: password
namespace: db0
NOTE
Since Terminus uses the Redis Cluster version, developers need to understand the usage restrictions of Redis Cluster in detail when using it.