同時実行性と高同時実行性(23)高同時実行性データベースカットデータベーススプリットデータベーススプリットテーブルのアイデア

序文

なぜデータベースを削除する必要があるのですか?ライブラリをカットする方法は?

主題の要約

  • データベースのボトルネック
  • データベースのカット
  • データベーステーブル

主な内容

まず、データベースのボトルネック

  • 1つのデータベースのデータ量が多すぎる(1〜2T):複数のライブラリ
  • 単一のデータベースサーバーのプレッシャーが大きすぎ、読み取りと書き込みのボトルネック:複数のライブラリ
  • 1つのテーブルのデータ量が多すぎる:サブテーブル

第二に、データベースの切断とサブライブラリ

現在、ほとんどの大規模システムは、データベースレベル、つまり1つのマスターライブラリと複数のスレーブライブラリで読み書き分離技術を使用しています。マスターライブラリは主にデータ更新とリアルタイムデータクエリを担当し、スレーブライブラリは非リアルタイムデータクエリを担当します。というのも、実際の状況では、データベースの読み取りが多かれ少なかれ行われるからです。通常、データの読み取りには時間がかかり、サーバーのCPU時間を多く消費します。これはユーザーエクスペリエンスに影響します。私たちの通常のアプローチは、マスターライブラリからクエリを抽出することです。これにより、複数のスレーブライブラリがロードバランシングを使用して、各スレーブライブラリのクエリ負荷を軽減します。「読み取りと書き込みの分離」を使用する目的は、マスターライブラリへの負荷を軽減することであり、ユーザークエリデータ要求をさまざまなスレーブライブラリに分散し、データソースをプログラムに動的に配置し、指定されたプログラムがマスターに接続することを選択できます。ライブラリは、ライブラリから操作するために接続されています。ここで使用される手法は、主に注釈、SpringAOPなどです。

マスタースレーブ切断ライブラリは次を参照できます:https : //www.jianshu.com/p/7c3ab519ceed

ここでは、「複数のデータソース(カッティングデータベース)」と「サブデータベース」の違いについて説明します。

それらはすべて複数のデータベースのサービス下にあります。

サブライブラリは、マイクロサービスアプリケーションが分割されると独自のデータベースを持つことに属し、アプリケーションが分割されない場合、マルチデータソースは2つのライブラリに分割され、ビジネスに応じて異なるコードを使用して異なるデータベースに接続します。

参考のために、次を参照してください:http : //www.imooc.com/article/25256
https://www.cnblogs.com/shamo89/p/10032390.html

第三に、データベーステーブル

1.サブテーブルはいつ考慮されますか?

SQLとインデックスの最適化を行ったほどデータテーブルが大きい場合でも、基本的な操作の速度は使用に影響を与えるため、テーブルを考慮する必要があります。

2.サブテーブル戦略

(1)横型テーブル

単一のテーブルのデータ量を減らし、クエリのパフォーマンスを最適化するために、特定のルール(これらのテーブルは同じデータベースに格納されている)に従って、テーブル内の異なるデータ行を異なるデータベーステーブルに分散します。

(2)縦型テーブル

一般に、データのアクティビティに応じて分割されます。たとえば、ブログシステムの場合、これは、著者のタイトル(コールドデータ)、ブログの訪問数、いいね!の数(アクティブデータ)など、ゆっくり変化するデータ用です

(3)Mybatisサブテーブルプラグインshardbatis2.0

このプラグインの使用については、https://www.cnblogs.com/shamo89/p/10033349.htmlを参照してください。

おすすめ

転載: www.cnblogs.com/jmy520/p/12740802.html