web-dev-qa-db-ja.com

MySQLをデータベースの選択として使用することの落とし穴?

MySQLが悪いデータベースであるということを何度もオンラインで読みました。私がこれを読んだ場所にはRedditのいくつかのスレッドが含まれていますが、それらはなぜ貧弱な製品であるかについて掘り下げているようには見えません。

この主張に真実はありますか?私は非常に単純なCRUDシナリオを超えてそれを使用したことがありません。それは2年目の大学のプロジェクトでした。

データベースとしてMySQLを選択する場合、どのような落とし穴ある場合がありますか?

21
Sergio

MySQLを [〜#〜] rdbms [〜#〜] のフレーバーとして使用する場合と、他のタイプのデータベースの代わりにRDBMSを使用する場合の2つの異なる種類の落とし穴があります。

代替RDBMSの代わりにMySQLを使用する:

  • MySQLと他のRDBMSのさまざまな比較については、この wikipedia比較表 を参照してください。
  • システムは連携して機能するように設計されているため、ASP.NET Webアプリケーションを構築している場合は、Microsoft SQL Serverを選択する可能性が高いと思います。
  • クラスタリング(Oracle RAC)または高度なDB手順を含むより高度なDB設定が必要な場合は、Oracleを選択できます。 MySQLは多くの機能をサポートしていないわけではありませんが、私が見てきたことから、MySQLよりもOracleについてこのようなことを知っている経験豊富なDBAを見つける可能性がはるかに高くなります。
  • これを参照してください SOでの質問 を参照してください。
  • さらにSO: mysqlと他のデータベースの欠点

他のタイプの代わりにRDBMSを使用する:

そうは言っても、MySQLはgreatデータベースであり、過去8年間、多種多様なWebアプリケーション(eなど)で使用していない会社で働いたことはありません。 -コマース、ウェブサイト/アプリ、エンタープライズ/ B2B、ウェブゲーム)。典型的なWebアプリケーションのユースケースの大多数にとって、これは素晴らしい選択です。

33
Nicole

MySQLは現在、Oracleの管理下にあります。オープンソースですが、プロジェクトの方向性と導入内容を決定しています。

悪いデータベースであるという点では、他のデータベースよりも「単純」なだけです。

あなたが弱点を探しているなら、私がそれらを指摘します、例えばPostgreSQLを例にとってみましょう。

  1. MySQLにはコンテナのタイプと配列がありません。
  2. MySQLには真のシーケンスがありません(自動インクリメントを使用します)-Postgresシーケンスでは、複数のテーブルで単一のシーケンスを使用できるため、複数のテーブル間でカーディナリティを保証できます。
  3. PostgresはACIDに準拠しており、MySQLは部分的に準拠しています。
  4. Postgresは、さまざまな文字とテキストを同じ方法で実装します(トーストテーブル)。このアプローチは、MySQLよりも優れていると最も主張しています。
  5. Postgresにはストレージバックエンドが1つしかありません。つまり、どこでも同じ機能を使用できることが保証されます。
  6. Postgresでは、TCL、Python、R、Perlで記述されたサーバー側関数を使用できます。
  7. PostgresはPython=で非同期ドライバを適切にサポートしています-MySQLで少しヒットまたはミスだと思います
8
Ben DeMott

歴史的に、それはトランザクションのサポートに弱く、一貫したデータベースを維持する必要がある場合、トランザクションは重要です。今日の大きなラップは、Oracleがそれを所有していることです。

6
David Thornley

長い間、MySQLはより「おもちゃ」のデータベースでした。ネストされた副選択を処理しなかった、データの分割をサポートしなかった、複数のトランザクション分離レベルを提供しなかった、トリガーやストアドプロシージャをサポートしなかった-多くのもの。 OracleまたはSQL Serverのバックグラウンドから来た多くの人々はそれを却下しました。

MySQLの欠点の多くのリストが表示されない本当の理由は、MySQLの公開の言及を削除または反対票を投じるかなり過激なファンベースを持っているためです。自分が抱えている問題について述べたことがあるときはいつでも、その反応は圧倒的に否定的である傾向があります。

4
TMN

MySQLは、InnoDBストレージエンジンと一緒に使用すると、ACIDに準拠します。そのため、理由はありません。MySQLはACIDに準拠しています(リリース5.5では、デフォルトのストレージエンジンはInnoDBです)。

MySQLは、データベースをほとんど必要としない(そしておそらくRDBMSのスキルが限られていた)人々が選択したRDBMSとして頻繁に(またはNoSQLが登場するまで)使用されていたため、かなり不格好であり、かなり不格好で使用されていました。マナー。

私はMySQLを頻繁に使用しており、5.xが登場して以来、道路の要件が中程度であるインストールの95%でそれについて文句を言うことはほとんどありません。

3
glaucon

データの破損: http://planet.mysql.com/entry/?id=16232

それは2008年からです。その間に物事が変化したことを望みましょう。

0
user19202