

sqliteを使用しているアプリにてサーバー上にあるsqliteデータベース（ファイル）をローカルからメンテナンス（データ登録・削除）を行う方法は、どのような方法が一般的なのでしょうか？

・SMBなどでローカルからファイルが見れるようにする？  
・ダウンロードしてローカルでメンテナンスしてアップロードする？


CC BY-SA 4.0
2018-08-27T00:49:46.900
47831
2018-08-27T09:28:08.567
29871
question
sqlite
サーバー上のsqliteのメンテナンス方法


「SMBなどでローカルからファイルが見れるようにする」という方法は、処理速度が遅くなること、ネットワークのファイルシステムにバグがあり同時に複数の場所から同じデータベースの同じ部分に入力があった場合にはファイルが壊れることがあることから、あまり勧められる方法ではないと思います。

参考 SQLiteのドキュメントの [Appropriate Uses For SQLite
のページ](https://www.sqlite.org/whentouse.html)

> If there are many client programs sending SQL to the same database over a
> network, then use a client/server database engine instead of SQLite. SQLite
> will work over a network filesystem, but because of the latency associated
> with most network filesystems, performance will not be great. Also, file
> locking logic is buggy in many network filesystem implementations (on both
> Unix and Windows). If file locking does not work correctly, two or more
> clients might try to modify the same part of the same database at the same
> time, resulting in corruption. Because this problem results from bugs in the
> underlying filesystem implementation, there is nothing SQLite can do to
> prevent it.
>
> A good rule of thumb is to avoid using SQLite in situations where the same
> database will be accessed directly (without an intervening application
> server) and simultaneously from many computers over a network.

「ダウンロードしてローカルでメンテナンスしてアップロードする」の問題点は、メンテナンスの間に、サーバーで入力があった場合の処理が難しいことだけです。

サーバーにSSHでログインして、SQLiteコマンドラインツールを使ってメンテナンスするのがいいとは思いますが、SQLiteのメリットである簡潔さが失われるようにも思います。SQLiteを使っているということは、それほど大規模なシステムではないということなので、運用を工夫して、「ダウンロードしてローカルでメンテナンスしてアップロードする」ことでメンテナンスしてもいいのではないでしょうか。


CC BY-SA 4.0
2018-08-27T09:28:08.567
47853
2018-08-27T09:28:08.567
15171
47831
answer