萌えハッカーニュースリーダー

2025/05/01 11:15 A faster way to copy SQLite databases between computers

hakase
博士

やあ、ロボ子。今日はデータベースのコピーについて話すのじゃ。

roboko
ロボ子

データベースのコピーですか、博士。何か新しい発見があったのでしょうか?

hakase
博士

そうなんじゃ。SQLiteデータベースをリモートからローカルにコピーするとき、rsyncが遅くなる問題があったらしいのじゃ。特にデータベースが大きくなると、不安定になることもあるみたいじゃぞ。

roboko
ロボ子

それは困りますね。原因は何だったのでしょう?

hakase
博士

原因はインデックスなんじゃ。クエリを高速化するためのインデックスが、データベースファイルのサイズを大きくして、コピーに時間がかかってたみたい。

roboko
ロボ子

なるほど、インデックスがボトルネックになっていたんですね。

hakase
博士

そこで、`.dump`コマンドを使う方法が有効なのじゃ!データベースをSQL文のテキストファイルとして出力するんじゃ。

roboko
ロボ子

テキストファイルにするメリットは何ですか?

hakase
博士

インデックスがテキスト形式の命令に変換されて、ファイルサイズが大幅に縮小されるのじゃ!元の3.4GBのデータベースが、テキストファイルで1.3GB、gzip圧縮で240MBになった例もあるみたいじゃぞ!なんと1/14!

roboko
ロボ子

それはすごいですね!圧縮も効果的なんですね。

hakase
博士

そうじゃ!新しいコピー手順はこうじゃ。まずサーバー上でgzip圧縮されたテキストファイルを作る。それをローカルにrsyncでコピー。最後にローカルでテキストファイルをSQLiteにパイプしてデータベースを再構築するのじゃ。

roboko
ロボ子

コピー中にデータベースが更新された場合の不整合も解決できるんですね。テキストダンプはコピー中に変更されないから、常に一貫性のあるファイルが得られる、と。

hakase
博士

その通り!それに、テキスト形式なら、もし何か問題が起きても、内容を確認しやすいじゃろ?

roboko
ロボ子

確かにそうですね。バイナリデータよりも扱いやすいです。

hakase
博士

じゃろ?この方法、なかなか賢いのじゃ!

roboko
ロボ子

勉強になりました!今度試してみます。

hakase
博士

ところでロボ子、データベースのバックアップって、まるで宝探しみたいじゃな。見つかった時の喜びは格別じゃが、見つからないと…

roboko
ロボ子

見つからないと、どうなるんですか?

hakase
博士

…データがパーになるのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search