こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQL又はSQLiteについて

お世話になります。

Androidアプリ開発でPHPファイルを読み込み、更にMySQLへ接続してデータベースの中身を反映させるとこまでは成功しました。

しかし、Androidアプリとデータベースの連携で調べると、SQLiteを推奨しているサイトや書籍が多いのですが、軽量のファイルベースで手軽に構築・運用できるという点は、何となくイメージできるのですが、MySQLに比べてSQLiteが明らかに優れている点はあるのでしょうか?

私は、8割方PHPでwebコンテンツの開発を行ってきました。そしてデータベースは100%MySQLを利用してきました。Androidアプリ開発を開始したのは、つい最近の事でSQLiteも今まで殆ど触れていませんでしたので、特にMySQLとSQLiteでメリット・デメリットの大差が無いのであれば、触りなれているMySQLを選択しようと考えています。

因みに、iOSアプリについては別の者が開発しています。
最終的には、AndroidとiOS両方の端末が1つのデータベースへ読みに行く構想ですので、もしiOSの開発側で、SQLiteの方が圧倒的に優れているとなれば話は変わってきますが・・・。

MySQLとSQLiteを比較して、SQLiteが優れている点のアドバイスをいただければ幸いです。

何卒、どうぞよろしくお願い申し上げます。

投稿日時 - 2014-10-12 00:38:05

QNo.8787370

困ってます

質問者が選んだベストアンサー

SQLiteは、基本的に組み込み用です。
アプリに内蔵してそのアプリ専用のデータベースを
作成/アクセスするためのものです。
MySQLに比べると機能は貧弱ですが、
そのかわり圧倒的にサイズが小さいことが、
アプリに内蔵する用途としては優れている点です。
例えば、スタンドアロンのカレンダーアプリが、
イベント/スケジュールを管理したい時に、
アプリ内で自分専用のデータベースを作って
管理するような用途で使われます。

あなたの場合、
「最終的には、AndroidとiOS両方の端末が1つの
データベースへ読みに行く」ということは、
端末やアプリとは別のところにDBサーバーがあり、
そこに各端末が接続しにいく形態を考えているのだと
思います。そうであれば、MySQLにすべきです。
というか、SQLiteはサーバー・クライアント方式
ではないので、そういう使い方はできません。

(参考)
http://ja.wikipedia.org/wiki/SQLite

どっちが優れているかというより、
そもそも用途が違うということです。

投稿日時 - 2014-10-12 01:30:37

お礼

ご回答をいただき、ありがとうごさいます。

なるほど、とても明確になってきました。
つまりSQLiteは、ローカル環境( クライアントサイド )で動かすのが主流という
概念なのですね。
かなり昔に、Movable Typeをインストールした祭に、webサーバにSQLiteがインストールされて
MySQLから代替された形になっていましたので、SQLiteも基本的にサーバサイドで
動かすデータベースだと思っておりました・・・。

MySQLとSQLiteを用途によって、使い分けるようにします。

そう考えると極端な話、例えばセッションを使用したログインシステムや、
運営サイドの新着情報をアプリ側へ反映させるには、必然的にMySQLを使用することを
考えるべきですね?

つまり、web( PHP等 )を返して結果を端末へ反映させるにはMySQLで、各端末側で
データを追加、変更、削除のアクションを起こさせる必要があればSQLiteで行うという
考え方で合っていますでしょうか?

何卒、引き続きご教示いただければ幸いです。

どうぞよろしくお願い申し上げます。

投稿日時 - 2014-10-12 19:55:59

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> つまり、web( PHP等 )を返して結果を端末へ反映させるにはMySQLで、各端末側で
> データを追加、変更、削除のアクションを起こさせる必要があればSQLiteで行うという
> 考え方で合っていますでしょうか?

「webを返す」とか「各端末でアクションを起こさせる」とか、
なんか意味がよくわかりませんが、
要するにサーバーにデータベースを置きたいならMySQLを使い
端末のアプリ内にデータベースを置きたいならSQLiteを使う
ということでよさそうに思います。

もう少し言えば、ネットの使えないところでもアプリ自身がデータを
管理する必要があるならSQLite、常にネットにつながっている環境で
使用することを前提にし、データを一か所に集めて管理する必要が
あるならMySQLということでよさそうに思います。

投稿日時 - 2014-10-12 21:09:21

お礼

度々ご回答をいただき、ありがとうござます。

「webを返す」= ネットに繋がっている状態

「各端末でアクションを起こさせる」= アプリ自身がデータを管理する

という意味合いで記述させていただきました。

ありがとうございました。

投稿日時 - 2014-10-12 21:42:03

あなたにオススメの質問