- Bluesky a migré vers un datastore SQLite à locataire unique.
- Désormais, chaque utilisateur possède son propre fichier SQLite pour stocker son dépôt et l’état privé de son compte.
- Les bases de données utilisateur sont stockées de manière hiérarchique.
- La clé de signature de dépôt de chaque repository est stockée avec le fichier SQLite.
- L’abstraction qui interagit avec les données utilisateur a été remplacée par ActorStore.
- ActorStore dispose de classes distinctes pour la lecture et l’écriture.
- Comme SQLite ne prend pas en charge les transactions concurrentes, ActorStore nécessite un "transact" explicite pour l’écriture.
- Un LRUCache pour les clés de signature et les bases de données est maintenu, permettant 30k handles de fichiers ouverts et 30k clés conservées en mémoire.
- Lorsqu’une base de données sort du cache, son handle de fichier est fermé.
- Trois bases de données SQLite distinctes ont été introduites pour gérer l’état du service : une service DB pour les informations de compte, les codes d’invitation, les refresh tokens, etc., une did cache DB pour mettre en cache la résolution des DID, et une sequencer DB pour traiter séquentiellement les mises à jour des repositories de l’ensemble des dépôts du service.
- Ces fichiers SQLite fonctionnent en mode WAL afin de permettre les lectures concurrentes et la réplication par flux.
- Le déploiement de PDS devrait être livré avec Litestream ou un outil similaire.
1 commentaires
Avis sur Hacker News