- Bluesky ได้ย้ายไปใช้ดาต้าสโตร์ SQLite แบบ single-tenant
- ตอนนี้ผู้ใช้แต่ละคนจะมีไฟล์ SQLite ของตัวเองสำหรับเก็บรีโพซิทอรีและสถานะบัญชีส่วนตัว
- ฐานข้อมูลผู้ใช้ถูกจัดเก็บแบบลำดับชั้น
- คีย์ลงนามรีโพซิทอรีของแต่ละรีโพซิทอรีจะถูกเก็บไว้พร้อมกับไฟล์ SQLite
- abstraction ที่ใช้โต้ตอบกับข้อมูลผู้ใช้ถูกเปลี่ยนมาเป็น ActorStore
- ActorStore มีคลาสแยกกันสำหรับการอ่านและการเขียน
- เนื่องจาก SQLite ไม่รองรับทรานแซกชันพร้อมกัน ActorStore จึงต้องการ "transact" ที่ชัดเจนสำหรับการเขียน
- มีการคง LRUCache สำหรับคีย์ลงนามและฐานข้อมูลไว้ โดยรองรับ file handle ที่เปิดอยู่ 30k รายการ และคีย์ที่เก็บไว้ในหน่วยความจำ 30k รายการ
- เมื่อฐานข้อมูลหลุดออกจากแคช file handle จะถูกปิด
- มีการเพิ่มฐานข้อมูล SQLite แยก 3 ตัวเพื่อจัดการสถานะของบริการ: service DB สำหรับข้อมูลบัญชี invite code refresh token และอื่น ๆ, did cache DB สำหรับแคชการ resolve DID, และ sequencer DB สำหรับประมวลผลการอัปเดตรีโพซิทอรีตามลำดับจากทุกรีโพซิทอรีของบริการ
- ไฟล์ SQLite เหล่านี้ทำงานในโหมด WAL เพื่อให้รองรับการอ่านพร้อมกันและการทำ streaming replication
- คาดว่าการ deploy PDS จะมาพร้อมกับ Litestream หรือสิ่งที่คล้ายกัน
1 ความคิดเห็น
ความเห็นจาก Hacker News