このトピックでは、階層ストレージアーキテクチャを使用するX-Engineのベストプラクティスについて説明します。
X-Engineの階層ストレージアーキテクチャは、次のサービスに最適です。
- データへのアクセスは、明確な時間特性を示す。 例えば、読み出しおよび更新動作のほとんどは、履歴データではなく、最近書き込まれたデータに対して実行される。 X-Engineは、最近書き込まれたデータをメモリにキャッシュし、効率的な構造を使用してデータにインデックスを付けます。 これにより、データの読み書きが大幅に促進されます。 めったにアクセスされない履歴データはディスクに保存されます。 その結果、履歴データに対する読み書き性能は、最近書き込まれたデータに対する読み書き性能よりもわずかに劣る。
- テーブルやデータベースのデータ量は膨大です。 X-Engineにデータを格納するために必要なディスク容量は、InnoDBにデータを格納するために必要なディスク容量の50% と10% です。 ディスク使用量の減少は、データ特性によって異なります。 InnoDBからX-Engineにデータを移行した後、データベースやテーブルをシャードする必要はありません。 1つのデータベースに最大10テラバイトのデータを保存できます。
アリババグループは、中国の大手電子商取引サービスプロバイダーとして、大規模なユーザーベースにサービスを提供しています。 Alibaba Groupが提供する多くのオンラインサービスには、膨大なストレージコストが必要です。 次のセクションでは、Alibaba Group内のX-Engineのユースケースについて説明します。
- X-Engineの詳細については、「Usage notes」をご参照ください。
- InnoDBからX-Engineにテーブルを変換する方法の詳細については、 DRDS 、「PolarDB-XDRDSのストレージエンジンをInnoDBからX-engineに変換する」をご参照ください。
淘宝網でTmallの履歴トランザクション注文を管理する
淘宝網は中国の大手オンライン販売業者であり、Tmallは淘宝網の消費者向けの専用ビジネス (B2C) プラットフォームです。 InnoDBを使用する場合、すべてのTmallユーザーの過去のトランザクション注文を格納するために使用されるデータベースインスタンスは、次の問題に直面します。
- 数兆のデータレコードには、ペタバイトのディスクスペースが必要です。
- 同時並行性の高い書き込み要求は、販売促進中に即座に応答する必要があります。
この大規模なデータボリュームの要件を満たすために単一のデータベースインスタンスをスケールアウトできない場合は、より多くのデータベースインスタンスを作成してパフォーマンスを向上させ、ストレージ容量を増やすことができます。 ただし、これにより、運用および保守 (O&M) および管理がより複雑になり、ストレージコストが増加します。
X-Engineは、コンパクトなページベースのストレージ形式と効率的な圧縮アルゴリズムを提供します。 これにより、最大20テラバイトの生データセットを保存および処理できます。 X-Engineを使用した場合、InnoDBを使用した場合よりもインスタンスごとに処理できるデータ量が3倍になります。
トランザクション注文データベース内のデータへのアクセスは、次の特性を示します。最近生成されたデータレコードは頻繁に更新され、読み取られます。 X-Engineは、ホットデータとコールドデータの分離をサポートしています。 最近生成されたデータレコードをメモリにキャッシュし、データレコードに適切にインデックスを付けます。 これにより、データレコードが高速かつ低レイテンシで処理されることが保証される。
詳細については、「何兆ものTaobao注文レコードを処理するストレージエンジン」をご参照ください。
DingTalkのチャット履歴を管理する
DingTalkは、中国の何億人ものユーザーにサービスを提供する、主要なエンタープライズレベルのインスタントメッセージング (IM) ツールです。 従来のユーザレベルのIMツールとは異なり、企業レベルのIMツールは、チャット履歴を永続的に記憶し、単一のユーザが同時に複数の端末にログオンすることを可能にしなければならない。 ユーザーベースとチャット履歴が爆発的に増加するにつれて、DingTalkはストレージコストを削減し、安定した読み書きパフォーマンスを維持するという大きな課題に直面しています。
InnoDBが使用された初期の開発段階で、DingTalkチームはストレージコストを削減するためのさまざまなソリューションを検討しました。 これらのソリューションには、HBaseなどのNoSQLサービスが含まれていました。 ただし、エンタープライズレベルのIMでは、厳密なデータ一貫性が必要であり、さまざまなワークロードを処理するために、セカンダリインデックスなどの高度なデータベース機能に依存しています。
X-Engineが導入されると、ディスク使用量は62% 減少します。 さらに、X-Engineは、トランザクション処理やセカンダリインデックス作成などの高度なデータベース機能をサポートしています。 DingTalkチームは、コードを変更することなく、チャット履歴をX-Engineに移行できます。
詳細については、「DingTalkがX-EngineでApp Storeのトップランクを保護」をご参照ください。
Alibabaグループのイメージスペースを管理する
Alibaba Groupは無料のイメージスペースサービスを提供しています。 このサービスは、TaobaoとTmallの売り手が大量の画像を保存および管理するために使用します。 ただし、このサービスは、ストレージ容量を増やし、書き込みパフォーマンスを向上させるという大きな課題に直面しています。特に、売り手がアイテムの在庫維持単位 (SKU) を頻繁に更新するため、データ量が急増するDouble 11の前はそうです。
画像空間に格納される画像のメタデータの大部分はテキストである。 メタデータは、URL属性を含む。 X-Engineは、このシナリオに最適なプレフィックス圧縮アルゴリズムを提供します。 このアルゴリズムは、コンパクトなページベースのストレージフォーマットおよび他の一般的な圧縮アルゴリズムと連携して、メタデータを高い圧縮率で圧縮します。 イメージスペースサービスがInnoDBからX-Engineに移行されると、ディスク使用量は7分の6に減少します。
X-Engineは、ペタバイト単位のディスク容量を節約するだけでなく、InnoDBが提供するTPSに匹敵する安定した1秒あたりのトランザクションレート (TPS) を提供します。 X-Engineは、オンラインサービスに受け入れられる応答遅延も提供します。