意味
アドホッククエリ(Ad Hoc)とは、ユーザーが自分のニーズに応じてクエリ条件を柔軟に選択でき、システムがユーザーの選択に応じて対応する統計レポートを生成できることを意味します。アドホック クエリと通常のアプリケーション クエリの最大の違いは、通常のアプリケーション クエリはカスタム開発されるのに対し、アドホック クエリはユーザー定義のクエリ条件によって定義されることです。
特徴
アドホック クエリの特徴: アドホック クエリと固定クエリの最大の違いは、通常の固定クエリがカスタム開発される (つまり、クエリ ステートメントが事前に作成されており、一時的に変更されない) のに対し、アドホック クエリは次のように定義されることです。ユーザー定義のクエリ条件。いつでも変更できます。
アドホック クエリと OLAP については、次の図の関係図を参照できます。
OLTP、OLAP、およびアドホック クエリの違いと関連性
現時点では、データ処理は主に 2 つの側面に焦点を当てています。1 つは OLTP (オンライン トランザクション処理)、もう 1 つは OLAP (オンライン分析処理) です。
OLTP: 従来のリレーショナル データベースの主なアプリケーションであり、主に基本的および日常的なトランザクション処理 (通常は銀行 ATM の入出金、金融証券のリアルタイム更新など) に使用されます。これらの操作は、主にデータベースに対して比較的単純です。操作の主体は一般に製品のユーザーであり、OLTP は非常にトランザクション性が高く、前述の銀行業務や金融の側面など、一般に可用性の高いオンライン システムです。
OLAP: DSS 意思決定支援システムと呼ばれることもありますが、これはいわゆるデータ ウェアハウスに似ており、アナリストがデータのあらゆる側面から情報を迅速、一貫性、対話的に観察して、データを深く理解できるようになります。DW 内のデータを分析して何らかの決定的なもの (レポートなど) を導き出すことによって、情報をさまざまな側面から観察する、つまりデータを異なる次元から分析する (事実を次元の観点から見る) ため、OLAP は多次元分析とも呼ばれます。
2 つの比較を次の図に示します。
属性の比較 | OLTP (mysql など) | OLAP (ハイブなど) |
---|---|---|
操作オブジェクト | データベース | データベース |
読み取り機能 | クエリごとに返されるレコードの数は少数です | 大量の記録を要約する |
書き込み機能 | ユーザー入力のランダムで低遅延の書き込み | 大量のデータをバッチインポートする |
データの老化 | 現在の最新データ | 現在の履歴の集計データ |
操作の粒度 | レコードレベル | 複数テーブル結合分析 |
使用するシーン | ユーザー、Java EE プロジェクト | 企業の意思決定をサポートするデータアナリスト |
具体的な仕事内容 | 単純な事柄 | 複雑なクエリ |
所要時間 | リアルタイム | 個別のライン データ ウェアハウスとリアルタイム データ ウェアハウス |
データ量 | GB | テラバイトからペタバイトまで |
データ操作 | DDL、DMLをサポート | 更新と削除は通常サポートされていません |
主な機能 | ステータスのクエリまたは変更 | レポート、統計予測 |
ただし、アドホック クエリについては、一般的に OLAP と比較されます。ここでは、データ ウェアハウスでは一般にデータのバッチ処理 (基本的には前日のデータを処理) を実行し、固定データに対して行われることを説明します。明確な分析指標があります。たとえば、次の図は注文テーブルのデータです。
注文ID | オーダーエリア | 注文カテゴリー | 注文時間 | 注文金額 |
---|---|---|---|---|
1001 | 中国北部 | 電子 | 12月 | 456 |
1002 | 中国東部 | 食べ物 | 11月 | 489 |
1003 | 南西 | 自宅で | 2月 | 491 |
1004 | 北東 | 電子 | 4月 | 659 |
1005 | 北西 | ペット | 11月 | 369 |
1006 | 中国北部 | 食べ物 | 2月 | 159 |
明確な分析指標とは何ですか? 上記によると、事実を次元(事実とは測定値、この表では金額を指します)の観点から見ると、以下の表に示す7つの次元に従って金額を測定できます。
寸法 | メトリック | 分析指標 |
---|---|---|
カテゴリー | 総額 | … |
時間 | 総額 | … |
地域、カテゴリ | 総額 | … |
エリア、時間 | 総額 | どの地域で、いつ、いくらで売られたのか |
カテゴリ、時間 | 総額 | … |
地域、カテゴリ、時間 | 総額 | どの地域、どのカテゴリーで、いつから売上高が減少しましたか? |
上記の表の表示を通じて、つまり測定値をさまざまな次元から分析します
データ ウェアハウスの分析には、通常、次のような固定ルーチンがあります。
select area, time from table group by area, time;
このタイプのクエリは強化されたクエリとも呼ばれます
ある程度固まったデータの取得や読み込みのニーズを指し、最終的にはデータプロダクトの形でユーザーに提供することで、データの分析や運用の効率を向上させます。この種の要求に対する SQL は基本的に固定モードです。
しかし、残念なことに、何かが起こりました。通常業務では、上記の固めたクエリをうまくこなしているのですが、このとき、上司から突然依頼が来たのですが、スコープが上記の固定モードのSQLに属さないことをこれと呼びます。リクエストのタイプ アドホック クエリ (アドホック クエリ) ホック クエリ)
アドホック クエリと固定クエリの概要:
SQL ステートメントに関しては、アドホック クエリと固定クエリの間に本質的な違いはありません。それらの違いは、固定クエリはシステムの設計と実装の時点で既知であり、すべてのクエリはインデックス、パーティショニング、その他のテクノロジを構築することでシステム実装中に最適化でき、これらのクエリが非常に効率的になることです。ただし、アドホック クエリはユーザーの一時的な運用ニーズであり、事前に手動で最適化することはできません。このようなクエリは通常、データベース内でリアルタイムに自動最適化する必要があるため、アドホック クエリはデータ ウェアハウスを評価するための重要な指標でもあります。データ ウェアハウス システムでは、使用されるアドホック クエリが増えるほど、データ ウェアハウスの要件が高くなり、データ モデルの対称性の要件も高くなります。
最後に、アドホック クエリを実行するために Hive を使用しないのはなぜでしょうか?
アドホック クエリの目的は非常に明確です。つまり、高速化することであり、要求した内容が結果として得られます。つまり、いつでもすぐに結果を確認できます。あなたはこの要求を提出しました。データ ウェアハウスの従来のハイブではアドホック クエリを実行することは間違いなく不可能であり、MR がデータを実行した後はおそらく暗闇になります。
関連フレームワーク
1. Druid: 時系列データをリアルタイムで処理する OLAP データベースです。そのインデックスは最初に時間に従ってスライスされ、クエリの際にはタイムラインに従ってインデックスもルーティングされます。
2. Kylin: コアは Cube です。Cube は事前計算テクノロジです。基本的な考え方は、事前にデータに対して多次元インデックスを作成し、さまざまな次元を組み合わせて可能なクエリ キューブを形成することです。もちろん、意味のない次元の組み合わせについては、枝刈り操作を実行できます。データ量が削減され、クエリは元のデータにアクセスせずにインデックスのみをスキャンして速度が向上します。
3. Presto: Mapreduce を使用せず、ほとんどのシナリオで Hive よりも 1 桁高速です。重要なのは、すべての処理がメモリ内で行われることです。複数のデータ ソースがサポートされています。同時に、異なるデータ ソースに対して結合操作を実行できます。
4. Impala: メモリ コンピューティングに基づいており、速度は速く、サポートされているデータ ソースは Presto ほど多くありません。
5. SparkSQL: 構造化データを処理するために Spark によって使用されるモジュールであり、抽象データ セット DataFrame および DataSet を提供し、分散 SQL 用のクエリ エンジンです。Hive on Spark を実装し、Spark エンジンを使用して Hive のメタデータ情報を読み取り、Hive 内のデータを操作することもできます。
6. ClickHouse: ClickHouse はサードパーティのコンポーネントに依存せず、カラム型ストレージを使用します。複数のストレージ エンジンがサポートされており、ユーザーはさまざまなテーブルに応じてさまざまなストレージ エンジンを選択できます。同時に、最下層にはベクトル化エンジンも実装されます。
7. Doris: サードパーティのコンポーネントに依存せず、列ストアド データベースでもあります。MySQL 構文と互換性のある MySQL プロトコルを使用すると、MySQL 構文を使用して Doris データベースにクエリを実行できます。新しいバージョンではベクトル化エンジンも実装されています。