1. はじめに従来のビッグデータ テクノロジーは、Google の GFS、MapReduce、Bigtable の 3 つと、そこから派生したオープン ソースの分散ファイル システム HDFS、分散コンピューティング エンジン MapReduce、分散データベース HBase から生まれました。初期のビッグデータ技術と需要は、超大規模データストレージ、データ処理、オンラインクエリなどに集中することが多かった。この段階では、多くの企業が Hadoop を導入するために独自のコンピュータルームを構築することを選択するだろう。ビッグデータ技術と需要は、オフラインコンピューティングと大規模ストレージに集中しています。一般的な例としては、T+1 レポート、大規模データのオンライン クエリなどがあります。 インターネット技術の急速な発展、データ規模の拡大、複雑な需要シナリオの出現により、従来のビッグデータアーキテクチャでは対応できなくなっています。近年のビッグデータ アーキテクチャの進化は、主に次の側面に反映されています。 1. 規模: ここでの規模は、主にビッグデータ技術の利用規模とデータサイズの増加に反映されます。ビッグデータ技術の利用の増加は、ますます複雑な要求の出現を意味しており、データ規模の拡大により、従来の準ビッグデータ技術 (MySQL など) ではすべての問題を解決できないことが判明しています。したがって、ストレージ コンポーネントを例にとると、通常、それらは異なるデータ レイヤーに分割され、さまざまなニーズを満たすために、スケール、コスト、クエリ、分析パフォーマンスなどのさまざまな次元で最適化の偏りが生じます。 2. リアルタイム: 従来の T+1 オフライン ビッグデータ テクノロジーでは、推奨と監視のほぼリアルタイムの要件を満たすことができません。ビッグデータのエコシステムと技術アーキテクチャ全体は、過去 10 年間で大幅にアップグレードされました。ストレージに関しては、従来の HDFS ファイル ストレージや Hive データ ウェアハウスでは低コストと更新可能性のニーズを満たすことができないため、Hudi などのデータ ソリューションが登場しました。コンピューティングの観点から見ると、従来の MapReduce バッチ処理機能では、データを数秒で処理することはできません。 Storm の比較的原始的なリアルタイム処理と Spark Streaming のマイクロバッチ処理が相次いで登場しました。現在、データフロー モデルに基づく Flink のリアルタイム コンピューティング フレームワークは、リアルタイム コンピューティング分野で絶対的な支配的地位を占めています。 3. クラウド ネイティブ: 従来の企業では、独自のコンピューター ルームを構築するか、クラウド上でマシンを購入して、クラウド ホスト形式でインスタンスを展開することを選択することがよくあります。しかし、このアーキテクチャには、オフピーク時の使用率が低い、ストレージとコンピューティングの統合によりストレージとコンピューティングの弾力性が低い、アップグレードの柔軟性が低いなど、さまざまな問題があります。クラウドネイティブのビッグデータ アーキテクチャは、いわゆるデータ レイクです。その本質は、クラウド上の弾力性のあるリソースを最大限に活用して、統合管理、統合ストレージ、弾力性のあるコンピューティングを備えたビッグデータ アーキテクチャを実装することです。これは、物理クラスターとローカル ディスクに基づく従来のビッグ データ アーキテクチャのコンピューティングおよびストレージ アーキテクチャを変換します。主な技術的特徴は、ストレージとコンピューティングの分離とサーバーレスです。クラウドネイティブのビッグデータ アーキテクチャでは、ストレージ サービス、コンピューティング サービス、メタデータ管理サービスなど、アーキテクチャの各レイヤーがサービス指向の開発に向けて進化しています。各コンポーネントは、独立して拡張できる異なるユニットに分割する必要があり、これにより、よりオープンで柔軟性と回復力が向上します。 この記事では、クラウドネイティブ ビッグデータ アーキテクチャのシナリオに基づいて、リアルタイム コンピューティングにおけるディメンション テーブルと結果テーブルのアーキテクチャ選択について詳しく説明します。 2. ビッグデータアーキテクチャにおけるリアルタイムコンピューティング1. リアルタイムコンピューティングのシナリオビッグデータは10年以上にわたって急速に発展しており、コンピューティング規模からよりリアルタイムなトレンドへと進化しています。最も一般的なリアルタイム コンピューティングのシナリオは次のとおりです。
2. Flink SQL リアルタイムコンピューティングリアルタイム コンピューティングには、バックグラウンドで非常に強力なビッグ データ コンピューティング機能が必要です。 Apache Flink は、オープンソースのビッグデータ リアルタイム コンピューティング テクノロジーとして誕生しました。 Hadoop や Spark などの従来のコンピューティング エンジンは本質的にバッチ コンピューティング エンジンであるため、限られたデータ セットを処理するだけでは処理の適時性を保証することはできません。 Apache Flink は当初からストリーミング コンピューティング エンジンとして設計されました。リアルタイムのストリーミング データをサブスクライブし、データをリアルタイムで分析および処理して結果を生成することで、データがすぐに価値を発揮できるようにします。 Flink は宣言型言語である SQL をトップレベル API として使用しており、これはユーザーにとって便利であり、クラウドネイティブのビッグデータ アーキテクチャのトレンドに沿っています。
上の図は、Flink SQL の基本的な操作の一部を示しています。 SQL 構文は標準 SQL と非常によく似ていることがわかります。例には基本的な SELECT および FILTER 操作が含まれます。組み込み関数(日付の書式設定など)を使用することも、カスタム関数を登録して使用することもできます。 Flink SQL は、リアルタイム コンピューティングをソース テーブル、結果テーブル、ディメンション テーブルの 3 つのタイプに分割します。これら 3 つのテーブルの DDL ステートメント (CREATE TABLE など) は、さまざまな入力および出力データ ソースを登録し、リアルタイム コンピューティング タスクのトポロジ関係を SQL DML (INSERT INTO など) を通じて表現することで、SQL を通じてリアルタイム コンピューティング タスクの開発を完了するという効果を実現します。
次の図は、完全なリアルタイム コンピューティングの例です。この例の Flink SQL タスクは、さまざまな製品カテゴリの GMV (総売上高) を 1 分ごとに計算することを目的としています。このタスクでは、Flink はユーザー注文データの Kafka ソース テーブルをリアルタイムで消費し、Redis ディメンション テーブルを通じて製品 ID を製品カテゴリに関連付け、1 分間のローリング ウィンドウに従って製品カテゴリ別の合計トランザクション金額を計算し、最終結果を RDS (MySQL などのリレーショナル データベース サービス) 結果テーブルに書き込みます。
これは非常に一般的なリアルタイム コンピューティング処理リンクです。次の章では、リアルタイム コンピューティングにおけるディメンション テーブルと結果テーブルの主要な機能を分析し、それぞれのアーキテクチャの選択について説明します。 3. ディメンションテーブルのリアルタイム計算1. 主な要件データ ウェアハウスの構築では、テーブルの関係または構造は通常、スター モデルとスノーフレーク モデルを中心に設計されます。リアルタイムコンピューティングも例外ではありません。一般的な要件は、データ ストリーム内のフィールドを完了することです。データ収集側で収集されるデータは限られていることが多いため、データ分析を実行する前に必要な次元情報を入力する必要があります。例えば、収集したトランザクションログには商品IDのみが記録されていますが、業務を行う際には店舗ディメンションや業種ディメンションに応じて集計する必要があります。これには、まずトランザクション ログを製品ディメンション テーブルに関連付けて、必要なディメンション情報を完成させる必要があります。ここで言及するディメンション テーブルは、データ ウェアハウスの概念に似ており、製品ディメンション、ユーザー レベル、場所ディメンションなどのディメンション属性の集合です。 ユーザーディメンション情報のデータストレージとして、リアルタイムコンピューティングシナリオでの大量の低遅延アクセスに対応する必要があります。この位置付けに基づいて、構造化ビッグデータ ストレージのいくつかの重要な要件をまとめます。 (1)高スループットと低遅延の読み取り能力 まず第一に、オープンソース エンジン Flink 自体のディメンション テーブルの最適化を考慮することなく、ディメンション テーブルは、リアルタイム コンピューティング シナリオで大量の (数万 QPS) データ アクセスを処理でき、また、非常に低いレイテンシ (ミリ秒) でクエリ データを返すことができる必要があります。 (2)コンピューティングエンジンとの高い統合能力 ディメンション テーブル自体の機能に加えて、コンピューティング エンジン自体にも、パフォーマンス、安定性、コストを考慮してトラフィック オフロード機能が備わっていることがよくあります。場合によっては、リクエストごとにダウンストリーム ディメンション テーブルにアクセスする必要はありません。たとえば、Flink は、ディメンション テーブル シナリオでの非同期 IO やキャッシュ戦略などの最適化機能をサポートしています。優れたディメンション テーブルは、オープン ソース コンピューティング エンジンと緊密に接続されている必要があります。一方で、コンピューティング層のパフォーマンスを向上させることができ、他方では、一部のトラフィックを効果的にオフロードし、ディメンション テーブルが過度のアクセスによって圧倒されないようにし、ディメンション テーブルのコンピューティング コストを削減することができます。 (3)軽量ストレージにおける計算能力の弾力性 ディメンション テーブルは通常、ディメンション属性などのメタデータ情報を格納する共有テーブルです。アクセス規模は大きいことが多いのですが、ストレージ規模はそれほど大きくないことが多いです。ディメンション テーブルへのアクセスの規模は、リアルタイム データ ストリーム内のデータ量に大きく依存します。例えば、リアルタイムストリームのデータ規模が数十倍に増加すると、ディメンションテーブルへのアクセス回数が大幅に増加します。別の例として、ディメンション テーブルにアクセスするために複数のリアルタイム コンピューティング タスクが追加されると、ディメンション テーブルに対するクエリの負荷が急激に増加します。このようなシナリオでは、ストレージ サイズが大幅に増加することはあまりありません。 したがって、コンピューティングはオンデマンドかつ弾力的に実行するのが最適です。リアルタイム コンピューティング タスクを追加または削除したり、アクセス トラフィックを増加させたりしても、アクセス パフォーマンスには影響しません。同時に、コンピューティングとストレージは分離する必要があり、アクセス コンピューティング量の急増によってストレージ コストが増加することがないようにする必要があります。 2. アーキテクチャの選択マイグレーションビッグデータとリアルタイムコンピューティング技術の黎明期、インターネットの初期のころには、迅速なサイト開発のために LAMP (Linux + Apache + MySQL + PHP) アーキテクチャが広く普及していました。そのため、MySQL にはすでにビジネス履歴データが存在するため、リアルタイム コンピューティングのディメンション テーブルの初期選択では、ディメンション テーブルとして MySQL が広く使用されています。 ビッグデータ アーキテクチャの更新に伴い、MySQL クラウド アーキテクチャも継続的に改善されていますが、ディメンション テーブルのアプリケーション シナリオでは、次の問題が依然として存在します。
上記の制限により、MySQL はビッグ データ ディメンション テーブル シナリオでパフォーマンスのボトルネックが発生し、コストも比較的高くなります。しかし、全体として、MySQL は非常に優れたデータベース製品です。データ規模がそれほど大きくないシナリオでは、MySQL は間違いなく良い選択です。 レディスクラウド アプリケーション アーキテクチャでは、MySQL は増大するビジネス負荷に耐えられないため、MySQL がクエリ トラフィックの大部分に耐えられるように、MySQL のクエリ結果セット キャッシュとして Redis がよく使用されます。 このアーキテクチャでは、MySQL がプライマリ ストレージ サーバーとして使用され、Redis がセカンダリ ストレージとして使用されます。 MySQL から Redis への同期は、binlog リアルタイム同期または MySQL UDF + トリガーを通じて実現できます。このアーキテクチャでは、Redis をキャッシュに使用して、MySQL がヒットするリスクを軽減しながらクエリ パフォーマンスを向上させることができます。 Redis にはユーザー データの弱一貫性コピーがキャッシュされるため、Redis はリアルタイム コンピューティングのディメンション テーブルとしてよく使用されます。ディメンション テーブルとしての MySQL と比較すると、Redis には次のような独自の利点があります。
Redis には優れた利点がありますが、無視できない欠点もあります。Redis には優れた拡張ソリューションがありますが、キャッシュされたデータはメモリに保存されるため、コストがかかります。ビジネス データのディメンション属性が大きい場合 (ユーザー ディメンション、製品ディメンションなど)、ディメンション テーブル ストレージとして Redis を使用するとコストが非常に高くなります。 テーブルストアTablestore は、Alibaba Cloud が開発した構造化ビッグデータ ストレージ製品です。詳しい商品紹介については公式サイトや公式ガイドをご参照ください。ビッグデータ ディメンション テーブルのシナリオでは、Tablestore には次のような独自の利点があります。
ソリューションの比較上記は、さまざまなディメンションにおける上記のいくつかのディメンション テーブル ソリューションの比較です。次に、コストを詳細に比較するために、いくつかの具体的なシナリオを示します。 1. 大容量ストレージと大容量コンピューティング: ディメンション テーブルには 100 億オーダーのディメンション データを保存する必要があり、総ストレージ容量は 1T 必要です。ビジネスでは Flink タスク側でキャッシュ戦略を構成していますが、ディメンション テーブルにシンクされる高 KV クエリが依然として存在します。ディメンション テーブルへのピーク QPS は 100,000 で、平均は 25,000 です。さまざまなディメンション テーブルの構成要件と購入コストは次のとおりです。 2. ストレージ容量とコンピューティング容量が少ない: ディメンション テーブルには 100 万個の地域ディメンション データを保存する必要があり、合計ストレージ容量には 10M が必要です。ビジネス エンドでは、トラフィックの大部分に耐えられるように、Flink タスクのディメンション テーブルに対して LRU キャッシュ戦略を構成します。ディメンション テーブルの QPS のピークは 1000 で、平均は 250 です。さまざまなディメンション テーブルの構成要件と購入コストは次のとおりです。 3. 高いストレージ容量と低いコンピューティング: ディメンション テーブルには 100 億のオーダー ディメンション データを保存する必要があり、合計ストレージ容量には 1T が必要です。ビジネス エンドでは、トラフィックの大部分に耐えられるように、Flink タスクのディメンション テーブルで LRU キャッシュ戦略を構成します。ディメンション テーブルの QPS のピークは 1000 で、平均は 250 です。さまざまなディメンション テーブルの構成要件と購入コストは次のとおりです。 4. 少ないストレージと高いコンピューティング能力: インメモリ データベースである Redis は、超高頻度データ KV クエリ機能を備えています。わずか 4 つのコアと 8G のメモリを備えた Redis クラスターは、160,000 QPS の同時アクセスをサポートでき、推定コストは月額 1,600 元です。ストレージ容量が少なく、コンピューティング能力が高いシナリオでは、コスト面で明らかな利点があります。 上記のコスト比較レポートから、次のことがわかります。 1) ストレージとコンピューティングの弾力性の欠如とリレーショナル データベース固有の欠点により、MySQL はさまざまなストレージとコンピューティングの規模でコストが高くなります。 2) インメモリ データベースとして、Redis は、ストレージ容量が少ない (約 128G 未満) 場合やコンピューティング負荷が高いシナリオでは、明確なコスト上の利点があります。ただし、メモリ ストレージはコストが高く、弾力性に欠けるため、データ規模が大きくなるにつれてコストは指数関数的に増加します。 3) Tablestore はクラウドネイティブ アーキテクチャに基づいており、ボリュームに基づいてストレージとコンピューティングを柔軟に管理できるため、データ ストレージとアクセスの規模が小さい場合にコストを削減できます。 4) NoSQL データベースである Tablestore は、ストレージ コストが非常に低く、大容量ストレージ (128G 以上) のシナリオでは明らかなコスト上の利点があります。 4. リアルタイム計算結果表1. 需要分析リアルタイムコンピューティングが完了した後のデータインポート用のストレージシステムとして、結果テーブルは主にリレーショナルデータベース、検索エンジン、構造化ビッグデータオフラインストレージ、構造化ビッグデータオンラインストレージに分けられます。具体的な違いは次の表にまとめられています。 これらのデータ製品は、それぞれのシナリオで独自の利点があり、その起源も異なります。調査を容易にするために、問題領域を絞り込み、リアルタイム コンピューティング シナリオでより優れた結果テーブル ストレージが果たすべき役割のみを考慮します。 前述のリアルタイム コンピューティングの主なシナリオの中で、リアルタイム データ ウェアハウス、リアルタイム推奨、リアルタイム監視の 3 つのシナリオで結果テーブルの選択を考慮する必要があります。一つずつ分析してみましょう。
2. 主な機能上記の需要分析を通じて、リアルタイム ビッグ データ結果テーブルのいくつかの主要な機能をまとめることができます。 1. 大規模データストレージ 結果テーブルストレージは、集中型の大規模ストレージとして位置付けられます。オンライン データベースの要約として、またはリアルタイム コンピューティング (またはオフライン) の入出力として、PB レベルのデータ ストレージをサポートできる必要があります。 2. 豊富なデータクエリと集計分析機能 結果テーブルには、豊富なデータ クエリおよび集計分析機能が必要であり、効率的なオンライン クエリをサポートするように最適化する必要があります。一般的なクエリの最適化には、キャッシュ、高同時実行性と低レイテンシのランダム クエリ、任意のフィールド条件の組み合わせによる複雑なクエリ、およびデータ取得が含まれます。クエリ最適化の技術的な手段はキャッシュとインデックス作成であり、その中でインデックスのサポートは多様化しており、さまざまなクエリ シナリオにさまざまなタイプのインデックスを提供します。たとえば、固定組み合わせクエリ用の B+ ツリーベースのセカンダリ インデックス、地理的位置クエリ用の R ツリーまたは BKD ツリーベースの空間インデックス、または複数条件組み合わせクエリとフルテキスト検索用の逆インデックスなどです。 3. 高スループット書き込み機能 リアルタイム計算用のデータ テーブルは、ビッグ データ コンピューティング エンジンからの膨大な結果データ セットのエクスポートに耐えられる必要があります。そのため、高スループットのデータ書き込みをサポートできる必要があり、通常は書き込みに最適化されたストレージ エンジンが使用されます。 4. データ導出機能 完全なデータ システム アーキテクチャでは、複数のストレージ コンポーネントが共存する必要があります。また、クエリおよび分析機能のさまざまな要件に応じて、データ派生システムの下でストレージを動的に拡張する必要があります。そのため、ビッグデータストレージでは、データ処理能力を拡張するためにストレージを拡張できる派生的な機能も必要です。ストレージ コンポーネントのデータ導出機能が優れているかどうかは、成熟した CDC テクノロジを備えているかどうかによって決まります。 5. クラウドネイティブアーキテクチャ: ストレージとコンピューティングコストの分離 クラウドネイティブのビッグデータ アーキテクチャでは、ストレージ サービス、コンピューティング サービス、メタデータ管理サービスなど、アーキテクチャの各レイヤーがサービス指向の開発に向けて進化しています。各コンポーネントを異なる単位に分割する必要があり、結果テーブルも例外ではありません。独立して拡張でき、よりオープンで、柔軟性と弾力性を備えた能力が必要です。 結果表だけから判断すると、クラウドネイティブ アーキテクチャに準拠したコンポーネント、つまりストレージとコンピューティングの分離アーキテクチャに基づいて実装された製品だけが、ストレージとコンピューティングのコストを分離し、独立して拡張できます。ストレージとコンピューティングを分離することの利点は、ビッグデータ システムではさらに明らかになります。簡単な例を挙げると、構造化ビッグデータストレージのストレージ容量はデータが蓄積されるにつれて増加しますが、書き込まれるデータの量は比較的安定しています。そのため、ストレージは継続的に拡張する必要がありますが、データの書き込みや一時的なデータ分析をサポートするために必要なコンピューティング リソースは比較的固定されており、オンデマンドです。 3. アーキテクチャの選択マイグレーション ディメンション テーブルと同様に、MySQL はビッグ データとリアルタイム コンピューティング テクノロジの黎明期における汎用ストレージ システムでした。ほぼすべての要件は MySQL を通じて満たすことができたため、その適用範囲は非常に広く、結果テーブルも例外ではありませんでした。データ規模が拡大し続け、需要シナリオがますます複雑になるにつれて、MySQL の取り扱いは少し難しくなります。結果テーブルのシナリオでは、主に次の問題が存在します。 1. ビッグデータの保存コストが高い: これは、ディメンション テーブルに関する以前の説明でも触れました。リレーショナル データベースの単位ストレージ コストは非常に高くなります。 2. 単一のストレージ システムではクエリ機能が制限されます。データのサイズが大きくなるにつれて、MySQL の読み取りおよび書き込みパフォーマンスの不十分さが徐々に明らかになります。さらに、分析 AP の需要が高まるにつれて、TP シナリオに適した MySQL のクエリ機能は比較的制限されます。 3. 高スループットデータ書き込み能力が低い:TP 型リレーショナルデータベースであるため、高スループットデータ書き込みは特に得意ではありません。 4. スケーラビリティが低く、拡張コストが高い: これは、ディメンション テーブルに関する以前の説明で説明しました。 MySQL のストレージ側での拡張には、データの複製と移行が必要となり、2 倍のリソースが必要になります。そのため、拡張の柔軟性が低く、コストが比較的高くなります。 上記の制限により、MySQL はビッグデータ結果テーブルのシナリオでパフォーマンスのボトルネックが発生し、コストが比較的高くなります。ただし、リレーショナル データベースであるため、ビッグ データの結果テーブルとして使用するには特に適していません。 HBase リレーショナル データベースの自然なボトルネックにより、BigTable コンセプトに基づく分散 NoSQL 構造化データベースが誕生しました。現在、オープンソース コミュニティで最もよく知られている構造化ビッグデータ ストレージは Cassandra と HBase です。 Cassandraはワイドカラム型NoSQLカテゴリーのトップ1製品であり、海外でも広く利用されています。この記事では、国内における HBase の幅広い応用に焦点を当てます。 HBase は、HDFS のストレージとコンピューティングの分離アーキテクチャに基づく WideColumn モデル データベースです。非常に優れたスケーラビリティを備えており、大規模なデータストレージをサポートできます。その利点は次のとおりです。 1.大規模なデータの大規模なストレージとハイスループットライティングのサポート:LSMに基づくストレージエンジンは、大規模なデータストレージをサポートし、ライティングに最適化され、ハイスループットデータライティングを提供します。 2。ストレージとコンピューティングの分離アーキテクチャ:基礎となる層は、HDFに基づいています。分離されたアーキテクチャは、必要に応じてストレージとコンピューティングを拡大することができます。 3.開発者のエコシステムは成熟しており、他のオープンソースのエコシステムとよく統合されています。長年にわたって開発されてきたオープンソース製品として、中国には多くのアプリケーションがあり、開発者コミュニティは非常に成熟しており、HadoopやSparkなどの他のオープンソースのエコシステムとよく統合されています。 HBaseには優れた利点がありますが、無視できないいくつかの大きな欠陥もあります。 1.弱いクエリ機能とデータ分析のサポートはほとんどありません:効率的なシングルローのランダムクエリと範囲スキャンを提供します。複雑なコンビネーション条件クエリは、スキャン +フィルターメソッドを使用する必要があります。注意しないと、完全なテーブルスキャンが発生しますが、これは非常に非効率的です。 HBaseのPhoenixは、クエリを最適化するためのセカンダリインデックスを提供します。ただし、MySQLのセカンダリインデックスと同様に、左端の一致するクエリ条件のみを最適化でき、最適化できるクエリ条件は非常に限られています。 2.弱いデータ派生能力:前の章で述べたように、CDCテクノロジーはデータ派生システムをサポートするコアテクノロジーですが、HBaseにはCDCテクノロジーがありません。 3。非クラウドネイティブサーバーレスサービスモデル、高コスト:前述のように、構造化されたビッグデータストレージの重要な要件の1つは、ストレージとコンピューティングコストの分離です。 HBaseのコストは、コンピューティングに必要なCPUコアの数のコストとディスクのストレージコストに依存します。固定比率の物理リソースに基づく展開モデルでは、CPUとストレージの間には常に削減できない最小比があります。つまり、ストレージスペースが増加するにつれて、必要な実際のコンピューティングリソースに基づいてコストを計算する代わりに、CPUコアコストもそれに応じて増加します。したがって、クラウドネイティブサーバーレスサービスモデルのみが、ストレージとコンピューティングコストの完全な分離を実現できます。 4。複雑な操作とメンテナンス:HBaseは標準のHadoopコンポーネントです。そのコア依存関係は、ZookeeperとHDFSです。専門的な運用とメンテナンスチームなしでは、運営および維持することはほとんど不可能です。 中国の上級者のほとんどは、HBaseに基づいて二次開発を行います。基本的に、彼らはHBaseの弱いクエリ機能を補うためにさまざまなソリューションに取り組んでいます。彼らは、自己開発のセカンダリインデックスソリューション、フルテキストインデックスのためのSOLRに接続する、または低い差別化などのデータセットなどのビットマップインデックスソリューションなど、独自のビジネスクエリ特性に従って独自のインデックスソリューションを開発します。 hbase + elasticsearch HBaseの弱いクエリ機能の問題を解決するために、多くの国内企業はElasticsearchを使用して、HBase + Elasticsearchソリューションに従ってデータの検索をスピードアップし、アーキテクチャを実装しています。 HBaseはビッグデータストレージと履歴コールドデータクエリに使用され、Elasticsearchはデータの取得に使用されます。 HBaseにはCDCテクノロジーがないため、ビジネスアプリケーションレイヤーはHBaseとElasticSearchをデュアルワイトするか、HBaseをElasticSearchに同期するためのデータ同期タスクを開始する必要があります。 このソリューションは、ElasticSearchを介したHBaseの弱いクエリ機能を大幅に補うことができます。ただし、HBaseとElasticsearch自体の能力がないため、次の問題が発生します。 1.開発コストとより複雑な操作とメンテナンス:顧客は、HBaseからElasticSearchまでの少なくとも2つのクラスターと完全なデータ同期を維持する必要があります。 HBaseとElasticsearchの一貫性を確保する場合は、上記のアプリケーションレイヤーマルチライターメソッドを使用する必要があります。これは分離されたアーキテクチャではなく、拡張するのがより複雑です。さらに、全体的なアーキテクチャは比較的複雑で、多くのモジュールやテクノロジーが関与しており、運用とメンテナンスコストも高くなっています。 2。高コスト:顧客は2つのクラスターを購入し、HBaseとElasticsearchの間でデータの同期を維持する必要があります。これにより、リソースコストが高くなります。 3.まだデータの導出機能はありません:このアーキテクチャでは、データはそれぞれHBaseとElasticsearchにそれぞれ書き込まれますが、HBaseもElasticsearchもCDCテクノロジーを備えておらず、データを他のシステムに柔軟に導出することはできません。 TableStore TableStoreは、Alibaba Cloudによって開発された構造化されたビッグデータストレージ製品です。詳細な製品の紹介については、公式ウェブサイトと権威あるガイドを参照してください。 TableStoreの設計概念は、データシステム内の構造化されたビッグデータストレージの需要を主に考慮し、派生データシステムの設計概念に基づいていくつかの特別な機能を設計および実装しています。以下は、TableStoreの技術的概念を簡単に要約しています。 1。ハイスループットライティングの大規模なデータストレージとサポート:LSMとB+ツリーは、2つの主流のストレージエンジンの実装です。 TableStoreはLSMに基づいており、大規模なデータストレージをサポートしており、ハイスループットデータライティングに最適化されています。 2。多様なインデックスを介してリッチクエリ機能を提供する:LSMエンジンの特性は、クエリ機能の欠点を決定し、クエリを最適化するためにインデックスが必要です。さまざまなクエリシナリオにはさまざまなタイプのインデックスが必要なため、TableStoreはさまざまなタイプのシナリオでのデータクエリ要件を満たすために多様なインデックスを提供します。 3. CDCテクノロジーをサポートし、データ派生機能を提供する機能:TableStoreのCDCテクノロジーはトンネルサービスと呼ばれます。トンネルサービスは、フルおよびインクリメンタルなリアルタイムデータサブスクリプションをサポートし、Flink Stream Computing Engineにシームレスに接続して、テーブルデータのリアルタイムストリームコンピューティングを実装できます。 4。ストレージとコンピューティングの分離アーキテクチャ:ストレージとコンピューティングの分離アーキテクチャが採用されており、基礎となる層は、ストレージとコンピューティングコスト分離を達成するための基礎であるFeitian Pangus分散ファイルシステムに基づいています。 5。クラウドネイティブアーキテクチャ、サーバーレス製品フォーム、およびメンテナンスフリー:クラウドネイティブアーキテクチャの最も重要な要因は、ストレージとコンピューティングの分離とサーバーレスサービスです。ストレージとコンピューティングの分離とサーバーレスサービスのみが、統一された管理、統一されたストレージ、弾性コンピューティングを備えたクラウドネイティブアーキテクチャを実現できます。サーバーレス製品であるため、ビジネス側はTableStoreを展開および維持する必要はありません。これにより、ユーザーの操作とメンテナンスコストが大幅に削減されます。 ソリューション比較 たとえば、結果テーブルは、合計ストレージ容量が1Tで、数千億の電子商取引注文データを保存する必要があります。ユーザーは、このタイプのデータをクエリして柔軟に分析する必要があります。毎日の注文クエリとデータ検索の頻度は1秒あたり1,000回で、データ分析は1分あたり約10回クエリされます。 以下は、さまざまなアーキテクチャの要件を満たすために必要な構成と、Alibaba Cloudでの購入コストです。 V. 結論この記事では、クラウドネイティブビッグデータアーキテクチャのリアルタイムコンピューティングディメンションテーブルと結果テーブルのアーキテクチャデザインと選択について説明します。その中で、Alibaba Cloud Tablestoreには、これらのシナリオにいくつかの特別な機能があります。この記事が私たちにより深い理解を与えることができることを願っています。 |
<<: パブリッククラウドを導入する前に慎重に検討する必要がある理由
>>: 2021年中国産業インターネット会議が間もなく開幕します。誰を観るべきでしょうか?
写真分散一貫性分散環境における一貫性とは、データが複数のコピーにわたって一貫性を維持できるかどうかを...
1. Minikube が必要な理由コンテナ技術の急速な発展と広範な応用により、Kubernetes...
グーグルは今年の元旦から、新規入札ユーザーに350元相当の広告料を無料にする活動を開始した。つまり、...
[[410358]]今日のビジネス テクノロジーにおいてクラウドが何を意味するのかを正確に定義できる...
私は実に感動しています。SEO インタラクティブ フォーラムの成功体験を皆さんと共有したいと長い間思...
本当に成功するウェブサイト運営とは、自分の興味や趣味に基づいてユーザーグループや市場を特定することだ...
新浪科技新聞は8月23日午後、百度(138.64、-0.80、-0.57%)とNuomi.comが共...
大企業はもはやオンプレミスのシステムだけで済ませることはできません。そのため、一部のデジタル業務をク...
ガートナーによると、パブリッククラウドサービスへの世界的な投資に関して、クラウドコンピューティングは...
はい、この文章はコピーされたものであることを認めますが、この記事のテーマを説明するのに非常に適してい...
VMware (NYSE: VMW) は、VMworld 2020 において、世界のデジタル インフ...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です著者丨ルーティン編集部出典: O...
SEO の道を歩むことは、「一歩ごとに心が痛む」と言えるでしょう。2012 年 6 月の Baidu...
単に「オフラインの保険をオンラインで販売する」という段階から、保険商品の真のインターネット化まで、保...
2015年には、オンライン教育や電子商取引の分野で企業向けライブストリーミングが登場し、市場は急速な...