0
Aerospikeが約70分で1000万のキー値を挿入しています。私は挿入する手順は、次のとおりです。Aerospikeが長すぎて1000万のキー値を挿入しない
私は
レジスタ
スタートJavaコードのため千万時間を反復して呼び出すエアロUDFエアロサーバー上のUDFエアロメモリ内のすべてのキー値を持っています各キーと値のモジュール。
udfの内部に、キーが既に存在するかどうかを確認しています。はいの場合は、それ以外の場合は更新します。
私はレプリカ係数を持つ2エアロサーバーを持っている2.
は、書き込みパフォーマンスを向上させるか、一括書き込みを実行する方法はあります。私はaerospikeがバッチ書き込みをサポートしていないことを知っています。最適化された書き込み操作に対する提案。私は実行するために同期エアロスパイククライアントを使用する代わりに
private void put(String namespace, String setName, String binName, String keyVlaue, List<Integer> listIdsToBeAdd, List<Integer> listIdToBeRemoved) {
Key key = new Key(namespace, setName, keyVlaue);
getAerospikeClient().execute(writePolicy, key, "aerospike_udf", "update_record", Value.get(listIdsToBeAdd), Value.get(listIdToBeRemoved), Value.get(binName));
}
UDFモジュール
function update_record(record, list1, list2, bin_name)
local store_list = record[bin_name]
-- get a list from database record. Create one if it doesn't exits
if store_list == nil then
store_list = map()
end
if list2 then
for i=1, #list2 do
map.remove(store_list, list2[i])
end
end
if list1 then
for i=1, #list1 do
store_list[list1[i]] = 1
end
end
if map.size(store_list) == 0 then
record[bin_name] = nil
else
record[bin_name] = store_list
end
if not aerospike:exists(record) then
aerospike:create(record)
else
aerospike:update(record)
end
end
これを再現する簡単な例を投稿できますか?あなたが間違っていることがあれば、それをコードで見ることができます。 –
なぜ誰かがこれを投票しましたか?これは非常にシンプルで、繰り返し質問ですか、無関係か、その人でも解決策を知っていますか? – visingh
@PeterLawrey質問を更新しました。 – visingh