- Bluesky ist auf einen Single-Tenant-SQLite-Datenspeicher migriert.
- Jetzt hat jeder Nutzer seine eigene SQLite-Datei, in der sein Repository und sein privater Account-Status gespeichert werden.
- Die Nutzerdatenbanken werden hierarchisch gespeichert.
- Der Repository-Signaturschlüssel jedes Repositories wird zusammen mit der SQLite-Datei gespeichert.
- Die Abstraktion für die Interaktion mit Nutzerdaten wurde auf
ActorStore umgestellt.
ActorStore hat unterschiedliche Klassen für Lese- und Schreibzugriffe.
- Da SQLite keine gleichzeitigen Transaktionen unterstützt, benötigt
ActorStore für Schreibvorgänge explizite „Transacts“.
- Für Signaturschlüssel und Datenbanken wird ein
LRUCache vorgehalten, der 30k offene File-Handles und 30k im Speicher gehaltene Schlüssel erlaubt.
- Fällt eine Datenbank aus dem Cache, wird der File-Handle geschlossen.
- Zur Verwaltung des Service-Status wurden drei separate SQLite-Datenbanken eingeführt: eine Service-DB für Account-Informationen, Einladungscodes, Refresh-Tokens usw., eine DID-Cache-DB zum Caching der DID-Auflösung sowie eine Sequencer-DB, um Repository-Updates aus allen Repositories des Dienstes sequenziell zu verarbeiten.
- Diese SQLite-Dateien laufen im WAL-Modus, um gleichzeitige Lesezugriffe und Streaming-Replikation zu ermöglichen.
- Es wird erwartet, dass PDS-Deployments zusammen mit Litestream oder etwas Ähnlichem ausgeliefert werden.
1 Kommentare
Hacker-News-Kommentare