テクノロジー

読み取り専用 DB を Aurora から SQLite に移行してコストを 1/8 に削減した話 - エムスリーテックブログ

1: michael19w 2025/03/19 11:46

データ量に引けを取らない丁寧な仕事

2: mk173 2025/03/19 12:45

次はSQLite DBを全クライアントのメモリーに....

3: havanap 2025/03/19 13:50

日次でしか更新されないならレプリカを撒くのはいい選択だよなあ

4: AKIMOTO 2025/03/19 14:11

“SQLite の Backup API を使い、Task 起動時にファイルモードとインメモリモードの 2 つの SQLite 接続を作成し、ファイル側からインメモリ側に全件コピーする 方法を取りました”

5: KoshianX 2025/03/19 15:21

へえ、まあ SQLite3 は確かに軽量で速いし、こういう使い方なら規模の大きなところでも実戦投入できるわけか

6: nakag0711 2025/03/19 15:28

SQLiteはちょっと用途を選ぶかな

7: kamm 2025/03/19 15:39

これはすごくいい改善。

8: georgew 2025/03/19 15:41

すべてのデータをインメモリモードの SQLite に配置 > コロンブスの卵的なかなか興味深いソリューション。

9: otchy210 2025/03/19 16:13

例えば EC サイトの購買履歴のような、その人だけのデータが見れれば良いケースでは、高々数 10 MB であろう全量データのコピーを SQLite でクライアント側のメモリに置いちゃうとすごい捗るな、とか夢想したことはある。

10: tengo1985 2025/03/19 16:34

『長時間(約 4 時間半以上)ディスクに高い読み取り負荷をかけ続けると、AWS 側から性能に制限をかけられるような挙動が見られた』これが気になるな。アプリ側はどうだったのかな?型まわりとか

11: snowcrush 2025/03/19 18:39

pragmaticな発想でとても好感もてる

12: l__LINE__l 2025/03/19 19:07

DuckDBでも良さそうだが、合わなかったか

13: prograti 2025/03/19 22:50

バッチ処理のために起動したFargateの中でインメモリDBを使ってデータ操作を行ってそれをマスタDBに書き戻すみたいなことはよくやりますね

14: xanaduuu 2025/03/20 02:10

sqliteを使ってるBaaSのPocketbaseもいい。実は世の中の半分くらいのDBはsqliteでも何とかなるんじゃなかろうかと思う今日この頃

15: clubman023 2025/03/20 03:23

面白い

16: zgmf-x20a 2025/03/20 05:28

トランザクションとか考えなくていい場合はそれなりの方策はあるからな。

17: a-know 2025/03/20 06:44

はえー面白い

18: kijtra 2025/03/20 08:00

読み取り負荷どうすんのかと思ったらSQLiteぜんぶをメインメモリに入れると。それが "十分実用的" なのかよくわからんw

19: psne 2025/03/20 08:21

W/Rが1:99くらいの比率だととてもよく効くSQLite。

20: mattn 2025/03/20 09:56

いい話

21: rokujyouhitoma 2025/03/20 10:09

素晴らしい

22: nmcli 2025/03/20 10:22

更新されないデータであれば確かに効率いいだろうな

23: tmatsuu 2025/03/20 10:24

これ、キャッシュに近い用途だな。読み取り専用かつ随時更新される必要がないという特殊条件に加えて、SQLiteであれば既存のSQLクエリーをほぼそのまま流用できるというメリットがうまく噛み合った。

24: masaharu-suizu 2025/03/20 12:33

SQLiteを選んだ経緯やファイルをどこに置くかを決める時に直面した問題など色々書かれていて面白かった。ディスクに高い読み取り負荷をかけ続けたときの制限かかるのは何なんだろうね?ドキュメントに無いなんて。。。

25: uokada 2025/03/20 13:10

良いね。 Lambdaでs3からsqliteのファイル都度取得するみたいな処理でも全然安いんだよね。

26: Karosu 2025/03/20 14:51

常に書き込みしないならばSQLiteに移行でもいいのか

27: rgfx 2025/03/20 16:02

あー、BigQuery BI Engineのリザーブドなキャッシュ容量のようなやつ。でもこっちの方が安い&カルテ方面の非機能要件に合わせやすそう。

28: taiyow 2025/03/20 17:00

実直だけど良い設計変更だと思う。というかこれ expireが24hのインメモリキャッシュをアプリ側に持つのじゃだめだったのかな。クエリは毎回違うの?カルテは異分野すぎてわからん。

29: terazzo 2025/03/20 18:04

アプリ本体にSQLiteごと静的リンクして使えるのかな(goミリしら)

30: arrowKato 2025/03/21 02:01

 「必要なスコアデータのみに絞ることでデータ量を数 GB 程度まで削減して、」とあるが、普段から消しておいたらレイテンシも元々抑えられた疑惑