Postgres fue reescrito en Rust... y de alguna manera pasó todas las pruebas

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

스크립트

00:00:00Alguien recreó Postgres en Rust y, de alguna manera, la versión lanzada ahora supera las 46,000 consultas de regresión de Postgres.
00:00:08Funciona con PSQL normal. Incluso puede iniciar un directorio de datos existente de Postgres 18.3.
00:00:14Eso suena a un reemplazo listo para producción. No lo es.
00:00:17Pero la versión más emocionante de este proyecto aún ni siquiera se ha lanzado.
00:00:21¿Así que qué estamos viendo exactamente aquí? ¿Es este el futuro de Postgres o solo un experimento de IA?
00:00:30Ahora, para entender por qué esto importa, necesitas entender el problema.
00:00:36Postgres es una de las mejores bases de datos jamás creadas, admitámoslo.
00:00:40Pero también conlleva casi cuatro décadas de arquitectura y aproximadamente un millón de líneas de C.
00:00:46Cada conexión de cliente obtiene su propio proceso backend.
00:00:49Ese aislamiento es útil, pero también significa más sobrecarga de memoria, más presión para usar conexión pooling,
00:00:56y más dificultad para compartir estado a través de trabajo paralelo.
00:01:00PGRust toma un camino diferente.
00:01:02Mantener el comportamiento de Postgres, mantener la experiencia del cliente, mantener los formatos de disco, pero reemplazar el motor subyacente con Rust.
00:01:09Esto no es una extensión de Postgres.
00:01:11No es una funcionalidad añadida encima.
00:01:13Esto es completamente independiente, una implementación tratando de comportarse exactamente como Postgres.
00:01:18Estamos viendo muchas reescrituras en Rust ahora, justo como la que cubrimos el otro día sobre Bun reescribiendo toda su base de código con Rust.
00:01:25Lo pondré en algún lugar por aquí.
00:01:27Y ahora, todo esto suena bien, ¿pero realmente se siente como un Postgres real?
00:01:31Menos probado adecuadamente.
00:01:32Si disfrutas de herramientas de codificación que aceleran tu flujo de trabajo, asegúrate de suscribirte.
00:01:36Tenemos videos saliendo todo el tiempo.
00:01:38Ahora, voy a empezar con la imagen oficial de Docker, luego conectándome con un cliente PSQL completamente normal.
00:01:43Nada personalizado.
00:01:44Ya estoy dentro.
00:01:46Primero, revisemos la versión.
00:01:48Como puedes ver, se reporta a sí mismo como PGRust con la última versión.
00:01:53Ahora, puedo crear una tabla, insertar algunos datos y mirar un plan de consulta.
00:01:59Simplemente voy a ejecutar esto aquí mismo en mi terminal.
00:02:01Desde fuera, esto es completamente indistinguible de Postgres.
00:02:05Mismo cliente, mismo SQL, misma salida.
00:02:08Incluso puedes ver que el planificador de consultas eligió un escaneo de índice y nos dio estadísticas de ejecución reales.
00:02:14Ahora, para hacer esto un poco más interesante, insertemos 100,000 filas y ejecutemos otra consulta.
00:02:20Esto es solo una generación de 100K filas de datos.
00:02:23Vamos a colocarlo aquí.
00:02:25Ahora, ¿cuál es el punto de todo esto?
00:02:27Está bien, bueno, buena pregunta.
00:02:28Bueno, en esta versión temprana actual, no vamos a ver mejoras de velocidad dramáticas sobre el Postgres regular.
00:02:35Las mayores afirmaciones de rendimiento vienen de una versión de desarrollo no lanzada que cambia a un modelo de hilo por conexión.
00:02:43Sin embargo, todo esto prueba que esto no es solo una implementación parcial.
00:02:47Ha pasado el conjunto de pruebas de regresión oficial completo de Postgres, más de 46,000 consultas.
00:02:53Habla el protocolo real de cable y tiene un planificador de consultas funcional en el motor de almacenamiento.
00:02:59Este es un servidor de base de datos real.
00:03:01Simplemente está escrito en Rust.
00:03:03Así que, con esto progresando, podríamos ver algunas mejoras serias de rendimiento en el lado de la velocidad de las cosas.
00:03:08Entonces, ahora la pregunta es, ¿por qué no solo crear otra extensión de Postgres?
00:03:12Porque las extensiones se asientan sobre el núcleo original de Postgres.
00:03:16Un fork puede cambiar ese núcleo, pero luego hereda la misma arquitectura y el trabajo permanente de mantenerse al día con el Postgres ascendente.
00:03:25Tienes bases de datos como CockroachDB y YugaByte, pero son bases de datos distribuidas independientes.
00:03:31La compatibilidad exacta de sustitución no es su objetivo principal.
00:03:35PG Rust está intentando algo más.
00:03:37Usa el comportamiento real de Postgres como especificación.
00:03:41La versión actual apunta a Postgres 18.3.
00:03:44Pasa la suite de regresión por defecto y las pruebas de aislamiento, y es lo suficientemente compatible para iniciar desde un directorio de datos existente de Postgres 18.3.
00:03:53El experimento más grande aquí está ocurriendo en una versión separada no publicada, y esa versión supuestamente reemplaza el modelo de proceso por conexión de Postgres con un modelo de hilo por conexión.
00:04:05Con el modelo normal de Postgres, cada conexión obtiene su propio proceso.
00:04:09Con el nuevo modelo, cada conexión obtiene un hilo dentro del mismo proceso.
00:04:14Eso puede reducir la sobrecarga por conexión y hacer más fácil para diferentes partes de la base de datos compartir información realmente.
00:04:21Pero con todo esto, habrá un intercambio, ¿verdad?
00:04:24Los procesos separados también crean muros útiles entre las conexiones.
00:04:28Si un proceso falla, esa separación puede ayudar a contener el daño.
00:04:32Con hilos, una extensión insegura o un error de memoria podría afectar a más parte del servidor.
00:04:38Así que el hilo por conexión no es automáticamente mejor.
00:04:41Simplemente abre nuevas puertas, pero también puede eliminar algunas barandillas de seguridad.
00:04:45Luego está la segunda parte principal de la historia, la IA.
00:04:49Michael Malice y Jason Siebel usaron agentes de codificación intensivamente para acelerar la reescritura.
00:04:54La versión publicada sigue intencionalmente la estructura original de Postgres en muchos lugares.
00:04:59La versión no publicada es donde están intentando cambios arquitectónicos más grandes.
00:05:03Así que el experimento real no es simplemente, ¿puede Rust hacer Postgres más rápido?
00:05:08Es más como, ¿puede la IA hacer que una reescritura de este tamaño sea lo suficientemente asequible para que los desarrolladores puedan realmente repensar la arquitectura subyacente a las cosas?
00:05:16Porque la IA se usó intensivamente aquí.
00:05:19Ahora, ¿cambia esto las cosas?
00:05:20Bueno, podría.
00:05:21También es donde necesitamos reducir la velocidad un poco.
00:05:25La versión lanzada no está muy optimizada.
00:05:28Las mayores afirmaciones de rendimiento vienen de la versión de hilo por conexión no publicada, la cual en este momento no podemos probar del todo.
00:05:36Los desarrolladores reclaman aproximadamente un 50% mejor rendimiento en cargas de trabajo transaccionales.
00:05:40También reclaman alrededor de 300 veces el rendimiento de Postgres en cargas de trabajo analíticas.
00:05:45Esos números son enormes, pero el código detrás de esos resultados no está actualmente disponible para ningún tipo de inspección o benchmarking.
00:05:53Así que, por lo tanto, todavía hay mucha especulación.
00:05:57Parece que hay una buena división 50-50 aquí, al menos leyendo en línea, con preguntas que se ven como estas.
00:06:03Estos son solo los problemas aquí en GitHub.
00:06:05Luego incluso obtienes un problema como este, ¿verdad?
00:06:08Que es una pregunta completamente razonable.
00:06:10Mientras lees este problema, los desarrolladores parecen inflexibles sobre hacer que esto funcione realmente.
00:06:15Así que, no tenemos estadísticas reales todavía.
00:06:17Eso no significa automáticamente que los números sean falsos, sin embargo.
00:06:20Solo significa que deberíamos tratarlos como afirmaciones prometedoras, no como hechos establecidos.
00:06:24Y honestamente, el multiplicador exacto podría no ser la parte más importante.
00:06:28No necesitamos cambiar todo el proyecto Postgres antes de saber si una idea funciona realmente o no.
00:06:34Esa libertad podría ser más valiosa que cualquier benchmarking individual que podamos obtener.
00:06:38Ahora, la reacción de los desarrolladores con todas estas reescrituras en Rust, incluso en este PG Rust, ha sido masiva.
00:06:44La discusión principal de Hacker News pasó cientos de puntos y comentarios, pero de nuevo, la respuesta está dividida.
00:06:50Ambos lados están haciendo buenos puntos.
00:06:52Primero, pasar cada consulta de regresión es un logro serio.
00:06:56Muchos proyectos dicen ser compatibles con Postgres.
00:06:59Esa frase puede significar casi cualquier cosa.
00:07:01PG Rust tiene un objetivo medible.
00:07:04Las pruebas reales de Postgres son el juez de esto.
00:07:07Y la velocidad de esta reescritura sugiere que los agentes de codificación pueden cambiar completamente el costo de grandes experimentos de infraestructura.
00:07:13Ideas que alguna vez parecieron demasiado costosas de intentar ahora aparentemente se están volviendo más posibles.
00:07:19Ahora, por el otro lado de las cosas, pasar las pruebas de regresión no es lo mismo que ganar la confianza de producción.
00:07:24Esas pruebas no reemplazan años de recuperación de fallos y pruebas de replicación, o bases de datos que funcionan durante meses sin detenerse.
00:07:31Un proyecto puede pasar cada prueba conocida y aun así fallar en una situación que nadie pensó en probar.
00:07:37Generar cientos de miles de líneas de código es un desafío.
00:07:42La compatibilidad con extensiones es otra brecha importante.
00:07:45Ahora, ¿deberías reemplazar tu clúster de Postgres de producción con PG Rust?
00:07:49No, absolutamente no.
00:07:51El proyecto en sí mismo no está listo para producción.
00:07:53Está declarado.
00:07:54No está totalmente optimizado.
00:07:56En áreas importantes de compatibilidad, incluyendo el ecosistema de extensiones, todavía están sin terminar.
00:08:02Pero, ¿deberías probarlo?
00:08:03Claro.
00:08:03Si trabajas con bases de datos, Rust, ejecución de consultas, pruebas de compatibilidad o desarrollo de IA, ¿por qué no intentarlo?
00:08:10Ejecuta la imagen de Docker, prueba tu biblioteca cliente contra ella, lee la fuente y mira qué sucede.
00:08:16Así que, deja tu veredicto en los comentarios.
00:08:18¿Hacia dónde va este proyecto?
00:08:20¿Vamos a empezar a reescribir más en Rust?
00:08:21Vamos a averiguarlo.
00:08:23Si disfrutas de consejos y trucos de codificación como este, asegúrate de suscribirte al canal BetterStack.
00:08:26Nos vemos en otro video.

