dポイントプレゼントキャンペーン実施中!

MySQLとSQLiteの違いについて。
ちょっと調べたところによると、SQLiteはアプリケーションに組み込んで使い、
MySQLはサーバーとして使うそうですが、その意味がいまいちわかりません。
それは、MySQLは複数のクライアントの共有データベースとして使うけど、
SQLiteは個人ユーザーの単体データベースとして使うということでしょうか?
よろしくお願いします。

A 回答 (3件)

>SQLiteは、WEBサーバーが持つローカルな記憶装置をデータベースとして使う仕組みで、自分の管理するハードのシステムを呼び出すのでWEBアプリの命令として簡単に使用できるというイメージです。


SQLiteの実体は、ただの単一ファイルなので、ローカルに限らずネットワークドライブでも問題ないはずです。(基本的に、ネットワークドライブ上に置くメリットよりデメリットの方が多いと思われますので、そのような使い方をすることはあまりないと思いますが…)
複数のクライアントが利用する場合でも、Webアプリからなら簡単に利用できるのは、本来、意識しなければならない同時書き込みなどの処理(そもそも、同時書き込みが頻発する処理の場合SQLiteでは不適格ですが…)を、Webのサービス(ApacheやIISなど)が窓口になって一括で処理してくれるからです。
つまりSQLiteの仕様のデメリットが、Webのサービスの仕様と上手く噛み合わさることで、ほとんどなくなるということです。
上記リンクで書込がダブると書込エラーが発生すると書かれていますが、これは、何も考えなくてもWebのサービスが守っていてくれているから(と言っても、そんな大げさなものではありませんが)です。もし、同時に書き込みにエラーが発生しない場合、DBが壊れると言う最悪の可能性が待っています。
(MySQLのようなサービス型の場合、同時の書き込みでもDB自体は壊れないように出来ています。)

>ということで、MySQLのようにWEBサーバーがネットワーク上のハードであるデータベースサーバーにユーザーが自らを証明するために必要なパスワードを送る必要が無いということ。
Webアプリなら、あまり考える必要のないことですが、パスワードが必要であることのメリットは、上記のリンクにあるような、第三者に対するセキュリティよりも、公開する相手に対して必要な権限を振り分けられることの方が大きいと思います。
SQLiteでは、その仕様上、基本的に窓口が一つでないとなりません。決まった相手にしかデータを見せる必要がないのでパスワードは不要となります。(ファイルをさわることが出来る相手=管理者で、全データを扱えることに問題はない)
一方、MySQLなど、サービス型のDBの場合、窓口が複数あることが前提となります。
この複数の窓口と言うのがミソで、使用者全員が管理者と言う訳ではなく、必要な情報を必要な人にだけ見せたり、更新させたりする必要があります。そのためにユーザやパスワードの設定が必要となります。
    • good
    • 0
この回答へのお礼

何度も、詳しく解説してくださって有難うございました。
大して分ってないのに、生意気な質問で申し訳ありませんでした。
お蔭様で、かなりイメージを掴む事が出来ました。
本当に有難うございました。

お礼日時:2010/06/12 20:04

SQLiteは、あまり詳しくないため、私も勘違いしている部分もあるかも知れませんが…



ネットワークプリンタと、USBプリンタの違いをイメージして下さい。
ネットワークプリンタの場合、ネットワーク上の全てのPCから、そのプリンタで印刷が可能となります。
これをDBを使用したアプリケーションの動作に当てはめると、ネットワーク上のPCのアプリケーションがDBを使用する場合、SQL文を直接DBに発行することが可能となります。(これが質問のサービス(MySQL)の動作にあたります。)

一方、USBプリンタの場合、そのプリンタがと繋がっているPCで共有を行えば、同様に印刷が可能となります。それは、他のPCから受け取った印刷の指示を、そのPCが窓口になって印刷の指示を行うからです。
これをDBを使用したアプリケーションの動作に当てはめると、ネットワーク上のPCのアプリケーションは、窓口となるPCのアプリケーションと、何らかの手段で通信し、窓口となるPCがSQL文を発行後、戻って来た結果を、元のPCのアプリケーションに返すこととなります。(これが質問のアプリケーション(SQLite)の動作にあたります。)

あとは、利用したいモデルが、どちらに当てはまるのかによります。
例えば、複数のクライアントでも、WEBベースであれば、窓口となるSQLを発行するPCは一台で済むので(可用性は考えないものとして)SQLiteでも問題ありませんし、単体ユーザでも、複数のPCから同時に接続する必要があれば(あまり無いとは思いますが)MySQLが必要となるかも知れません。

この回答への補足

わざわざ、お時間を割いていただき有難うございます。
拝見しましたが、アンポンタンなので明確に捉え切れませんでした。
納得出来そうで出来ないので、いろいろ調べて考えました。

http://www.cpa-lab.com/tech/046
http://mizushima.ne.jp/Windows/DB/SQLite/SQLite. …

そこで、下記のような解説を見つけました。
>SQLiteは、データベースでよく代表されるMySQLやPostgreSQLのようにサーバー・クライアントという形をとりません。
>データはBerkeleyDB同様ローカルに保存されますので、外部・複数のサーバーからのアクセスはできない短所があります。
>また、大規模な仕事には不向きだともいわれています。

>パスワード設定は要らない。
>ファイル形式であり、ユーザー管理の概念がないため、SQLite自身には、セキュリティ機能はない。自分で、ファイルへのアクセス権限をしっかりとコントロールする必要がある。

以上の解説から私が考えたのは、SQLiteをメインのデータベースとして使う時は、

SQLiteは、WEBサーバーが持つローカルな記憶装置をデータベースとして使う仕組みで、自分の管理するハードのシステムを呼び出すのでWEBアプリの命令として簡単に使用できるというイメージです。
ということで、MySQLのようにWEBサーバーがネットワーク上のハードであるデータベースサーバーにユーザーが自らを証明するために必要なパスワードを送る必要が無いということ。

こんな風に思ったのですが、何処か間違っていたら教えてください。

補足日時:2010/06/07 21:32
    • good
    • 0

電話局で、みんなが閲覧できるように置かれている電話帳が前者(MySQL)で、個人宅においてある電話帳が後者(SQLite)



実際のシステムの運用イメージとしては、宅急便の総合荷物前者(MySQL)が前者で、配送時に各スタッフがもつ端末上での荷物情報等を管理するのが後者(SQLite)。

扱う情報の規模やセキュリティ等によりますが、たとえば銀行などのDBはMySQLではなくOracleだったりします。
    • good
    • 0
この回答へのお礼

わざわざ、お時間を割いていただき有難うございます。
貴方がおっしゃるように、SQLiteは補助的には端末のデータベースとして用い、処理が終わると情報を整理し本社に送るという形で使われていそうです。

お礼日時:2010/06/07 21:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!