4

私は、時間的 (YYYYMMDDHHmm) と空間的 (経度、緯度) の両方に配置された 50k から 100k のデータポイントを毎日インポートするプロジェクトに取り組んでおり、ユーザーが設定したクエリパラメーターに従って動的にマップにレンダリングします。特定のズーム レベル以下では、事前に計算されたクラスターを使用します。

この文脈の中で、ストレージ レイヤー用のデータベース エンジンを選択しているという事実を考慮して、私は現在、Cassandra と BigTable のバリアントを評価しています。

具体的には、Cassandra で複合パーティション キーを使用する場合と、GeoMesa が使用するような BigTable でインターリーブされたインデックス キーを使用する場合の違いを理解しようとしています。

私が理解している限り、これらのアプローチはどちらも COTS ハードウェアを活用でき、ホットスポットを減らしてスペース充填を最大化するように調整できます。

この 2 つを区別するために従うべき論理的な手順は何ですか? 近い将来、両方のアプローチをテストする予定ですが、より合理的で教育を受けたアプローチを聞きたいと思っています。

4

1 に答える 1

-1

GeoMesa は、Accumulo や Cassandra などの BigTable クローンの両方を実際にサポートしています。この記事の執筆時点では、Cassandra のサポートは現在初期段階にあります。READMEには、索引付けスキームの説明があります。

どちらの実装も、Z2 または Z3 (インデックスが単に空間的か時空間的かによって異なります) インターリーブ インデックスを使用します。BigTable クローンのインデックス作成では、フル解像度 Z3 が主キーに配置されます。クエリは、ソートされたキーの単なる範囲スキャンです。Cassandra では、パーティション キーを明示的に列挙する必要があります (完全なテーブル スキャンを実行している場合を除く)。そのため、GeoMesa の Cassandra インデックス作成では複合キーを使用して、パーティション キーと範囲キーの両方に情報を分散させます。パーティション キーは、世界を NxN セルにバケット化する大まかな時空間キーです。次に、範囲キーはフル解像度の Z3 インターリーブ インデックスです。クエリは、重複するバケットの列挙 (パーティション キー) と各バケット内の Z3 範囲 (範囲キー) に分解されます。パーティション キーを列挙する必要があると、クエリを満たすために多くのネットワーク チャットが発生する可能性があります。このおしゃべりを減らすには、バケットの解像度を設定することが重要です。

于 2016-04-27T21:08:56.233 に答える