2017-08-29 22 views

回答

3

由於Aerospike具有創紀錄的水平鎖定,每個寫入Aerospike的記錄都將記錄爲單個記錄。沒有看到如何在一次操作中寫入一百萬條記錄。基於其設置名稱和記錄密鑰的散列,給定名稱空間的記錄均勻分佈在整個Aerospike羣集中。所以從客戶端寫入Aerospike集羣必須是單獨的記錄寫入。

+0

想要更深入地瞭解服務器端的並行性,請閱讀Ronen的關於Aerospike內部結構的鏈接。 – pgupta

3

Aerospike是一個多節點,多核,多線程的分佈式鍵值數據庫。如果你想在儘可能短的時間內完成大量的寫操作,你需要利用這個事實,並行寫你的寫操作。正如Piyush所指出的那樣,每個對象本身都是作爲一個單獨寫入的,所以你應該把你的工作分解到這些客戶端中的多個客戶端和多個線程。這就是如何工具如aerospike/aerospike-loaderasrestore工作。

我已經描述過它是如何在一個單獨的帖子中的每個節點內工作的關於Aerospike internals

+0

謝謝@ronen,我只使用一個客戶端連接,當我試圖循環播放請求我得到下面的錯誤: {AerospikeError:最大節點/事件循環BB993AA892C9B0E異步連接將被超過:300 消息:'最大節點/事件循環BB993AA892C9B0E異步連接將被超過:300' , 代碼:-7, FUNC: 'as_event_get_connection', 文件: 'SRC /主/塞/ as_event.c', 線:447} – Vikalp

+0

即300 number是並行異步操作的最大數量。它通過設置客戶端的[Config.maxConnsPerNode](http://www.aerospike.com/apidocs/nodejs/Config.html)進行控制。如果你只使用一個客戶端連接,你將在客戶端而不是服務器端進行限制。與集羣可用於執行這些寫入操作的核心和線程數量相比,來自一個線程的異步仍然有限。 –