- A Bluesky migrou para um datastore SQLite de locatário único.
- Agora, cada usuário tem seu próprio arquivo SQLite para armazenar seu repositório e o estado privado da conta.
- Os bancos de dados de usuários são armazenados de forma hierárquica.
- A chave de assinatura do repositório de cada repositório é armazenada junto com o arquivo SQLite.
- A abstração que interage com os dados do usuário foi alterada para ActorStore.
- O ActorStore tem classes diferentes para leitura e escrita.
- Como o SQLite não oferece suporte a transações simultâneas, o ActorStore exige um "transact" explícito para escrita.
- Um LRUCache para chaves de assinatura e bancos de dados é mantido, permitindo 30 mil file handles abertos e 30 mil chaves mantidas em memória.
- Quando um banco de dados sai do cache, o file handle é fechado.
- Três bancos de dados SQLite separados foram introduzidos para gerenciar o estado do serviço: um service DB para informações de conta, códigos de convite, refresh tokens etc.; um did cache DB para armazenar em cache a resolução de DID; e um sequencer DB para processar sequencialmente atualizações de repositório de todos os repositórios do serviço.
- Esses arquivos SQLite são executados em modo WAL para permitir leituras simultâneas e replicação por streaming.
- Espera-se que as implantações de PDS sejam distribuídas com Litestream ou algo semelhante.
1 comentários
Opiniões no Hacker News