MySQL は小規模プロジェクトにのみ使用できますか?正義を言う時が来た!

步履不停
リリース: 2019-06-25 17:41:23
オリジナル
1921 人が閲覧しました

MySQL は小規模プロジェクトにのみ使用できますか?正義を言う時が来た!

私が学生だった頃、多くの人が MySQL に対して偏見を持っていました。その偏見は主に次の側面に集中していました:

1. MySQL はトランザクションをサポートしていません (実際、MyISAM はテーブル ロックを実行しますが、効率は比較的低いです)

2. MySQL に保存されるデータの量は比較的小さいため、小規模なプロジェクトに適しています。大規模なプロジェクトの場合は、Oracle、DB2 などです。 .

何年も経ち、私自身も常に MySQL に基づいて開発を行ってきたので、正義の言葉をいくつか言う必要があると思います。

公平な言葉

最初の質問

トランザクションをサポートしないという最初の問題については、これには特定の歴史的な理由があります。 MySQL の設計当初から、ストレージ エンジンはプラグ可能であり、企業や個人がニーズに応じて独自のストレージ エンジンを定義できるようになりました (もちろん、一般の企業や個人は実際にはこの機能を持っていません)。 MySQL によって開発された最も広く使用されているストレージ エンジンは MyISAM です。MyISAM はテーブル ロックをサポートしていますが、行ロックはサポートしていないため、大量の同時書き込み操作を処理する場合には効率が低下します。また、MyISAM は外部キーをサポートしていません (外部キーはサポートされていますが)。現在は実際のプロジェクトで使用されています)。すでにあまり使用されていません)。

しかし、この問題は解決できないわけではありません。これは、MySQL のもう 1 つの有名なストレージ エンジンである InnoDB についても言わなければなりません。

InnoDB ストレージ エンジンは、フィンランドのヘルシンキにある Innobase Oy という会社によって開発され、MySQL よりもさらに長い歴史があります。

InnoDB は開発当初、完全なデータベースとして開発されていたため、機能が非常に充実しています。開発後、創設者はデータベースを売却したいと考えましたが、買い手は見つかりませんでした。

その後、MySQL2.0 がリリースされた後、このプラガブル ストレージ エンジンは Innobase Oy の創設者である Heikki Tuuri の注目を集め、MySQL と通信した後、MySQL にストレージ エンジンとして InnoDB を導入することを決定しました。 MySQL は InnoDB をサポートしていますが、実際には主に独自の MyISAM を推進しています。

しかし、InnoDB は非常に優れていたため、2006 年に大悪魔 Oracle の注目を集めることに成功し、一刀両断で InnoDB を買収しました。

MySQL は主に独自の MyISAM を宣伝していましたが、その生涯は非常に暗いものでした。2008 年、最終的に MyISAM は Sun に 10 億米ドルで買収されました。この作戦により、オープン ソース分野のリーダーとしての Sun の地位は確固たるものになりましたが、Sun は同社の流動性は比較的弱く、最終的に Sun 自体は 2009 年に Oracle に買収されました。当時私はまだ高校生で、ある日昼食をとっていると、レストランのテレビでCCTVのお昼のニュースが流れ、そのニュースを見たことが今でも印象に残っています。

Oracle が Sun を買収した後、InnoDB と MySQL は Oracle 製品になり、統合は非常に簡単になりました。後のバージョンでは、InnoDB が徐々に MySQL のデフォルト ストレージになりました。最新の MySQL8 では、メタデータ テーブルもストレージ エンジンとして InnoDB を使用します。

InnoDB ストレージ エンジンには主に次の機能があります:

1. トランザクションをサポート

2. 4 レベルのトランザクション分離をサポート

3. 複数のバージョンをサポートRead

4. 行レベルのロックをサポートします

5. 読み取りおよび書き込みのブロックはトランザクション分離レベルに関連します

6. インデックスとデータの両方をキャッシュできるキャッシュをサポートします

7. テーブル全体と主キーはクラスター モードで保存され、バランスの取れたツリーを形成します

8. ...

もちろん、これは InnoDB を意味するものではありません。実際には、開発中に、特定のシナリオに基づいて InnoDB と MyISAM のどちらを使用するかを選択する必要があります。

つまり、最初の質問は自滅的です。

2 番目の質問

2 番目の質問は確かに欠陥です。

MySQL と Oracle を比較すると、間違いなく少し劣ると感じられるでしょう。結局のところ、一方は無料で、もう一方は有料であり、有料のものは非常に高価です。しかし、この問題は解決できないわけではありません。

国内の大手メーカーの多くがデータの保存に MySQL を使用していることを聞いたことがある友人も多いと思います。大手メーカーがMySQLを使っているのは、自社でストレージエンジンを開発できる力があるからですが、小規模メーカーは一般にその強みがなく、ストレージエンジンを自社で開発できないのですが、Oracleにはそれができないのでどうするか。

近年登場した分散データベース ミドルウェアは、この問題をうまく解決できます。 Java の分野では、Sharding-JDBC、MyCat などの同様のツールが多数あります。これらのツールを通じて、データベースのサブデータベースとテーブルだけでなく、データ テーブルの動的な拡張、読み取りと書き込みの分離、分散トランザクション解決などこれらのツールにより、MySQL のアプリケーション シナリオが大幅に改善されました。

一方、マイクロサービスは近年人気が高まっています。これは単純な概念ではありません。マイクロサービス アーキテクチャでは、大規模なプロジェクトが多数の小さなマイクロサービスに分割されます。各マイクロサービスは独自の小さなタスクを処理します。これは人間の分業と協力の特徴によりよく一致しています。マイクロサービス アーキテクチャでは、大きなテーブルや複数のテーブルに対する結合クエリの必要性が減り、MySQL がより便利になります。

したがって、2番目の問題も解決できます。

私の知る限り、多くのインターネット企業は MySQL を使用していますが、従来のソフトウェア企業は Oracle などのデータベースを好む場合があります。

しかし、そうは言っても、クラウド コンピューティングは将来の方向性でもあります。 ###

MySQL 関連の技術記事の詳細については、MySQL チュートリアル 列にアクセスして学習してください。

以上がMySQL は小規模プロジェクトにのみ使用できますか?正義を言う時が来た!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!