我認爲S3和JSON可以繼續爲您工作,而不必去完整的關係數據庫系統。
如果您想象關係形式的解決方案,可以通過將表映射到S3中的目錄,將行中的單個文件映射到S3中的單個文件以及將每行中的列值作爲存儲在該文件中的JSON結構,將其轉換爲S3表示形式。在每個「行」= S3文件中存儲少量數據可讓您輕鬆更新數據。由於傳輸到S3或者完全失敗,您的更新將保持一致。
要發現表中有多少行,可以使用S3列表功能列出具有該表的通用前綴的文件。
S3控制檯使您能夠查看和瀏覽您的文件結構。
安全性可以由Amazon IAM提供。
自動備份可以通過使用生命週期規則複製到Amazon Glacier來完成。
如果使用此方法,您將獲得許多類似於關係的功能,但無需運行EC2服務器或使用Amazon RDS的額外開支和複雜性。
最後,編程所有這些都很簡單,因爲您之前的工作已經有了相應的工具。我懷疑你會有這樣的包來執行S3上所有必要的操作:
//---------------------------------------------------------------------
// Amazon S3
//---------------------------------------------------------------------
class S3 extends AmazonS3Client
{final String bucket;
S3(String u, String p, String Bucket)
{super(new BasicAWSCredentials(u, p));
bucket = Bucket;
}
boolean put(String k, String v)
{try
{final ByteArrayInputStream b = new ByteArrayInputStream(v.toString().getBytes());
putObject(bucket, k, b, new ObjectMetadata());
setObjectAcl(bucket, k, CannedAccessControlList.PublicRead); // Has to be here to allow change to reduced redundancy
changeObjectStorageClass(bucket, k, StorageClass.ReducedRedundancy);
setObjectAcl(bucket, k, CannedAccessControlList.PublicRead); // Has to be repeated because it is now a new object again
return true;
}
catch(Exception e) {log("Cannot put "+bucket+"/"+k+" to S3 because "+e);}
return false;
}
String get(String k)
{try
{final S3Object f = getObject(bucket, k);
final BufferedInputStream i = new BufferedInputStream(f.getObjectContent());
final StringBuilder s = new StringBuilder();
final byte[]b = new byte[1024];
for(int n = i.read(b); n != -1; n = i.read(b)) {s.append(new String(b, 0, n));}
return s.toString();
}
catch(Exception e) {log("Cannot get "+bucket+"/"+k+" from S3 because "+e);}
return null;
}
String[]list(String d)
{try
{final ObjectListing l = listObjects(bucket, d);
final List<S3ObjectSummary> L = l.getObjectSummaries();
final int n = L.size();
final String[]s = new String[n];
for(int i = 0; i < n; ++i)
{final S3ObjectSummary k = L.get(i);
s[i] = k.getKey();
}
return s;
}
catch(Exception e) {log("Cannot list "+bucket+"/"+d+" on S3 because "+e);}
return new String[]{};
}
}
}
在我看來,你看起來像文件管理系統。我已經使用過這個..它有內置的API來獲取數據和搜索文檔和開源。 http:// www。alfresco.com/ – Phani 2012-04-20 09:58:08
是的,我想過露天咖啡,但我想這對我來說會是一種矯枉過正。太重,只能存儲帶有評分和標籤的圖像。 – kodlan 2012-04-20 10:04:55
Solr有沒有「圖像標記」包裝? – kodlan 2012-04-20 10:06:00