データクエリ概要
データレイクにはストレージが複数あり、何を尋ねるかによってクエリ言語が異なります。 この節では、3つをそれぞれどう使うかを整理します。
| 尋ねたいもの | ストレージ | 言語 | ドキュメント |
|---|---|---|---|
| 設備・タグ・ユーザーなどのメタデータ | PostgreSQL | SQL | PostgreSQL |
| タグ値などの時系列 | Aster TSDB | CQL | CQL |
| 複数ストレージを一度に結合・大量分析 | Spark (Kyuubi) | Spark SQL | Spark SQL |
選び方の基準一行
1タグの1期間ならCQL、設備リストや設定ならPostgreSQL、 複数ストレージを混ぜるか数億行を走査するならSpark SQLです。
3つの性質が異なります
| PostgreSQL | Aster TSDB (CQL) | Spark SQL | |
|---|---|---|---|
| 得意なこと | 結合・制約・トランザクション | 1パーティションの時間範囲の参照 | 大量スキャン・ストレージ間結合 |
| 苦手なこと | 数億行の時系列 | 任意の結合、パーティションキーなしの参照 | 短い応答(秒単位の起動コスト) |
| 応答 | ミリ秒 | ミリ秒 | 秒~分 |
| 接続場所 | 5432 | 9042 | 10000 (Kyuubi) |
🔴 CQLをSQLのように使わないでください。 Aster TSDBは「パーティションキーで探し、クラスタリング順で走査する」
ストレージです。パーティションキーなしで条件を付けると全ノードを探すことになり、その場合Aster TSDBは
ALLOW FILTERINGを要求します — その要求は警告であって許可ではありません。
そのようなクエリはSpark SQLに送ってください。
どこに接続するか — 2つの経路
①コンソールから — ブラウザでSQLを実行します。アカウント・権限・監査が適用されます。
データゲートウェイコンソール がその画面です。 稼働中のノードに人が接続する正規の経路です。
②ノード内から — シェルで直接接続します。運用・デバッグ用です。
docker exec -it plantpulse-datalake pd node psql # PostgreSQL
docker exec -it plantpulse-datalake pd node cql # Cassandra (cqlsh)
運用ノードへの直接接続は最後の手段です
直接接続すると、ゲートウェイの権限・監査をスキップします。参照はコンソールで、シェルはコンソールではできないことにのみ 使用してください。
関連項目
- 時系列データベース — CQLの時系列関数・圧縮・全文検索
- データゲートウェイコンソール — ブラウザSQL実行
- クライアントライブラリ — プログラムからの接続方法