2011-01-27 7 views
62

2つのうちどちらを使用するかを決める上での大まかなルールがありますか?SqliteまたはMySql?どのように決定する?

また、Sqliteデータベースを引き継いで、システムが「もっと大きくなる」と予想される場合、それに固執するか、MySqlに移行するかを決める方法は?

+1

FirebirdEmbeddedを検討してください.2つの非常に強力な混合物です。 –

+1

あまりにも広すぎると投票しました。可能な重複が削除されました:http://stackoverflow.com/questions/3630/sqlite-vs-mysql –

+3

これは広範囲ですが、投稿されたときにそのような質問が受け入れられたか、少なくとも耐えられました。私はその質問が可能な重複のように削除されないようにして、他の人が議論や勧告を読むことができるようにしたい。 – Mawg

答えて

69

これらの機能セットはまったく同じではありません。 Sqliteは、ネットワーク機能を持たない組み込みデータベースです(追加しない限り)。だからあなたはネットワーク上でそれを使うことはできません。

あなたが必要な場合は

  • ネットワークアクセス - 別のマシンからアクセスする例えば、
  • 実際の並行性は、たとえば、一度に複数のクエリを実行したり、たくさんの選択肢といくつかの更新があるワークロードを実行して、スムーズに実行したい場合などに便利です。
  • 32Gのメモリに1TBデータベースの一部をバッファするなど、多くのメモリ使用量があります。

mysqlなどのサーバーベースのRDBMSを使用する必要があります。

MySQLは唯一の選択肢ではなく、新しいアプリケーション(たとえばpgSQL)には他にも優れたものがたくさんあることに注意してください。

Sqliteは非常に優れたソフトウェアですが、RDBMSサーバーが行うこれらのことを行うことは一度もありません。これは、ローカルファイル上でSQLを実行する小さなライブラリです(ロックを使用して、複数のプロセスがファイルを壊さないようにします)。それは本当によくテストされ、私はそれがたくさん好きです。

また、自分でこれを正しく選択できない場合は、チームの誰かができる人を雇う必要があります。

+0

基本的に、sqlliteはmsアクセスファイルの代わりです。 – dvdmn

+2

これらの3つのポイントは、Richard Hippの言うところの通りです:https://youtu.be/Jib2AmRb_rk?t = 1693 –

+0

わかりやすくするために、MySqlデータベースを使用するネットワークアプリケーションであっても、データベースにアクセスできる唯一のユーザーであるソフトウェアは常に1つあります。 – Mawg

9

SQLiteは、並行処理に関して実際には機能的ではありません。同じSQLiteデータベースに何百ものWebリクエストがある場合、問題が発生します。

あなたは間違いなくMySQLまたはPostgreSQLを使用してください。

1人のプロジェクトの場合は、SQLiteの設定が簡単になります。

+0

わかりやすくするために、MySqlデータベースを使用するネットワークアプリケーションであっても、データベースにアクセスできる唯一のユーザーであるソフトウェアは常に1つですが、obiovusly、特にSqliteの場合は特にそうです。 – Mawg

6

これまでの数回の優秀な回答がありました。 サイトwww.sqlite.orgはsqliteデータベースで動作します。著者(Richard Hipp)が同様の質問に答えると、linkがあります。

+0

リンクありがとうございました。同著者は、[独自のワークベンチ](http://www.mail-archive.com/[email protected]/msg00464.html)で、Athlon 1600でテストしました1GBのRAM。 5400RPM IDEディスク。 Redhat 7.3。彼は結論:«私は現在、SQLiteがウェブサイトのプライマリデータベースとして を適切に使用していると信じています。 1日当たりのヒット数» – Rutrus

39

sqliteチームは、when to use sqliteを説明する記事を公開しています。基本的には、書き込みの同時性が非常に高い場合や、テラバイト単位のデータに拡張する必要がある場合には、sqliteの使用を避けたいと考えています。他の多くのケースでは、sqliteはMySQLのような "従来の"データベースの驚くほど良い代替品です。

関連する問題