ホームページ >データベース >mysql チュートリアル >MySQLでサブデータベースとテーブルを作成する方法は何ですか?

MySQLでサブデータベースとテーブルを作成する方法は何ですか?

WBOY
WBOY転載
2023-06-02 12:34:143380ブラウズ

    1. データベースとテーブルを分割する必要があるのはなぜですか?

    Web サイトのビジネスが急速に発展すると、Web サイトのトラフィックも増加し、プレッシャーがかかります。データに関する負荷も増加します。たとえば、電子商取引システムの場合、ダブル イレブン プロモーションは、数十万の同時 TPS を伴う注文データに多大な負荷をかけます。従来のアーキテクチャ (1 つのマスターと複数のスレーブ) が使用されている場合、 、メインのデータベース容量は、間違いなくそのような高い Tps を満たすことはできません。ビジネスはますます大きくなり、単一のテーブル データがデータベースでサポートされる容量を超え、永続ディスク IO、従来のデータベース パフォーマンスのボトルネック、製品ビジネスマネージャー - プログラムを変更し、データベースナイフセグメンテーションを最適化する必要があります。データベース接続の数が不十分であり、テーブル内のデータが膨大であるため、最適化後もクエリのパフォーマンスが依然として低いため、分割が必要です。

    2. サブデータベースとサブテーブルとは

    • サブデータベースとサブテーブルのソリューションは、リレーショナルのデータ ストレージとアクセス メカニズムを補足するものです。データベース。

    • #サブライブラリ: 1 つのライブラリのデータを複数の同一のライブラリに分割し、アクセス中に 1 つのライブラリにアクセスします

    • ##テーブル分割:1 つのテーブルのデータを複数のテーブルに分割し、対応するテーブルを操作します

    3. サブデータベースとサブテーブルいくつかの方法

    MySQLでサブデータベースとテーブルを作成する方法は何ですか?

    1. 垂直分割

    (1) データベースの垂直分割

    MySQLでサブデータベースとテーブルを作成する方法は何ですか?

    ビジネスに応じて分割すると、図に示すように、電子商取引システムは注文ライブラリ、会員ライブラリ、製品ライブラリに分割されます

    (2) テーブルの垂直分割

    MySQLでサブデータベースとテーブルを作成する方法は何ですか?

    図に示すように、業務に応じてテーブルを分割し、user テーブルを user_base テーブルと user_info テーブルに分割します。use_base はログインの格納を担当し、user_info はログインの格納を担当します。基本的なユーザー情報の保存

    垂直分割の特徴:

      #各ライブラリ (テーブル) の構造が異なります
    • # 各データベース (テーブル) 内のデータの少なくとも 1 つの列が同じです
    • 各データベース (テーブル) の結合は全量のデータです
    • 垂直分割の利点と欠点

    #利点:

    #分割後、ビジネスが明確になります (特別なデータベースはビジネスごとに分割されます)
    • データのメンテナンスは簡単です。ビジネスに応じて、ビジネスは異なるマシンに配置されます
    • #欠点:

    単一テーブル内のデータ量が多い場合、書き込みと読み取りの負荷が高くなります

    • これは、特定のビジネスによって決定または制限されます。つまり、ビジネスがデータベースに影響を与えることがよくあります。 ボトルネック (ダブル イレブンのラッシュ セールなどのパフォーマンスの問題)

    • 一部のビジネスは結合に関連付けることができず、Java プログラム インターフェイス経由でのみ呼び出すことができるため、開発の複雑さが増大します

    • 2. 水平分割

    (1)データベース水平分割

    図に示すように、メンバー データベースに応じて分割、メンバー 1 データベース、メンバー 2 データベースに分割、userId、userId 末尾で分割数値 0 ~ 5 は 1 データベース、6 ~ 9 は 2 データベースです。他の方法もあります。剰余を取得して、偶数を 1 データベースに入れます。奇数をデータベース 2

    MySQLでサブデータベースとテーブルを作成する方法は何ですか?

    ( 2) テーブルを水平に分割します

    ##図に示すように、users テーブルを users1 テーブルと users2 テーブルに分割します。users2 テーブルは userId に基づいて分割され、係数は次のようになります。偶数は users1 テーブルに配置され、奇数は users2 テーブルに配置されます。

    MySQLでサブデータベースとテーブルを作成する方法は何ですか?#他の水平分割方法:

    Range は各データベース内の連続データを分割するために使用され、通常は時間範囲に基づいて使用されますが、最新のデータはホットスポットが発生しやすく、大量のトラフィックが発生するため、一般的にはあまり使用されません上、メリット:拡張するときは月ごとにライブラリを用意するだけなので非常に楽 新しい月が来たら自然と新しいライブラリを書くことになる デメリット:ほとんどのリクエストが最新データにアクセスする実際の運用環境での範囲の使用はシナリオによって異なります。ユーザーは最新のデータにアクセスするだけでなく、現在のデータと履歴データにも均等にアクセスします。

    • ハッシュ分散の利点:均等分散 各データベースのデータ量とリクエストプレッシャーのデメリット:容量拡張が面倒、データ移行のプロセスが発生する

    • (3)水平分割機能

    各ライブラリ(テーブル)の構造は同じです

    • 各ライブラリ(テーブル)のデータは異なる

    • 各データベース(テーブル)の和集合がデータの全量となる

    • (4) 水平型のメリットとデメリットsplit

    利点:

    単一データベース/単一テーブルのデータは一定量に維持 (削減) されます。パフォーマンスの向上

      #システムの安定性と負荷容量の向上
    • 分割テーブルは同じ構造を持ち、プログラムの変更が少なくて済みます。

    #欠点:

    • データの拡張は非常に難しく、多くのメンテナンスが必要です

    • 分割ルールを抽象化するのは困難です

    • シャード トランザクションの一貫性の問題一部のビジネスは結合に関連付けることができず、Java プログラム インターフェイスを通じてのみ呼び出すことができます

    4. サブデータベースとサブテーブルによって引き起こされる問題

      ##分散トランザクション
    • Cross-データベース結合クエリ
    • 分散グローバル一意 ID
    • 開発コストが高くつくプログラマーが必要
    • 5。サブライブラリとサブテーブル テクノロジーの選択方法

    (1) データベースとテーブルをシャーディングするためのオープンソース フレームワーク

    • jdbc直接接続層:

      shardingsphere 、 tddl

    • プロキシ プロキシ層:

      mycat、mysql-proxy (360)

    jdbc 直接接続層

    MySQLでサブデータベースとテーブルを作成する方法は何ですか?jdbc 直接接続層は、すべてのシャーディング ルールとすべてのシャーディング ロジックのため、jdbc アプリケーション層とも呼ばれます。 , 分散トランザクションの処理に関するこれらすべての問題を含む すべてはアプリケーション層にあります. すべてのプロジェクトは war パッケージで構成されています. すべてのフラグメントは jar パッケージとして書き込まれ、war パッケージに配置されます. Java を実行するには仮想マシンが必要です. 仮想マシンが実行されるときマシンが実行されると、war パッケージは次のようになります 内部のバイト ファイルは classLoder によって jvm メモリにロードされます すべてのシャーディング ロジックはメモリ側に基づいて動作します

    #(2) プロキシ層

    図に示すように、プロキシ層、すべてのシャーディング ルール、分散トランザクションの処理を含むすべてのシャーディング ロジックはすべて mycat で記述され、すべてのシャーディング ロジックは mycat に基づいて操作されます。 mycatMySQLでサブデータベースとテーブルを作成する方法は何ですか?

    (3) jdbc 直接接続層とプロキシ層のメリットとデメリット

    jdbc 直接接続層はパフォーマンスが高く、Java 言語のみをサポート、クロスデータベースをサポートします
    • プロキシ レイヤーは開発コストが低く、クロス言語をサポートしますが、クロスデータベースはサポートしません

    以上がMySQLでサブデータベースとテーブルを作成する方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。