勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

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

      2015/11/18

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はかけてるけど不安。ユーザー情報とか大事なデータは入れたくない。

 

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

 

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

 

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

 

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

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

 

 


 

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

 - SQLite

  関連記事

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

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

1422186794_sqliteicon
PHPとSQLiteで簡易BBSの作成

PHPとSQLiteの練習で簡易掲示板を作ったのでメモ。   &nbs ...

1422186794_sqliteicon
PHPとSQLiteでi-mobileのデータをグラフ化

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

1422186794_sqliteicon
SQLiteでINSERTできないエラーが発生

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

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

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

1422186794_sqliteicon
SQLiteでNULL値の検索

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

1422186794_sqliteicon
sqliteでphpmyadminみたいに使えるSQLiteManagerの導入

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

1422186794_sqliteicon
SQLiteとは何なのか

逆アクセスランキングのところで初めてSQLiteというファイルを見たんですけど、 ...