[id="registry-persistence-options"]
= {registry} storage options

The main decision to make when deploying {registry} is which storage backend to use.

The following storage options are available:

.{registry} data storage options
[%header,cols="1,3"] 
|===
|Storage option
|Description

ifdef::apicurio-registry[]
|In-memory
|Data is stored in RAM on each {registry} node. This is the easiest deployment to use, but is not recommended for production environment. All data is lost when restarting {registry} with this storage option, which is suitable for a development environment only. 
endif::[]

|SQL database  
|Data is stored in a relational database, in this case PostgreSQL 12+. This is the recommended storage option in a production environment for performance, stability, and data management (backup/restore, and so on).

ifdef::apicurio-registry[]
|Apache Kafka 
endif::[]
ifdef::service-registry[]
|{kafka-streams} 
endif::[]
|Data is stored using Apache Kafka, with the help of a local SQL database on each node. This storage option is provided for production environments where database management expertise is not available, or where storage in Kafka is a specific requirement.
|===


ifdef::apicurio-registry[]
.Storage requiring installation
The following options require that the storage is already installed as a prerequisite:

* SQL (PostgreSQL)
* Apache Kafka
endif::[]

ifdef::service-registry[]
These options require that the storage is already installed as a prerequisite.
endif::[]

.Additional resources
* xref:assembly-operator-installation.adoc[]
