rqlite abrió el camino: doce años de SQLite distribuido
Twelve Years of Distributed SQLite
Philip O'Toole recorre la historia de rqlite, el primer sistema open source que combinó Raft y SQLite, publicado en 2014. Desde entonces, ocho equipos reinventaron la idea con distintos enfoques: consenso (rqlite, dqlite), streaming del WAL (Litestream) y CRDTs (cr-sqlite). El dinero, en cambio, fue a las plataformas: Turso, adquirida por Supabase, y D1 de Cloudflare. rqlite sigue siendo gratuito y autoalojado.
Pero vale la pena registrar que la idea fue open source durante ocho años antes de que alguien la vendiera.
- mmnfrdmcx
Como alguien a quien le encantaba sqlite y su simplicidad, la verdad es que con agentes me está resultando extremadamente fácil gestionar postgres y es realmente agradable tener todas las características SQL de postgres -- sqlite es bastante limitante en muchos aspectos de SQL. Así que si estás considerando sqlite remoto y todo eso, parece un momento mejor que nunca para simplemente usar un servidor de base de datos.
Por supuesto, sqlite es increíble para herramientas locales, etc.
- AgentME
La comparación entre rqlite y Litestream fue interesante. (rqlite usa un algoritmo de consenso entre nodos para mantenerlos sincronizados y permitir cambiar el nodo primario, mientras que Litestream simplemente se sincroniza a S3 para que otro nodo pueda tomar el relevo con los datos desde allí.)
Esperaba plenamente que el artículo entrara pronto en D1 y mencionara que eso es más o menos la misma relación entre Cloudflare Durable Objects (en lo que se basa D1) y celld, una reimplementación de código abierto de Cloudflare Durable Objects que escribe en S3. Pero luego el artículo trata a D1 con un desinterés muy repentino y no llega a ninguna parte con ello.
- piterrro
Habiendo usado D1 en producción, no es muy fiable. Hubo un comentario en HN de uno de los desarrolladores de D1 [1] diciendo que D1 es un wrapper de sql sobre durable objects que imita la naturaleza distribuida de sqlite.
> Te voy a contar un secreto sucio:
Casi siempre es mejor usar el almacenamiento de Durable Objects, en lugar de D1. Incluso si solo quieres una única base de datos global, es mejor implementarla como un Durable Object singleton, que usando D1. Porque eso es todo lo que D1 es en realidad: un Durable Object singleton que expone una API a su base de datos SQLite. Es solo un wrapper.
- vikrantrathore
Es curioso, cuando estaba leyendo el artículo del parlamento a tiempo parcial (paxos) y mientras aprendía el lenguaje zig y odin creé una librería paxos pura y luego la primera aplicación para esa librería fue construir un sqlite multi-maestro. Los dos enfoques que tomé son muy diferentes; en el caso de zig construí zaxonlite (https://github.com/insanai/zaxonlite) y tengo un benchmark sobre él que incluye rqlite. Usa replicación WAL como estrategia. El segundo intento que probé en odin es sqlodin (https://github.com/insanai/sqlodin); en este el sistema no usa WAL sino que ejecuta la consulta sql en cada nodo, como resultado un subconjunto de consultas sql en sqlite no están soportadas.
- klamann
Si no obtienes ningún placer de escribir sobre tus experiencias personales con tu propia voz, ¿por qué molestarse en escribir sobre ellas?