0

Aerospike には、2015 年 6ac_1_2015-06-13_15月 13 日のアカウント 1 の支出情報を 15 分のセグメントに分けて含むセットがあります。つまり、すべてのレコードは 1 日内の 15 分のセグメントを表します。1 時間は 15 分のセグメントが 4 つあり、1 日は 24 時間であるため、96 個のレコードがあります。すべてのレコードには単一の bin がありspendます。

AerospikeClient.scanAll()すべての支出値を合計して使用した 1 日の合計支出を計算するには、次のようにします。

totalSpend += record.getDouble("spend");

これには 351 ミリ秒かかります。合計を計算するより効率的な方法はありますか、それともこれですか?

4

1 に答える 1

1

一般に、キー値ストアでは、可能であればそのような集計を 1 つのレコードに対してインプレースで実行し、情報のモデル化に使用されるレコードの数を最小限に抑える必要があります。

セットが 1 日を表す場合、アカウントが 1 つのレコードではない理由はありますか? 時間ごとにビンを持つことができ、ビンのデータ型はセグメントを保持するリストまたはマップです。他のビンは集計データを保持できます。

1日1セットということも気をつけています。名前空間ごとに 1023 セットという制限があります。その日が、セカンダリ インデックスが作成された整数または文字列ではない理由はありますか? このようにして、その日のデータを照会できます。または、unix-timestamp 値 (整数に対するセカンダリ インデックス) の場合は、正確な時間範囲をクエリできます。その中にすべての分単位のデータを含む 1 日あたりのレコード (制限があると仮定) は、私にとってより理にかなっています。

于 2015-06-14T17:10:55.487 に答える