このトピックでは、階層ストレージアーキテクチャを使用するX-Engineのベストプラクティスについて説明します。
X-Engineの階層ストレージアーキテクチャは、次のサービスに最適です。
データへのアクセスは、明確な時間特性を示す。 例えば、読み出しおよび更新動作のほとんどは、履歴データではなく、最近書き込まれたデータに対して実行される。 X-Engineは、最近書き込まれたデータをメモリにキャッシュし、効率的な構造を使用してデータにインデックスを付けます。 これにより、データの読み書きが大幅に促進されます。 めったにアクセスされない履歴データはディスクに保存されます。 その結果、履歴データに対する読み書き性能は、最近書き込まれたデータに対する読み書き性能よりもわずかに劣る。
テーブルやデータベースのデータ量は膨大です。 X-Engineにデータを格納するために必要なディスク容量は、InnoDBにデータを格納するために必要なディスク容量の50% と10% です。 ディスク使用量の減少は、データ特性によって異なります。 InnoDBからX-Engineにデータを移行した後、データベースやテーブルをシャードする必要はありません。 1つのデータベースに最大10テラバイトのデータを保存できます。
アリババグループは、中国の大手電子商取引サービスプロバイダーとして、大規模なユーザーベースにサービスを提供しています。 Alibaba Groupが提供する多くのオンラインサービスには、膨大なストレージコストが必要です。 次のセクションでは、Alibaba Group内のX-Engineのユースケースについて説明します。
X-Engineの詳細については、「概要」をご参照ください。
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は、オンラインサービスに受け入れられる応答遅延も提供します。