핵심 요약

PGRust es una implementación independiente de Postgres escrita en Rust que logra compatibilidad funcional a nivel de pruebas de regresión, demostrando cómo la IA puede acelerar la reescritura de infraestructuras complejas para experimentar con cambios arquitectónicos radicales como el modelo de hilos por conexión.

하이라이트

  • PGRust supera las 46,000 consultas de regresión del conjunto de pruebas oficial de Postgres.

  • La implementación actual permite iniciar un directorio de datos existente de Postgres 18.3.

  • Una versión de desarrollo en pruebas implementa un modelo de hilo por conexión en lugar del modelo de proceso por conexión original de Postgres.

  • Los desarrolladores reclaman un 50% de mejora en rendimiento para cargas de trabajo transaccionales y un rendimiento 300 veces superior en cargas analíticas en la versión no publicada.

  • El proyecto utilizó agentes de codificación de forma intensiva para acelerar la reescritura de la base de código.

타임라인

Arquitectura y objetivos de PGRust

  • PGRust recrea el comportamiento, la experiencia del cliente y los formatos de disco de Postgres usando Rust.
  • La arquitectura actual de Postgres sufre limitaciones por su modelo de proceso por conexión, lo cual incrementa la carga de memoria y dificulta el uso de conexión pooling.
  • El proyecto no es una extensión, sino una implementación independiente que busca comportarse exactamente como Postgres.

