HeadlinesBriefing favicon HeadlinesBriefing.com

PlanetScale Introduit Neki : Postgres Fragmenté Evolutif

Hacker News •
×

Neki désormais disponible en aperçu de plateforme. Neki créé à partir des leçons apprises au cours de huit ans d'exécution de certaines des plus grandes clusters MySQL fragmentés au monde. Des milliers de charges de travail de production avec des millions de requêtes par seconde pour des entreprises où même quelques secondes d'indisponibilité sont un événement public.

Nous savons ce que cela signifie d'alimenter les charges de travail tier 0 les plus importantes au monde. Lorsque nous avons lancé Planet Scale Postgres il y a un an et demi, nous savions que nous devions faire plus. Au cours de cette période, nous avons onboardé plusieurs milliers de clients sur Planet Scale, certains d'entre eux rivalisant en taille avec nos plus grands clients MySQL.

Time and time again, nous avons vu les équipes atteindre le plafond d'une seule machine avec Postgres. L'achat de métal leur a donné du temps, mais avec les clients atteignant la limite supérieure d'une seule machine est capable de faire, nous avons découvert qu'il n'y avait pas de bonne option à leur donner. Entrez Neki.

Qu'est-ce que Neki ? Neki est Postgres fragmenté de Planet Scale. Cela vous permet d'évoluer une base de données Postgres à travers de nombreuses machines tout en gardant Postgres réel sur chaque fragment. Votre application se connecte à un routeur Neki via le protocole wire standard Postgres, de sorte que vos conducteurs ORMs existants et vos chaînes de connexion continuent de fonctionner.

Chaque fragment est un cluster Postgres complet avec un primaire et au moins deux réplicas sur 3 zones de disponibilité. Il n'y a pas d'engin de stockage personnalisé, de sorte que les extensions, le support SQL et les performances se comportent comme le fait Postgres. Vous choisissez la clé de fractionnement et contrôlez comment les tables sont regroupées et distribuées via une topologie de données JSON.

Les changements de schéma, les mises à jour de version, les basculements, les importations et le réacheminement s'exécutent comme des workflows intégrés entièrement en ligne. Vous bénéficiez également des fonctionnalités Planet Scale sur lesquelles vous comptez déjà, notamment Insights, recommandations de schéma, branches et MCP. Vous n'avez pas besoin de fractionner dès le premier jour.

Exécutez Neki comme un primaire avec des réplicas, et lorsque vous dépassez une machine, le réacheminement est un workflow que vous exécutez contre le cluster que vous avez déjà. Pourquoi Neki ? Vous connaissez déjà les problèmes qui accompagnent les bases de données Postgres à croissance rapide : tables trop grandes pour être vidées ou indexées sans affecter le trafic, des sauvegardes qui prennent des heures, des limites de connexion, des fenêtres de maintenance pour les changements de schéma, le wraparound de transaction et bien plus encore. Vous pouvez passer à une instance plus grande, mais finalement vous manquerez de machines assez grandes, et les problèmes ne s'échelonnent pas linéairement à mesure que vous ajoutez plus de cœurs et de IOPS.

Les réponses existantes chacune vous demandent de renoncer à quelque chose. Le fractionnement au niveau de l'application pousse le routage dans votre code. Les bases de données "compatibles" Postgres distribuées cachent la clé de fractionnement à vous, enlèvent vos extensions, et ajoutent complexité et latence qui deviennent difficiles à gérer et à déboguer.

Alors nous avons construit Neki avec quelques principes, le plus important étant : restez avec Postgres, ne travaillez pas autour de lui, ne le faussez pas, ne vous éloignez pas de lui. Comment fonctionne Neki ? Nous avons architecturé Neki depuis les principes fondamentaux pour Postgres, avec Postgres réel sur chaque fragment. Il y a quatre parties mobiles.

Neki routers Votre application se connecte d'abord à un routeur Neki. Le routeur parle le protocole wire Postgres de sorte que vos conducteurs ORMs existants continuent de fonctionner avec une seule chaîne de connexion. Un routeur possède un analyseur de requêtes Postgres, un planificateur de requêtes distribué, un buffer de requêtes et plus encore.

Il analyse votre requête, construit un plan qui décide quels fragments doivent l'exécuter, envoie le travail dehors, et combine les résultats de retour dans un seul flux. Les routeurs peuvent évoluer verticalement et horizontalement, de sorte qu'aucun routeur unique ne devienne un goulot de bouteille. Fractionnement et groupes de fragments Chaque fragment dans Neki est Postgres réel avec 1 primaire et au moins 2 réplicas, répartis sur 3 zones de disponibilité.

Il n'y a pas d'engin de stockage modifié. Les extensions, le support SQL et les performances se comportent comme Postgres le fait, car c'est Postgres. Les fragments sont organisés en groupes de fragments, de sorte que différentes tables ou charges de travail peuvent vivre sur différents ensembles de fragments.

Chaque fragment utilise un profil de configuration qui définit sa taille d'instance, compte de réplicas, stockage, paramètres Postgres et extensions, de sorte que vous puissiez dimensionner chaque groupe pour i...