すべてのプロダクト
Search
ドキュメントセンター

Hologres:アーキテクチャ

最終更新日:Jan 11, 2025

このトピックでは、Hologres のアーキテクチャと各コンポーネントの役割について説明します。

Hologres アーキテクチャ

次の図は、従来の分散システムで一般的に使用される 3 つのストレージコンピューティングアーキテクチャを示しています。Architectures

  • 共有ディスクまたは共有ストレージ

    このアーキテクチャでは、分散ストレージクラスタがデプロイされます。各ワーカーノードは、データがスタンドアロンデータベースに格納されているかのように、この共有ストレージクラスタ内のデータにアクセスします。ストレージクラスタは簡単にスケーリングできます。ワーカーノードは、データの同期を実装し、データの整合性を確保するために、分散調整メカニズムを採用する必要があります。ワーカーノードの最大数は制限されています。

  • 共有なし

    各ワーカーノードは独自のストレージをマウントします。ワーカーノードは、1 つのシャードからのデータのみを処理できます。ワーカーノードは相互に通信できます。データを要約するために、データ要約ノードが必要です。このアーキテクチャは簡単に拡張できますが、欠点もあります。フェイルオーバー時にワーカーノードがオンラインになると、ワーカーノードはサービスを提供する前にデータがロードされるのを待つ必要があります。さらに、ストレージリソースとコンピューティングリソースを同時にスケールアウトする必要があり、柔軟性に欠けます。スケールアウト後、データの再調整に時間がかかります。

  • ストレージの分離

    共有ストレージアーキテクチャと同様に、分散ストレージクラスタがデプロイされ、このアーキテクチャで共有されます。ワーカーノードがデータを処理するモードは、共有なしアーキテクチャのモードに似ています。データはシャーディングされます。各ワーカーノードは、1 つのシャードからのデータのみを処理します。各コンピューティングノードはローカルキャッシュを持つことができます。

    ストレージの分離アーキテクチャには、次の利点があります。

    • 容易なデータ整合性: システムは、一度に 1 つのワーカーノードがシャードにデータを書き込んでいることを確認するだけで済みます。

    • 柔軟なスケーリング: コンピューティングリソースとストレージリソースは、必要に応じて個別にスケールアウトできます。これにより、大規模なプロモーションなどのシナリオでの柔軟性が向上します。コンピューティングリソースが不足している場合は、コンピューティングリソースのみをすぐにスケールアウトできます。これにより、共有なしアーキテクチャで必要となる時間と労力を要するデータの再調整が不要になります。共有なしアーキテクチャとは異なり、各ワーカーノードのストレージ容量は無制限です。

    • コンピューティングノードの障害からの迅速な回復: フェイルオーバー後、必要に応じて分散共有ストレージからデータを非同期的にプルできます。これにより、フェイルオーバーからの回復が加速されます。

Hologres はストレージの分離アーキテクチャを採用し、Alibaba が開発した Pangu をストレージシステムとして使用しています。これは、Hadoop Distributed File System (HDFS) に似た分散ファイルシステムです。ビジネス要件に基づいて Hologres の容量をスケーリングして、オンラインシステムのトラフィックピークに容易に対応できます。

Hologres アーキテクチャのコンポーネント

次の図は、Hologres のアーキテクチャを示しています。Hologres architecture

アーキテクチャは、次のコンポーネントで構成されています。

  • コンピューティング層

    • フロントエンド (FE)

      FE は、SQL ステートメントの認証、解析、および最適化を行います。Hologres インスタンスには複数の FE があります。Hologres は PostgreSQL 11 と生態学的に互換性があります。標準の PostgreSQL 構文を使用して開発したり、PostgreSQL 互換の開発ツールや Business Intelligence (BI) ツールを使用して Hologres に接続したりできます。

    • HoloWorker

      HoloWorker は、Query Engine (QE)、Storage Engine (SE)、HOS Scheduler などのコンポーネントで構成されています。HoloWorker は、ユーザタスクのスケジュールと計算を行います。

      • QE

        • Hologres Query Engine (HQE)

          Alibaba Cloud によって開発された HQE は、スケーラブルな超並列処理 (MPP) アーキテクチャを使用して完全並列コンピューティングを実装します。HQE はベクトル化演算子を使用して CPU を最大限に活用し、究極のクエリパフォーマンスを実現します。HQE は、Hologres QE のメインモジュールです。

        • PostgreSQL Query Engine (PQE)

          PQE は、PostgreSQL との互換性を提供します。PQE は、PostGIS や PL/Java、PL/SQL、PL/Python で記述されたユーザー定義関数 (UDF) など、さまざまな PostgreSQL 拡張機能をサポートしています。HQE でサポートされていない関数と演算子は、PQE を使用して実行できます。HQE は各バージョンで継続的に最適化されています。最終的な目標は、PQE のすべての機能を統合することです。

        • Seahawks Query Engine (SQE)

          SQE を使用すると、Hologres を MaxCompute にシームレスに接続できます。これにより、データを移行またはインポートすることなく、あらゆるタイプの MaxCompute ファイルに高パフォーマンスでアクセスできます。また、これにより、Hologres はハッシュテーブルやレンジクラスタテーブルなどの複雑なテーブルにアクセスし、PB レベルのバッチデータのインタラクティブ分析を実装できます。

      • SE

        SE は、データの管理と処理を行います。SE を使用すると、データに対して作成、読み取り、更新、削除 (CRUD) 操作を実行できます。

      • キャッシュ

        キャッシュコンポーネントは、クエリ結果をキャッシュしてクエリのパフォーマンスを向上させます。

      • HOS スケジューラ

        HOS スケジューラは、軽量のスケジューリング機能を提供します。

    • メタサービス

      メタサービスはメタデータを管理し、FE にメタデータを提供します。メタデータには、テーブル構造と SE 上のデータ分布が含まれます。

    • Holo マスター

      Hologres は Kubernetes クラスタにネイティブにデプロイされます。クラスタ内のワーカーノードに障害が発生した場合、クラスタは短期間で別のワーカーノードを作成して、ワーカーノードレベルの可用性を確保します。Holo マスターは、各ワーカーノード内のコンポーネントの可用性を維持します。コンポーネントが異常な状態になった場合、Holo マスターは短期間でコンポーネントを再起動して、コンポーネントによって提供されるサービスを回復します。

  • ストレージ層

    • Hologres データは Pangu ファイルシステムに格納されます。

    • Hologres は、Pangu に格納されている MaxCompute データにアクセスできます。Pangu は、Hologres と MaxCompute 間の効率的な相互アクセスを実装します。

    • Hologres は、Object Storage Service (OSS) および Data Lake Formation (DLF) 内のデータにアクセスして、データレイクの分析を高速化できます。これら 2 つのサービスに格納されているデータは、CSV、ORC、Parquet、Hudi、Delta、Meta Data などの形式である場合があります。Hologres は、OSS にデータを格納することもできます。これにより、ストレージコストが削減されます。