MySQLをデータベースの選択として使用することの落とし穴?[閉まっている]


20

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

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

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


7
もちろん、主な落とし穴は、Postgresの熱狂者があなたの選択についてあなたを不安にさせようとすることです。
ダン・レイ・

ウィキメディアはそれを使用しているので、それほど悪くないはずです。
アーレンベイラー

回答:


32

RDBMSのフレーバーとしてMySQL を使用することと、他の種類のデータベースの代わりにRDBMSを使用することの2つの異なる種類の落とし穴があります。

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

  • MySQLと他のRDBMSのさまざまな比較については、このウィキペディアの比較表を参照してください。
  • ASP.NET Webアプリケーションを構築している場合は、Microsoft SQL Serverを好むでしょう。システムは連携して動作するように設計されているため、開発者とITマネージャーの両方にとって重要だと思います。
  • クラスタリング(Oracle RAC)または高度なDBプロシージャを含む、より高度なDBセットアップが必要な場合は、Oracleをお勧めします。MySQLは多くの機能をサポートしていないわけではありませんが、私が見たところから、MySQLよりもOracleについてこのようなことを知っている経験豊富なDBAを見つける可能性が非常に高くなります。
  • PostgreSQLとMySQLの広範な比較については、SOでこの質問を参照してください。
  • さらにSO:mysqlと他のデータベースの欠点

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

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


4
特にNoSQLの対RDBMSとRDBMS対MySQLのための偉大な答えは、
ジョシュK

1
SQL Serverには、クラスタリングと高度な機能もあります。しかし、あなたは、そのようなことを処理できる、またはそれらを設計する方法さえ知っているmySQLデータベースの専門家を見つけるのにもっと苦労するだろうという共謀です。これらの人々は、主にOracle、db2、またはSQL Serverを専門としています。
HLGEM

1
@HLGEM、それを明確にしてくれてありがとう、私は他のDBMSがそれらの機能をサポートしていないことではなく、Oracleの強みを示すつもりでした。SQL Serverはこれらの分野で絶対に機能します。Windowsを他の用途に使用していない会社にとっては、Windows依存の自然な欠点があります。
ニコール

1
それは絶対に真実であり、Windowsの依存関係はSQL Serverを傷つけます。
HLGEM

8

MySQLは現在Oracleの制御下にあります-オープンソースではありますが、プロジェクトの方向と何を取り込むかは依然として決定しています。

悪いデータベースであるという点では、他のいくつかのデータベースよりも単純です。

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

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

6

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


4

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

MySQLの欠点の多くのリストが表示されない本当の理由は、それらのパブリックな言及を削除または却下するかなり熱狂的なファンがいるためです。私がこれまでに抱えていた問題に言及したときはいつでも、反応は圧倒的に否定的である傾向があります。


3

MySQLは、InnoDBストレージエンジンとともに使用する場合、ACIDに準拠しています。そうする理由はありません。MySQLはACIDに準拠しています(リリース5.5以降、InnoDBがデフォルトのストレージエンジンです)。

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

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.