質問: SQLiteというものについて調べているとき、長所と短所が出てきたのですが、今回は短所についての質問です。 短所としてこちらのサイトでは > > データがあくまでもローカルに保持されるために、複数のWebサーバーからアクセスを受けることができない > > > と書いてあるのですが、「複数のWebサーバーからアクセスを受けることができない」という点が短所になる理由についてよくわかりません。 たとえば、 * 各ユーザーのデータはSQLiteを使ってローカルで管理して、サーバー側(MySQL, PostgreSQLなど)へSQLiteのデータを定期的にアップロードする * ローカルで完結する程度のアプリケーションでデータを扱いやすくするためにSQLiteを使う という**ローカルでのデータをより扱いやすくする使い道が本道でそもそも複数のWebサーバーからアクセスを受けるようなものではないので短所といえるものではない**と思うのですが... 知らないだけでSQLiteでWebサーバーからアクセスを受ける場合というのもあるのでしょうか?
回答: ブログを書くのはハッカーだけじゃないよ。 質問者さんに毛が生えた程度の人や、もっとひどい時にはそれ以下の人も大勢ブログ記事を残してたりする。 例えばMySQLの項目 > > 「LAMP」という言葉があります。 > > Linux・Apache・ MySQL・PHPの頭文字を取ったものです。 > > この言葉の中にあるように、Webアプリケーションとして連携という点に置いて長所があると思います。 > > > これはMySQLが有名って言いたいだけで、それ以外の何の説明にもなってないよね。 > > 、高速である分いくつかの機能が意図的に盛り込まれていません。 > > (カーソル、副問い合わせ、トランザクション機能、結合機能、トリガ、ストアドプロシージャ、複製機能など) > > > 嘘だろ...MySQLってこんなに低機能だっけ...? 当時既に5.6であるわけで公式マニュアル見れば上記の機能は大抵存在すると分かるんだけど、 いったいバージョンいくつの話なんだろう。 まぁ、要するにまともなエンジニアがレビューすれば突き返すレベルの記事に見えるのだけど、 真に受ける価値あるの?私は無いと思うなぁ。 一応著者のフォローをしておくと、こんな感じなんじゃないかな。 * Web制作会社の社内ブログであり、特に上位者のスキルレベルも低くレビューが困難だった * 短い期間で1記事仕上げるというノルマが課せられ、十分に文章を推敲したり深い調査をする時間が与えられなかった * 6年前の記事なので、きっと著者もスキルアップしてるけど退職済み等の事情で添削もできない 追記 既に理解しているかもしれないけど、**ローカル**と呼ばれる箇所が2点あることに注意してね。 * Webサーバーのマシン内のハードディスク ←ブログ記事でデメリットだ!と言ってる箇所 * クライアントのマシン内のハードディスク ←質問文でSQLiteの使用箇所と考えている SQLiteってのはハードディスク内のファイルを書き換えるってだけ。 MacOSやWindows、Linux用のプログラムも配布されてて、どこにでもインストールして使えるからね。 Androidでは設定ファイルの書き換えにSQLite利用しているし... ブログ記事の作者としては「Webアプリ」を構築するという観点のみで見た、 POSTしたデータをWebサーバーで管理する手法として評価している。 * MySQL: ○ * SQLite: × 負荷が増えてサーバーの台数を2台に増やした場合、1台目と2台目のハードディスク内のデータを共有することが難しいからね。 でも**難しい**とは言ったけど、無理ではない。 異なるマシン間でファイルの同期をとったり共有する手法なんて山ほどある。 例えばmemocachedというマシンのメモリ領域を使った低機能超高速な揮発性DBがあるんだけど、 FacebookがこれをクラスタリングしてKSVサーバとして運用する奮闘記的な情報が下記サイトで公開されている。 Facebookの数千台規模のmemcached運用について - ゆううきブログ memcachedに出来るならSQLiteに出来ない道理はない。 asahina1979さんがこっそり出してくれた下記のサイトがSQLiteのサーバー利用だね。