【发布时间】:2016-04-25 09:31:23
【问题描述】:
我正在使用 Google Guava Table 来处理 JAVA 应用程序中的表格结构化数据。我的数据对象由表和一个地图组成,它存储每列的数据类型(int、string、decimal ...)。
public class DataTable {
private Table<Integer, String, Object> data;
private Map<String, Integer> types;
private static int maxObjectSize;
private static int rowSize;
private DiskCache dc;
public DataTable(){
//Getter and Setter
此对象可能会变得非常大且占用内存(最多 10,000,000 行和 16 GB 内存)。所以我的想法是每 50,000 行左右将 chache 到临时文件夹,并在需要时读取数据。
public void putRow(int row, String column, Object value){
data.put(row, column, value);
rowSize = data.rowKeySet().size();
if(rowSize == maxObjectSize){
writeCache();
}
}
我遇到了数据处理的大问题。一方面缓存非常耗时,另一方面又很难保证没有数据丢失,而且我还没有找到一个好的第三方 API 来缓存数据。
【问题讨论】: