勉強したことのメモ

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

  関連記事

データベース管理ツール「Adminer」でSQLite3を使えるようにする方法

SQLite3で作成したデータベース及びテーブルをAdminerから操作したい。 ...

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

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

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

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

SQLiteでNULL値の検索

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

PHP5.5からSQLite3を使用する際のよく使う構文

PHPからSQLiteを使う際に必ず使うであろう基本的な構文のメモ。PDOは使っ ...