0Pricing
SQL Academy · Lección

Citus y Postgres distribuido

Utilice Citus para convertir Postgres en una base de datos distribuida, con tablas colocadas conjuntamente y tablas de referencia.

Citus y Postgres distribuido es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué es Citus?

Citus es una extensión de PostgreSQL que convierte un clúster de servidores PG en una base de datos distribuida. Puede ejecutar SELECT/INSERT contra el coordinador; Citus los dirige a los shards de worker adecuados de forma transparente.

Arquitectura

Hay dos roles:

  • Coordinador: recibe las consultas, contiene los metadatos del clúster y enruta o agrega los resultados
  • Workers: contienen los datos de los shards y ejecutan las consultas reales

Configuración

Instale la extensión en el coordinador y en los workers; después, registre los workers:

CREATE EXTENSION citus;

-- On the coordinator, add worker nodes:
SELECT * FROM master_add_node('worker1', 5432);
SELECT * FROM master_add_node('worker2', 5432);

Tablas distribuidas

Marque una tabla como distribuida mediante una columna:

CREATE TABLE orders (
  id BIGSERIAL,
  user_id BIGINT NOT NULL,
  total NUMERIC(10,2),
  ...
);

SELECT create_distributed_table('orders', 'user_id');
-- Citus splits orders into shards by hash(user_id).

Tablas de referencia

Tablas pequeñas replicadas en cada worker, para mantener los JOIN locales:

CREATE TABLE countries (id INT, name TEXT);
SELECT create_reference_table('countries');
-- Every worker has a full copy of countries.

Ubicación conjunta

Las tablas con la misma columna de distribución están ubicadas conjuntamente: las filas de un user_id determinado siempre residen en el mismo worker. Los JOIN basados en user_id permanecen locales:

SELECT create_distributed_table('orders', 'user_id');
SELECT create_distributed_table('events', 'user_id', colocate_with => 'orders');

Consultas de un solo tenant

Citus dirige las consultas filtradas por user_id al worker adecuado; son rápidas:

SELECT * FROM orders WHERE user_id = 42;
-- Goes to one worker shard, returns in milliseconds.

Agregaciones distribuidas

Citus paraleliza COUNT/SUM entre los workers:

SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Each worker computes locally; coordinator concatenates.

Reequilibrado

Añada un worker y reequilibre los shards:

SELECT * FROM citus_add_node('worker3', 5432);
SELECT * FROM rebalance_table_shards('orders');
-- Citus moves some shards onto the new worker.

Limitaciones

  • Las transacciones entre tablas que no están ubicadas conjuntamente tienen limitaciones
  • Algunas funciones de Postgres no se aplican a las tablas distribuidas
  • Los cambios de esquema se propagan, pero requieren coordinación

Citus Cloud / Azure

Microsoft adquirió Citus; ahora forma parte de Azure Database for PostgreSQL — Hyperscale (Citus). También sigue siendo de código abierto.

Alternativas

  • YugabyteDB: distribuido y compatible con PG
  • CockroachDB: distribuido y compatible con el protocolo de PostgreSQL
  • Pgvector / TimescaleDB: especializaciones para un solo nodo

Cuándo elegir Citus

SaaS multiinquilino en el que las consultas de cada tenant están aisladas. Series temporales particionadas por tenant y tiempo. Análisis con agregación paralela.

Resumen

Citus convierte Postgres en una base de datos distribuida.

  • Coordinador y workers
  • Distribución por columna; ubicación conjunta para JOIN locales
  • Tablas de referencia para dimensiones compartidas
  • Mejor aplicación: SaaS multiinquilino

Comprobación rápida

¿Qué ventaja ofrece ubicar conjuntamente dos tablas distribuidas mediante la misma clave en Citus?

Preguntas frecuentes

¿La lección «Citus y Postgres distribuido» es gratis?

Sí — el texto completo de «Citus y Postgres distribuido» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Citus y Postgres distribuido»?

Utilice Citus para convertir Postgres en una base de datos distribuida, con tablas colocadas conjuntamente y tablas de referencia. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Citus y Postgres distribuido»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Estrategias de fragmentación: rango, hash y directorio
  2. Consultas entre fragmentos: el problema difícil
  3. Citus y Postgres distribuido
  4. Cuándo NO fragmentar
← Volver a SQL Academy