1

私はこのようなことができるようにしたい:

 db.createDbIfNotExists("/some/file");

 db.doInTransaction(new DbTransaction() {
     public void do() {

         for(KeyValue kv : listOfKvs) {
            ...some code that might fail...
            db.save(kv.getKey(), kv.getObject());
         }
     }  
 }

キーが既に存在する場合は、新しいオブジェクトがそのキーで古いオブジェクトを上書きするようにします。ロードして削除したり、ロードして更新したりする必要はありません。

トランザクション中にコードが例外をスローした場合、書き込みをロールバックする必要があります。

約 2/3 分で、それぞれ 1k 未満のオブジェクトを 500,000 個書き込むことができる必要があります。

前もって感謝します。

トム

4

2 に答える 2

0

トム:

Redisが最善の策です。私はそれを広範囲に使用しました、そしてそれは結果整合性を持っているデータ構造サーバー(データベースサーバーと混同しないでください)です。それはバッキングファイルストアのあるメモリにあり、非常に高速です。詳細については、redis.ioをご覧ください。コマンドセットはhttp://redis.io/commands にあり、トランザクションもサポートされています http://redis.io/topics/transactions

複数の言語をサポートします。Javaクライアントはhttps://github.com/xetorthio/jedisで入手できます。

于 2012-04-19T16:56:01.663 に答える
0

Scalienを試してください。Javaドライバーがあり、一貫して複製し、ACIDトランザクションをサポートします。 http://scalien.com/products/

于 2012-05-01T03:09:13.373 に答える