検証: Cloud Run × SQLite × Litestreamは〜1秒のデータ損失を許容できるか

00:01:19 ・ source: https://zenn.dev/mskbhd/articles/lab-222-litestream-cloud-runsqlite

Transcript

hostenToday we're testing if Cloud Run with SQLite and Litestream can tolerate one-second data loss.
guestjaCloud Run と SQLite、Litestream という組み合わせで、約1秒のデータ損失を許容できるかを検証するというテーマですね。
hostenExactly. Litestream watches SQLite's write-ahead log and replicates it to cloud storage every second by default.
guestjaLitestream は SQLite の WAL(ライトアヘッドログ)の変更を監視して、デフォルトで1秒ごとにクラウドストレージにレプリケーションしているわけです。
hostenWhen the process crashed immediately after writing, that data never reached the replica—a one-second loss window.
guestja書き込み直後にプロセスが突然死ぬと、そのデータはレプリカに間に合わず、最大1秒分のデータが失われる可能性があるということです。
hostenHowever, SQLite itself stays uncorrupted thanks to WAL mode's atomic transactions, even after a hard kill.
guestjaただし SQLite は WAL モードのおかげでトランザクションの原子性を保証するため、SIGKILL を受けても破損しないというのが重要なポイントです。
hostenSo this setup works well for low-write apps, as long as you accept that loss window and understand the trade-off.
guestjaつまり、この構成は書き込み頻度の低いアプリケーションなら十分実用的だけど、1秒分のデータロスというトレードオフを理解した上で採用する必要があるということですね。