PolarDB-X 2.0: 透過的な分散データベースの使用感

PolarDB-X 2.0: 透過的な分散データベースの使用感

透過的な分散は、PolarDB-X がまもなくリリースする機能です。これにより、アプリケーションはスタンドアロン データベースを使用しているかのように PolarDB-X を使用できるようになります。

従来のミドルウェアタイプの「分散データベース」と比較すると、透過的な分散機能を備えた PolarDB-X では、アプリケーションでパーティション キーの概念を考慮する必要がなくなりました。アプリケーションは、単一の MySQL マシン上で開発されたテーブル作成ステートメントとアプリケーション コードを、PolarDB-X に直接完全に移行して操作できます。

この記事では、PolarDB-X 透過的分散の新しい体験を紹介します。

PolarDB-X に WordPress をインストールする

WordPress は、MySQL をデータベースとして使用するオープンソースのブログ ソフトウェアです。この操作は、PolarDB-X に WordPress をインストールして、PolarDB-X の透過的な配布機能を体験することです。

私たちは、次の 3 つの簡単なステップのプロセスに従います。

DDL を変更せずに、テーブルを直接作成し、アプリケーションを実行してストレス テストを実行できます。最適化の概要は次のとおりです。

公式の WordPress イメージをそのまま使用すれば、インストール プログラムは標準の MySQL 構文を使用して、PolarDB-X でのテーブル作成やデータ初期化などのタスクを自動的に完了できます。
WordPress のストレステストを行ったところ、PolarDB-X の監視データにより、各ノードの負荷とデータ量がバランスの取れた状態であることが示されました。
PolarDB-X が提供する SQL 分析、DAS、その他のツールを使用すると、システム内のホット SQL を簡単に見つけることができます。
DBA は、アプリケーションを変更せずに、インデックスの作成やデータ分散の変更などの DDL ステートメントを通じて、システム パフォーマンスをさらに直接最適化できます。

PolarDB-Xは透過的な分散兵器を実現する

PolarDB-X が透過的な分散をどのように実現するかについて説明します。

透過的なデータパーティショニング

PolarDB-X は典型的な Share Nothing 分散データベースです。簡略化されたアーキテクチャは次のとおりです。

そのコアコンポーネントは、ステートレス コンピューティング ノード CN とステートフル ストレージ ノード DN です。

PolarDB-X の透過的な分散機能を理解するには、まず PolarDB-X 上でデータがどのように分散されるかを理解する必要があります。

PolarDB-X では、テーブルは主キー、セカンダリ インデックスなどの複数のインデックスで構成されます。PolarDB-X は各インデックスを個別にパーティション化し、パーティション キーがインデックス キーになります。

たとえば、一般的な電子商取引のシナリオでは、注文テーブルには主キー (id) と 2 つのインデックス (seller_id と buyer_id) があります。

  1. 作成する テーブル注文 ( id bigint 、 buyer_id varcharコメント'購入者' 、 seller_id varcharコメント'販売者' primary  キー(id)、インデックスsdx(seller_id)、インデックスbdx(buyer_id))

主キーインデックスの場合は、ID ごとにパーティション分割されます。インデックス sdx は seller_id によってパーティション分割されます。インデックス bdx は、次の図に示すように buyer_id によってパーティション分割されます。

インデックスをシャーディングした後、PolarDB-X はこれらのシャードを異なるストレージ ノードに分散し、次の図に示すように、データ量などの情報に基づいて負荷分散を実行します。

PolarDB-X では、テーブル作成ステートメントでパーティション キーを考慮する必要がなく、テーブルを自動的にシャーディングして負荷分散することもできます。

したがって、アプリケーションを PolarDB-X に移行する場合、スタンドアロン MySQL のテーブル作成ステートメントをエクスポートし、変更せずに PolarDB-X で直接実行できます。

透過的な分散トランザクション

分散トランザクションは、PolarDB-X の最も重要な基本機能です。これらはビジネスで広く使用されており、企業がトランザクション コードを変更する必要がなくなります。同時に、PolarDB-X はトランザクションを使用してインデックスを実装します。

