Sobre el proyecto

Citus es una extensión de PostgreSQL que transforma una única base de datos Postgres en una distribuida, permitiéndote escalar horizontalmente a través de múltiples nodos mientras sigues utilizando las herramientas y extensiones estándar de PostgreSQL. Capacidades principales descritas en el README: - Tablas distribuidas: las tablas se fragmentan en un clúster de nodos PostgreSQL, combinando CPU, memoria, almacenamiento y capacidad de E/S. La función create_distributed_table fragmenta una tabla localmente o a través de nodos trabajadores. - Tablas de referencia: se replican en todos los nodos para soportar uniones y claves foráneas que no incluyen la columna de distribución, y para mejorar el rendimiento de lectura. - Motor de consultas distribuidas: enruta y paraleliza SELECT, DML y otras operaciones a través del clúster. Las consultas filtradas por la columna de distribución se enrutan a un único trabajador; otras consultas se paralelizan entre fragmentos. - Almacenamiento columnar: un método de acceso a tablas USING columnar que comprime datos, acelera los escaneos y soporta proyecciones rápidas, utilizable en tablas regulares o distribuidas. Las actualizaciones, eliminaciones y claves foráneas no se soportan en tablas columnares; se recomienda la carga por lotes mediante COPY o INSERT..SELECT. - Consulta desde cualquier nodo: las consultas distribuidas pueden emitirse desde cualquier nodo del clúster, mientras que los cambios de esquema y la administración del clúster siguen pasando por el coordinador. - Fragmentación basada en esquemas (desde Citus 12.0): un modelo de base de datos compartida y esquemas separados donde cada esquema actúa como un fragmento lógico, útil para aplicaciones multiinquilino y microservicios sin cambios en las consultas. - create_distributed_table_concurrently: convierte una tabla existente en distribuida sin bloquear lecturas y escrituras. - Co-ubicación: las tablas distribuidas que comparten una columna de distribución pueden co-ubicarse para permitir uniones distribuidas eficientes, claves foráneas, INSERT..SELECT, procedimientos almacenados y transacciones distribuidas. Las opciones de despliegue incluyen un servicio gestionado en Azure (Clústeres Elásticos en Azure Database for PostgreSQL Flexible Server), una imagen Docker (citusdata/citus) y paquetes locales para Ubuntu/Debian y Red Hat. Los clústeres multinodo se construyen añadiendo nodos trabajadores y reequilibrando fragmentos. La alta disponibilidad se soporta mediante Patroni 3.0, que tiene soporte de primera clase para Citus. El README posiciona a Citus para aplicaciones que superan un único nodo PostgreSQL y para cargas de trabajo que necesitan características de PostgreSQL a escala, como SaaS multiinquilino, paneles de análisis en tiempo real, datos de series temporales y IoT. Se referencian documentación, guías de casos de uso y un artículo de SIGMOD '21 para más detalle.