# Storage Model (/docs/runtime/storage-model)



Runtime uses more than one storage pattern because platform services do not all need the same kind of persistence.

Structured Operational State [#structured-operational-state]

**PostgreSQL** is used for structured, transactional, and queryable platform data.

This is the right fit for:

* service state
* metadata
* configuration data
* workflow and authorization persistence

**PgAdmin** complements this model by giving operators a direct management and inspection interface for PostgreSQL.

Object And Artifact Storage [#object-and-artifact-storage]

**MinIO** is used for object-style storage. **Rook-Ceph** is being introduced as its successor and runs alongside MinIO during the migration; it provides an S3-compatible RGW endpoint and CephFS for shared file storage.

This is the right fit for:

* files and binary assets
* platform artifacts
* buckets shared by workloads
* data that is not naturally relational

Why The Separation Matters [#why-the-separation-matters]

Using both models keeps the Runtime layer cleaner:

* relational storage is used where consistency and queries matter
* object storage is used where artifacts and large binary objects matter

This makes Runtime more flexible for the higher layers that build on top of it.
