[英]Java: how to store sparse data efficiently
我有超過10億個項目,大約有1000列(矩陣)。 但是對於95%列的唯一值比率小於百分比,因此該數據可以歸類為稀疏數據 。
什么是用於在Java中存儲此類數據的高效且生產的解決方案?
不確定你是否已經考慮過這一點。 如果你確實有數十億行,即使你找到了一種有效存儲稀疏矩陣的機制,你也可能無論如何都要在內存中保存那么多數據。
但是,您可以使用一個簡單的映射,其鍵是一個Pair
,用於保存基准的行和列。
public class Pair<P, Q> {
public final P p;
public final Q q;
public Pair(P p, Q q) {
this.p = p;
this.q = q;
}
// TODO: Implement equals and hashCode.
}
class Datum {
}
// My sparse database.
Map<Pair<Integer, Integer>, Datum> data = new HashMap<>();
這將使用接近最小的存儲空間,但不一定能解決您的問題。
好吧,我認為HashTable
這樣做的最佳選擇...... key-value
對對於相同的value
是有效的,即多個value
的一個key
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.