- Bluesky migró a un datastore SQLite de inquilino único.
- Ahora cada usuario tiene su propio archivo SQLite para almacenar su repositorio y el estado privado de su cuenta.
- Las bases de datos de usuarios se almacenan de forma jerárquica.
- La clave de firma del repositorio de cada repositorio se guarda junto con el archivo SQLite.
- La abstracción que interactúa con los datos de usuario pasó a ActorStore.
- ActorStore tiene clases distintas para lectura y escritura.
- Como SQLite no soporta transacciones concurrentes, ActorStore requiere un "transact" explícito para escribir.
- Se mantiene un LRUCache para las claves de firma y las bases de datos, permitiendo 30k file handles abiertos y 30k claves mantenidas en memoria.
- Cuando una base de datos sale del caché, se cierra el file handle.
- Se introdujeron tres bases de datos SQLite separadas para gestionar el estado del servicio: una service DB para información de cuentas, códigos de invitación, refresh tokens, etc.; una did cache DB para cachear la resolución de DID; y una sequencer DB para procesar secuencialmente las actualizaciones de repositorios de todos los repositorios del servicio.
- Estos archivos SQLite se ejecutan en modo WAL para permitir lecturas concurrentes y replicación por streaming.
- Se espera que el despliegue de PDS se distribuya junto con Litestream o algo similar.
1 comentarios
Comentarios en Hacker News