勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

SQLiteを使って感じたメリットとデメリット  

   2024/01/07  SQLite

SQLiteを用いたツールをいくつか作って感じたメリットとデメリットをメモ。

 

メリット

バックアップが楽

ファイル単位なのでバックアップを取るのが楽。
FTPでファイル落としてくるだけ。

インポートが楽

MySQLで10MB以上とかになると、インポートするのにけっこう面倒くさい。CUIで対応すれば楽なのかもしれないけど、いつもphpMyAdminから対応しており、数MBのファイルになるとアップロード制限にかかったりとか細かい部分が面倒。SQLiteならFTPでアップロードするだけなので楽。

思ったより処理が速い

以下を見る限りでは非常に速い。

http://d.hatena.ne.jp/cypher256/20121013/p1

体感としても、数万件のデータを扱ってみた限りではMySQLと遜色が無いように感じた。

接続が楽

データベースのアカウント情報をincludeしてきたりとかそういう手間が無い。ソースを少し短くできる。

MySQLが使えない環境でもSQLiteなら使える場合がある

VPSだと無縁だけど、レンタルサーバーだとデータベース数が決まっている場合が多い。そういったサーバーでもPHPが使えたらSQLiteも使える場合がある。汎用性があって尚且つ小さいプログラムの場合にzipとかにまとめておけば、環境問わずにすぐ使えそう。また著作権を主張していないらしいので、そういうプログラムを配布する際の心配が無い。

同じようなサイトを作る場合にMySQLより手間がかからない(2015/11/18追記)

初めてページを開く際にsqliteファイルとデータベースを作成するようにPHPで書いておけば、姉妹サイトなんかを作る際にフォルダごとコピーするだけで良い。MySQLだとテーブルを作成するのが面倒。コマンドラインから作成する人はそう思わないかもしれないけど、aminerとかphpmyadminとかで作成する場合はけっこう手間。

 

デメリット

セキュリティ的に怖い

パスワードとかが無いのでセキュリティ的に怖い。htaccessでBasic認証等はかけてるけど不安。ユーザー情報とか大事なデータは入れたくない。

複数の同時書き込みができない

同時書き込みができないので、作成物に制限がかかる。同時書き込みの際に何らかのケアを考えるのもありだけど、それするぐらいなら面倒くさいのでMySQL使う。

日本語の情報が少ない

分からないところをググってもMySQLとかからするとかなり情報量が少ない。あとPHP&SQLiteで使いたいのにAndroid&SQLite情報がけっこう出てきたりする。

バージョンが古い場合はバルクインサートの上限が500件

SQLiteのバージョンが3.7.11以前の場合は500件までしか同時にインサートできない。レンタルサーバーとかでバージョンを変更できない場合は辛い。

ページングを設置したい時が面倒くさい(2015/11/18追記)

ページングを設置する際にMySQLでの「SQL_CALC_FOUND_ROWS」みたいなものが見当たらない。なので、2回SQL文を発行する必要がある。

 

まとめ

データ数が大きくならず(10万件以下ぐらい?)、書き込みが可能なページは単一のユーザーが使うといった状況では十分に使える。後者の方はかなり痛いデメリットなので割りと限られたケースになりそう。

 - SQLite

  関連記事

SQLite3でデータをランダムに抽出したい

SQlite3でデータをランダムで抽出したいケースがあった。MySQLと同様RA ...

SQLiteでデータがINSERTできないエラーの原因と対応方法

SQLiteでINSERT文を発行するも「Warning: SQLite3::q ...

SQLiteでNULL値の検索

SQLiteにてNULL値のもののみを検索したかったけど分からなかったので調べた ...

PHPとSQLiteでi-mobileのデータをグラフ化する方法

i-mobileでクリック保証のアフィリエイトだけど数値が並んでいるだけでグラフ ...

sqliteでphpmyadminみたいに使えるSQLiteManagerの導入方法

SQLiteのデータベースファイルの中身を見たくてphpmyadminみたいなソ ...