HeadlinesBriefing favicon HeadlinesBriefing.com

PlanetScale Introduce Neki: Postgreses Fragmentados Escalables

Hacker News •
×

Neki ya está disponible en vista previa de la plataforma. Neki se basa en las lecciones que hemos aprendido en ocho años ejecutando algunas de las mayores clústeres MySQL fragmentados del mundo. Miles de cargas de trabajo de producción con millones de consultas por segundo para empresas donde incluso unos pocos segundos de tiempo de inactividad son un evento público.

Sabemos lo que significa alimentar las cargas de trabajo del nivel 0 más grandes del mundo. Cuando lanzamos Planet Scale Postgres hace un año y medio, sabíamos que necesitábamos hacer más. En ese tiempo, hemos incorporado a varios miles de clientes en Planet Scale, algunos de ellos rivalizando en tamaño con nuestros mayores clientes MySQL.

Una y otra vez, vimos a los equipos llegar al techo de una sola máquina con Postgres. Comprar metal les dio tiempo, pero con los clientes alcanzando el límite superior de lo que una sola máquina es capaz de hacer, descubrimos que no había una buena opción para entregárselos. Entra Neki. ¿Qué es Neki? Neki es Postgreses fragmentado de Planet Scale.

Te permite escalar un database de Postgres a través de muchas máquinas manteniendo Postgres real en cada fragmento. Tu aplicación se conecta a un router Neki sobre el protocolo wire estándar de Postgres, por lo que tus conductores ORMs existentes y cadenas de conexión siguen funcionando. Cada fragmento es un clúster completo de Postgres con un primario y al menos dos réplicas en 3 zonas de disponibilidad.

No hay motor de almacenamiento personalizado, por lo que las extensiones, el soporte SQL y el rendimiento se comportan como lo hace Postgres. Eliges la clave de fragmentación y controlas cómo se agrupan y distribuyen las tablas a través de un datos JSON topología. Los cambios de esquema, actualizaciones de versión, conmutación por fallo, importaciones y rearquitectado se ejecutan como flujos de trabajo integrados totalmente en línea.

También obtienes las funciones de Planet Scale en las que ya confías, incluyendo Información, recomendaciones de esquema, ramas y MCP. No tienes que fragmentar el primer día. Ejecutar Neki como un primario con réplicas, y cuando superas una máquina, rearquitectado es un flujo de trabajo que ejecutas contra el clúster que ya tienes. ¿Por qué Neki? Ya conoces los problemas que vienen con los databases de Postgres de crecimiento rápido: tablas demasiado grandes para vaciar o indexar sin afectar el tráfico, copias de seguridad que tardan horas, límites de conexión, ventanas de mantenimiento para cambios de esquema, wraparound de transacción y mucho más.

Puedes mudarte a una instancia más grande, pero eventualmente te quedas sin máquinas lo suficientemente grandes, y los problemas no se escalan linealmente a medida que añades más núcleos e IOPS. Las respuestas existentes cada una te piden renunciar a algo. La fragmentación a nivel de aplicación empuja el enrutamiento a tu código.

Las bases de datos distribuidas "compatibles" con Postgres ocultan la clave de fragmentación para ti, te quitan tus extensiones y añaden complejidad y latencia que se vuelve difícil de manejar y depurar. Así que construimos Neki con unos pocos principios, el más grande siendo: apegarse a Postgres, no trabajar alrededor de él, no fingirlo, ni alejarse de él. ¿Cómo funciona Neki? Arquitectamos Neki desde los principios fundamentales para Postgres, con Postgres real en cada fragmento. Hay cuatro partes móviles.

Neki routers Tu aplicación se conecta primero a un router Neki. El router habla el protocolo wire de Postgres por lo que tus conductores ORMs existentes siguen funcionando con una sola cadena de conexión. Un router tiene un analizador de consultas Postgres, un planificador de consultas distribuido, buffer de consultas y más.

Analiza tu consulta, construye un plan que decide qué fragmentos deberían ejecutarlo, envía el trabajo fuera, y combina los resultados de nuevo en un solo flujo. Los routers pueden escalar vertical y horizontalmente, por lo que ningún router único se convierte en el cuello de botella. Fragmentación y grupos de fragmentación Cada fragmento en Neki es Postgres real con 1 primario y al menos 2 réplicas, extendidos a través de zonas de disponibilidad.

No hay motor de almacenamiento modificado. Las extensiones, el soporte SQL y el rendimiento se comportan como lo hace Postgres, porque es Postgres. Los fragmentos se organizan en grupos de fragmentación, por lo que diferentes tablas o cargas de trabajo pueden vivir en diferentes conjuntos de fragmentos.

Cada fragmento usa un perfil de configuración que define su tamaño de instancia, cuenta de réplica, almacenamiento, parámetros de Postgres y extensiones, así puedes dimensionar cada grupo para i...