
Julia Evans Django saytının arxasında SQLite işlətməkdən öyrəndiklərini yazıb
O, beş saniyə çəkən tam mətn axtarışını ANALYZE-in necə düzəltdiyini, sətir təmizliyinin işçi prosesləri necə yıxdığını və restic ilə Litestream ehtiyat planını danışır.
Julia Evans Django saytının arxasında SQLite işlətməklə bağlı qeydlərini yayımlayıb; bu, daxili verilənlər bazasından istifadə etdiyi dördüncü veb layihəsidir. Onun sözlərinə görə, kiçik sayt üçün istehsal mühitində SQLite istifadə etmək tövsiyəsi düzgündür, amma təcrübə bloq yazılarının adətən keçdiyi bir məqamı vurğuladı: SQLite yenə də verilənlər bazasıdır, bazalar mürəkkəbdir və onları idarə etmək ayrı bir bacarıqdır.
ANALYZE və beş saniyəlik sorğu
İlk təəccüb SQLite-ın FTS5 uzantısı ilə 4000 sətirlik cədvəldə işlədilən tam mətn axtarışının beş saniyə çəkməsi idi. ANALYZE işlətmək vaxtı dərhal təxminən 0,05 saniyəyə endirdi. ANALYZE sorğu planlaşdırıcısının daha yaxşı plan seçməsi üçün statistika toplayır; Evans ilkin planda nəyin dəqiq səhv olduğunu hələ bilmədiyini və təsadüfən kvadratik bir vəziyyətdən şübhələndiyini yazır. SQLite-ı 2022-ci ildən veb layihələrində istifadə edir və ANALYZE-in varlığını yalnız indi öyrənib.
Sətirləri təmizləmək göründüyündən çətindir
Lazımsız sətirləri silmək — məsələn, django-tasks-db-nin qoyub getdiyi tamamlanmış tapşırıqlar — bir neçə dəfə problem yaradıb. Təmizləmə əmri beş saniyədən çox çəkəndə başqa bir işçi proses bazaya yazmağa çalışır, təyin edilmiş beş saniyəlik həddi aşır, çökür və virtual maşını da özü ilə yıxır. Hələlik həll təmizləməni kiçik qruplarla aparmaqdır ki, heç bir sorğu həddi aşmasın. Evansın sözlərinə görə, bu hadisə insanın nə üçün Postgres kimi eyni vaxtda bir neçə yazıcıya imkan verən bazaya ehtiyac duya biləcəyini daha yaxşı anlamağa kömək etdi; ola bilsin ki, gələcəkdə təmizləmələr üçün planlı texniki fasilə ayıracaq.
Ehtiyat nüsxələr: restic və Litestream
Mövcud rutin bazanı VACUUM INTO ilə çıxarır, sıxır və restic ilə S3-ə göndərir — əvvəlcə anbarın kilidini açır, çünki öldürülən ehtiyat prosesi kilid qoyub gedir, sonra köhnə snapshot-ları təmizləyir. Son vaxtlar artımlı replikasiya üçün Litestream-i sınağa başlayıb; 400 saatlıq saxlama pəncərəsi ilə, qismən də restic işlərinin bəzən yaddaş çatışmazlığından öldürülməsi üzündən. Ehtiyatlar siqnalın kəsilməsinə reaksiya verən nəzarət sistemi ilə izlənir, amma Evans bərpanı heç vaxt sınamadığını etiraf edir.
Məhsuldarlıq mövzusunda Evans qəsdən rahatdır: sorğuları Django ORM ilə yazır və yavaş planları izləmir; baza təxminən 10 000 sətir saxlayır və onun gözləntisinə görə kiçik qalacaq. Cədvəllərin bir yerdə olması lazım olmayanda onları bir neçə fayla bölür — bu yanaşmanı 2022-ci ildən dörd ildir SQLite üzərində işləyən Mess with DNS-də də tətbiq edib.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.