質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

3185閲覧

SQLiteのデメリットについて

fbygqw

総合スコア37

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2017/10/03 13:42

編集2017/10/03 13:54

SQLiteというものについて調べているとき、長所と短所が出てきたのですが、今回は短所についての質問です。
短所としてこちらのサイトでは

データがあくまでもローカルに保持されるために、複数のWebサーバーからアクセスを受けることができない

と書いてあるのですが、「複数のWebサーバーからアクセスを受けることができない」という点が短所になる理由についてよくわかりません。
たとえば、

  • 各ユーザーのデータはSQLiteを使ってローカルで管理して、サーバー側(MySQL, PostgreSQLなど)へSQLiteのデータを定期的にアップロードする
  • ローカルで完結する程度のアプリケーションでデータを扱いやすくするためにSQLiteを使う

というローカルでのデータをより扱いやすくする使い道が本道でそもそも複数のWebサーバーからアクセスを受けるようなものではないので短所といえるものではないと思うのですが...
知らないだけでSQLiteでWebサーバーからアクセスを受ける場合というのもあるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ローカルでのデータをより扱いやすくする使い道が本道でそもそも複数のWebサーバーからアクセスを受けるようなものではない

日本語の言い方の問題に近い話です。「複数のサーバからアクセスして使えない」というのを、MySQLなどと比較して「欠点」と見るか、最初から「それとは用途の違うもの」と見るか、という話です。

投稿2017/10/03 13:49

maisumakun

総合スコア145123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fbygqw

2017/10/04 07:39 編集

ご回答ありがとうございます。 質問文の記事の内容については「SQLiteと他のDBMSを比較するときにクライアントサイドではなくサーバサイドでの利用を前提にしているために「複数のWebサーバーからアクセスを受けることができない」という点が短所になる」ということだったと理解しています。 サーバサイドでの利用を前提にしているにも関わらず「そもそも用途が違ってローカルで使うのではないか」ということを質問していたということになるのですね。 少し理解できたような気がします。
guest

0

ブログを書くのはハッカーだけじゃないよ。
質問者さんに毛が生えた程度の人や、もっとひどい時にはそれ以下の人も大勢ブログ記事を残してたりする。

例えば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のサーバー利用だね。
https://www.sqlite.org/cvstrac/wiki?p=SqliteNetwork

投稿2017/10/03 14:58

編集2017/10/04 09:36
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fbygqw

2017/10/04 07:26

質問文で引用したSQLiteのデメリットはリンク先の記事だけでなく、weblioなど個人的に信頼できると考えているサイトでも掲載されていた情報だったので質問しました。「まともなエンジニア」になれるように今後もできる限りの努力をしていこうと思います。回答ありがとうございました。
miyabi-sun

2017/10/04 08:35

私も偉そうな事を言ってるけど、 業務で急かされたり、認識を誤って沢山の誤ったアウトプットをしてきたからね。 大事なのは誤りを認めてすぐに修正することだね。 誤りを含んだ文章ってのは一気に信憑性がなくなるから、誤った記事を出した時点でダメージだけど、それが放置されているのは非常によろしくない。
guest

0

ローカルでのデータをより扱いやすくする使い道が本道で

という認識が間違っています。

メリットデメリットを挙げるというのは、必ず前提や比較対象が必要です。
お書きのデメリットは、サーバーサイドのDBMSとして、MySQLやPostgreSQL等と比較した場合の物です。

ローカルというのは、クライアントサイドの事だと思いますが、別にSQLiteはクライアントサイドで使うのが本道という事ではありません。
クライアントサイドで、クライアントローカルで使うことが前提でDBMSを比較すると、サーバーサイドのDBMS比較でのメリットデメリットと違ってくるのは当然です。

投稿2017/10/03 14:00

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fbygqw

2017/10/04 07:32

> お書きのデメリットは、サーバーサイドのDBMSとして、MySQLやPostgreSQL等と比較した場合の物です。 SQLiteと他のDBMSを比較するときにクライアントサイドではなくサーバサイドでの利用を前提にしているために「複数のWebサーバーからアクセスを受けることができない」という点が短所になるのですね。大変分かりやすかったです。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問