10 milyon anahtar değer eklemek için neredeyse 70 dakika süren Aerospike. Ben eklemek için takip adımlar şunlardır:Aerospike 10 milyon anahtar değer eklemek için çok uzun sürüyor
Ben
kayıt
başlangıç java kodu için 10 milyon defa yineleme ve çağrı aerospike UDF aerospike sunucuda UDF aerospike bellekte tüm anahtar değere sahip Her anahtar ve değer için modül.
Udf içinde, anahtarın zaten mevcut olup olmadığını kontrol ediyorum. Eğer evet ise, aksi takdirde güncelleyin.
Ben çoğaltma faktörü ile 2 aerospike sunucusu var 2.
yazma performansını artırmak veya toplu yazma gerçekleştirmek için herhangi bir yolu var mı. Aerospike'ın parti yazmayı desteklemediğini biliyorum. Optimize edilmiş yazma işlemine yönelik herhangi bir öneri. i yürütmek için senkronizasyon Aerospike istemcisi kullanarak yerine
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 modülünü
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
Bunu yeniden üreten kısa bir örnek gönderir misiniz? Yanlış yaptığınız bir şey varsa, kodda görebiliriz. –
Neden biri oy verdi? Bu çok basit, tekrarlanan soru mu, alakasız mı, yoksa o kişi bile çözümü biliyor mu? – visingh
@PeterLawrey Soruyu güncelledim. – visingh