PolarDB-X の分散トランザクションには次の機能があります。

Spanner と同様に、外部一貫性の最も強力な一貫性レベルを満たしています。構文は MySQL と完全に互換性があり、アプリケーションを変更する必要はありません。この動作は、MySQL RC および RR レベルをサポートします。

オンラインDDL

PolarDB-X は、さまざまなオンライン DDL タイプをサポートしています。代表的な DDL タイプをいくつか示します。

インデックスメンテナンス

スタンドアロン MySQL のインデックスとは異なり、PolarDB-X のインデックスはすべてグローバル インデックスであり、次のタイプが含まれます。

通常のインデックス、ユニークインデックス、クラスター化インデックス。このうちクラスター化インデックスは、MySQL と比較した PolarDB-X の新しいタイプのインデックスです。テーブル内のすべての列が含まれるため、バックテーブルのコストが回避されます。

PolarDB-X では、インデックスの作成は DDL を通じて行われ、サービスをブロックすることなくオンラインで実行されます。

例えば:

通常のインデックスを作成します: CREATE INDEX idx1 ON t1(name)
クラスター化インデックスを作成します: CREATE CLUSTERED INDEX idx1 ON t1(name)

インスタント追加列

列の追加は、ビジネスで最も一般的な DDL タイプです。 MySQL では、列の追加にかかる時間はデータの量に関係します (MySQL 8.0 では、テーブルの最後に追加された列は INSTANT です)。

PolarDB-X では、どこにでも列を追加するのは即時です。つまり、列を追加する操作には一定の秒数かかり、データ量とは関係なく、ビジネスに影響はありません。

パーティション調整

PolarDB-X は、ハッシュ、範囲、リスト、ブロードキャストの 4 つのテーブル分散戦略をサポートしています。ハッシュは連続書き込みのホットスポットを回避できるため、PolarDB-X はデフォルトでハッシュ戦略を使用します。ほとんどの場合、この戦略はシステムのパフォーマンス要件を十分に満たすことができます。

ただし、業務運用中にシステム パフォーマンスを向上させるために適切なパーティショニング戦略を選択する場合は、PolarDB-X の DDL ステートメントを通じて簡単に調整でき、PolarDB-X は新しいパーティショニング戦略に従ってテーブル データを再編成します。

例えば:

テーブルのパーティション戦略をハッシュに変更します: ALTER TABLE t1 PARTITION BY HASH(name)
テーブルのシャード数を32に変更します: ALTER TABLE t1 PARTITION BY HASH(name) PARTITIONS 32
テーブルをブロードキャストテーブルに変更します: ALTER TABLE t1 BROADCAST
テーブルのパーティション戦略をRANGEに変更します: ALTER TABLE t1 PARTITION BY RANGE(id)
任意の 2 つのパーティション戦略は、DDL ステートメントを通じて変換できます。

バックフィル速度の適応

多くの学生が、データ量が多いために非常に大きなテーブルに対する DDL 操作が 1 日以内に完了できないという経験をしたことがあるはずです。業務への影響を回避するために、日中の業務ピーク時にはパラメータを手動で調整して DDL バックフィル速度を低下させ、業務ピークが終了した夜間には DDL バックフィル速度を上昇させます。

PolarDB-X のバックフィルは、現在のシステム負荷に基づいて速度を自動的に調整します。

例えば:

この例では、4 つの段階があります。

最初はビジネス負荷がなく、DDLバックフィル速度は250,000行/秒に増加します。
ビジネス負荷が増加し始め、DDLバックフィル速度が130,000行/秒に急速に低下します。
ビジネスTPSは15,000で安定しており、DDLバックフィル速度は130,000行/秒で安定しています。
DDL完了後、ビジネスTPSは16,000で安定します。
この例から、PolarDB-X DDL のバックフィル速度は業務負荷に応じて自動的に調整され、DDL 期間中は業務の TPS への影響は最小限に抑えられていることがわかります。

オンラインをもっとオンラインにする

