對於某些數據結構,從Redis開始,我正在尋找其他具有良好磁盤/ SSD性能的解決方案。我最近發現了Aerospike,這似乎在SSD環境中表現優異。在Aerospike中建立數百萬個存在檢查的最佳方法?
其中最需要內存的結構是大約100.000個Redis集合,每個集合最多可包含10.000個字符串。每個字符串都在10到30個字符之間。
這些集合主要用於存在/唯一性檢查。
什麼是建模這些模型的最佳方法?我通常會看到2個選項: *將redis設置爲Aerospike lset *分別對一組中的每個值進行建模。
除了這個選擇,100.000 Redis集合用作鍵的分區。由於地區原因,在Aerospike中可能有類似的分區/命名空間。但是,我很確定Aerospike中'namespacing'的概念不用於這種關鍵分區。在Aerospike中做什麼是正確的方法(如果有的話),或者是不需要的?
謝謝。與你的第三選擇,這實際上只是傾銷每-對(100.000 * 10.000 = 1.000.000.000)正確?可以肯定的是,這不是一個令人望而卻步的密鑰? I.e .:我可以想象,Aerospike每個鍵都保留一些in-mem條目以供指示?如果是這樣,那麼只有這個方面的mem要求已經遠遠超過了我未來的節點可以處理的範圍。關心?另外,格式「 _ 」在Aerospike中具有特殊含義,例如:告訴分片代碼在同一個分片上保留所有對具有相同的「 _」前綴? –
2014-10-29 16:07:09
由於aerospike可以支持最多2^160個按鍵,因此這不是一個令人難以接受的數字。 Aerospike每個索引條目佔用大約64個字節的內存。所以,對於索引的RAM要求大約是64GB,如果你放3-4個節點,RAM要求不算太差。但是這是假設最壞的情況,即100k * 10k。如果實際情況較差,需求會相應減少。對於aerospike而言,這並不意味着什麼。對於aerospike,這是一個正常的關鍵。分片基於這個鍵。所以,一套鑰匙不會在一起。除非你有其他原因,否則你不應該這樣做。 – sunil 2014-10-29 16:35:53