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[]{};
}
}
}
私はあなたがDocument Management Sytemのように見えます。私は前にこれを使用しています。これはinbuilt APIを持っていて、ドキュメントやオープンソースでもデータを取得して検索します。 http:// www。alfresco.com/ – Phani
ええ、私は野外施設について考えましたが、それは私にとっては過度のものになると思います。評価やタグ付きの画像を保存するには重すぎます。 – kodlan
Solr用の「画像タグ付け」ラッパーはありますか? – kodlan