PgDog: Un proxy inteligente para PostgreSQL con sharding

2025-04-15
PgDog: Un proxy inteligente para PostgreSQL con sharding

PgDog es un proxy de red que intercepta toda la comunicación entre clientes y servidores de PostgreSQL, comprende SQL para inferir los destinos de las consultas y no requiere cambios en el código de la aplicación. Analiza las consultas SQL, extrae las claves de particionamiento, utiliza la función hash de particionamiento integrada de PostgreSQL y enruta las consultas al shard de base de datos correcto. El artículo detalla cómo PgDog maneja los protocolos simples y extendidos, las consultas entre shards y las operaciones COPY distribuidas, permitiendo, en última instancia, el sharding de PostgreSQL y la velocidad de ingestión de datos a escala lineal.

Leer más
Desarrollo

¿Sharding vertical: una pesadilla?

2025-04-13
¿Sharding vertical: una pesadilla?

El autor relata su experiencia con el sharding vertical (sharding funcional), destacando sus inconvenientes. Si bien alivia la carga de la base de datos, fragmenta la aplicación, obligando a la capa de aplicación a gestionar las uniones y consultas que deberían ser manejadas por la base de datos. Esto aumenta significativamente la complejidad del código y la sobrecarga de mantenimiento, y reduce la disponibilidad del sistema. Con humor y una fórmula de tiempo de actividad, el autor muestra cómo el sharding vertical reduce la estabilidad del sistema, retrasando en última instancia las hojas de ruta del producto y desmoralizando a los ingenieros. El artículo concluye introduciendo PgDog, un proyecto de código abierto que busca solucionar el sharding de Postgres.

Leer más
Desarrollo

PgDog: Proyecto de fragmentación de código abierto para pgvector

2025-03-26
PgDog: Proyecto de fragmentación de código abierto para pgvector

Escalar pgvector más allá de un millón de incrustaciones se vuelve un desafío debido a la lenta construcción del índice. Esta publicación presenta PgDog, un proyecto de código abierto que fragmenta el índice pgvector. Aprovechando las características de agrupamiento inherentes de IVFFlat, PgDog distribuye las particiones del espacio vectorial en varias máquinas. Los vectores de consulta se enrutan a los fragmentos apropiados según la proximidad a los centroides, calculados usando scikit-learn, mejorando significativamente la velocidad de búsqueda y la recuperación. Los detalles de la implementación cubren el cálculo del centroide, una función de fragmentación personalizada y el análisis de SQL usando pg_query. Los experimentos demuestran la eficacia de PgDog, ofreciendo optimizaciones como consultas paralelas entre fragmentos y una asignación refinada de centroides. El trabajo futuro incluye admitir más algoritmos de distancia e instrucciones SIMD para cálculos más rápidos.

Leer más
Desarrollo fragmentación

Sharding de PostgreSQL: Una emocionante historia de escalabilidad 6x

2025-03-14
Sharding de PostgreSQL: Una emocionante historia de escalabilidad 6x

Una empresa se enfrentó a un desafío con la capacidad de escritura de PostgreSQL, manejando 100.000 usuarios por segundo. En lugar de migrar a NoSQL, el equipo de ingeniería optó por fragmentar su base de datos. Dividieron la base de datos en 6 instancias, sincronizando datos con replicación lógica. Esto implicó escribir código Ruby y Python para manejar claves de fragmentación y herramientas personalizadas para resolver problemas de secuencia. La expansión exitosa de 6x resultó en la creación de PgDog, un proyecto de código abierto para fragmentación automatizada de PostgreSQL. Esta historia destaca el ingenio y la determinación de los ingenieros, y la escalabilidad de PostgreSQL.

Leer más