In Materialize, a [cluster](/concepts/clusters/) is an isolated environment, similar to a virtual warehouse in Snowflake. When you create a cluster, you choose the size of its compute resource allocation based on the work you need the cluster to do, whether ingesting data from a source, computing always-up-to-date query results, serving results to external clients, or a combination. In this step, you'll create a dedicated cluster for ingesting source data from your PostgreSQL database. 1. In the [SQL Shell](https://console.materialize.com/), or your preferred SQL client connected to Materialize, use the [`CREATE CLUSTER`](/sql/create-cluster/) command to create the new cluster: ```mzsql CREATE CLUSTER ingest_postgres (SIZE = '50cc'); SET CLUSTER = ingest_postgres; ``` A cluster of [size](/sql/create-cluster/#size) `50cc` should be enough to accommodate multiple PostgreSQL sources, depending on the source characteristics (e.g., sources with [`ENVELOPE UPSERT`](/sql/create-source/#upsert-envelope) or [`ENVELOPE DEBEZIUM`](/sql/create-source/#debezium-envelope) will be more memory-intensive) and the upstream traffic patterns. You can readjust the size of the cluster at any time using the [`ALTER CLUSTER`](/sql/alter-cluster) command: ```mzsql ALTER CLUSTER SET ( SIZE = ); ```