Postgres cuenta con cerca de cuatro décadas de arquitectura basada en C, donde cada conexión de cliente requiere su propio proceso backend. PGRust busca reemplazar este motor subyacente manteniendo la compatibilidad con el cliente PSQL normal y la estructura de datos existente, permitiendo incluso cargar directorios de datos de la versión 18.3.

Pruebas de compatibilidad y rendimiento

  • PGRust supera la totalidad de las 46,000 consultas de la suite de regresión oficial de Postgres.
  • El planificador de consultas funciona dentro del motor de almacenamiento y genera las mismas estadísticas que el Postgres original.
  • Un modelo experimental de hilo por conexión busca reducir la sobrecarga, aunque introduce riesgos de estabilidad al compartir memoria en el mismo proceso.

Desde la perspectiva del usuario y del cliente PSQL, PGRust es indistinguible de la base de datos original. La versión en desarrollo utiliza un modelo de hilo por conexión, lo que permitiría compartir información más fácilmente entre distintas partes de la base, a costa de reducir el aislamiento de procesos que antes contenía posibles errores de memoria.

IA en el desarrollo y viabilidad a futuro

  • El uso masivo de agentes de codificación permitió reducir el costo de realizar cambios arquitectónicos de gran escala.
  • Los resultados de rendimiento para la versión no publicada aún no están disponibles para inspección pública o benchmarking independiente.
  • El proyecto no está listo para entornos de producción, especialmente por la falta de soporte completo en el ecosistema de extensiones.

La reescritura demuestra que la IA puede hacer asequible la experimentación en proyectos de infraestructura masiva. Aunque las promesas de rendimiento son significativas, el proyecto actualmente carece de la validación a largo plazo necesaria para reemplazar a Postgres en producción. La comunidad mantiene una postura dividida, valorando el logro técnico de pasar las pruebas de regresión mientras se advierte sobre la inmadurez del código.

커뮤니티 글

모든 글 보기