序文
なぜデータベースを削除する必要があるのですか?ライブラリをカットする方法は?
主題の要約
- データベースのボトルネック
- データベースのカット
- データベーステーブル
主な内容
まず、データベースのボトルネック
- 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を参照してください。