DDL 中のビジネスへの影響をさらに軽減するために、PolarDB-X では次のようなさまざまなテクノロジーも使用されています。

メタデータには複数のバージョンがあります。詳細については、https://zhuanlan.zhihu.com/p/347885003 を参照してください。
一時停止およびキャンセル可能
MDLデッドロック検出

要約する

PolarDB-X の透過的な分散機能により、単一マシン データベースから分散データベースへのアプリケーションの移行コストが大幅に削減されます。同時に、将来的には透明性を高めていきます。私たちが行っていることの一部は次のとおりです。

スケジュール戦略におけるホットデータのより洗練された視覚化、SQL監査分析にリンクされたインテリジェントな診断、グローバルインデックスがある場合のパーティションレベルの切り捨てのサポート
時間によるデータのスクロール、クリーニングなど

<<:  クラウド コンピューティング アーキテクチャ: 避けるべき 5 つのよくある間違い

>>:  Redisson 分散ロック ソースコード 2: ウォッチドッグ

推薦する

サイト上の記事更新により、多数の高品質のオリジナル記事を体験することができます

アルゴリズムの継続的な更新により、外部リンクが王様だった時代は終わりました。ウェブサイトの最適化の焦...

推奨: vpsdime-$7/6g メモリ/30g SSD/2T トラフィック/4 データセンター

vpsdime に新しいデータセンターが追加されました。今回は、英国のデータセンターが追加されました...

個々のウェブマスターはどのようにして高品質の外部リンクを作成できるのでしょうか?

昨日、私のウェブサイトが低品質の外部リンクに見舞われたため、主な原因はウェブサイトの外部リンクにある...

V.PSはどうですか? San Jose VPS レビュー、China Telecom CN2/China Unicom CU2/China Mobile CMIN2、Netflix\Disney\ChatGPT のロック解除など。

v.psはどうですか? v.ps サンノゼはどうですか? v.psは、米国西海岸のサンノゼにVPSク...

Baidu Statisticsを使用する際に注意すべき2つのポイント

ウェブマスター統計ツールは、ほぼすべてのウェブマスターが知って理解しなければならないツールです。現在...

Ctrip の Songguo.com がピンインドメイン名 songguo.com を購入

2012年2月15日、Ctripが出資し自主運営するSongguo.comが2月18日に正式オープン...

顧客関係を維持するためのツールとしてWeChatを使用する

WeChatが日常生活で多くの人が使用するコミュニケーションツールになったとき、このソフトウェアをう...

#推薦# archhosting-ロサンゼルス VPS/kvm 仮想/QN コンピュータ ルーム/512M メモリ、年間支払い 27 ドル

Archhosting は昨年登録されたばかりの会社ですが、4 年間運営しています。現在、Archh...

Webmaster.com からの日報: CN ドメイン名は 5 月 29 日に個人登録可能になります

1.CNドメイン名は5月29日に個人登録が開始されますAdmin5 Webmaster Networ...

タオバオ運営:最も効果的なタオバオプロモーション方法

現在、多くの販売者が、注文数が少なすぎるという問題を抱えています。この問題を解決する最も直接的かつ簡...

ウェブサイトのインタラクションデザイン入門 - インタラクションデザインの機能

前の章では、インタラクション デザインの理解について説明しました。この章では、主にインタラクション ...

ウェブマスター対百度:あなたは本当に私の心を理解していない

記事も長い間書いてないし、ブログも長い間更新してない。ちょっと退廃的な気分です。ハハ、今日は仕事が終...

SEOとは何だと思いますか?

SEO はコンバージョン率の向上、ランキングの向上、ウェブサイトの重量増加を目的としていると言う人も...

リバースホスト - 4 ドル / 1g メモリ / 30g SSD / 4 コア / 3T トラフィック / カリフォルニア

リバースホストは9月に設立された、onemanが運営するVPSです。SSDサーバーはE3-1270v...

CentosはグラフィカルインターフェースとVNCを構築します

インストールにより DNS がクリアされる可能性があるため、手順に従ってインストールする前に次のコマ...