タグ

cloudとjavaに関するuehajのブックマーク (2)

  • memcacheとDatastoreでライトバック付きKVSをつくる - スティルハウスの書庫の書庫

    Datastoreの鬼門である集計関数の代わりのカウンター等を実装するとき、sharded counterより高速なものを求めると、「とりあえずmemcacheに書き込んで、cron/TQでDatastoreに非同期に保存する」ような仕組みがほしくなります。カウンターに限らず、「ライトバック付きKVS」があればいろいろな局面で便利そうです。 そこで以下のようなコードを実装しました。 get操作 キーでmemcacheを探して、値があればそれを返す キーでDatastoreを探して、値があればそれを返す nullを返す set操作 キーと値をmemcacheに保存する 「キーリスト」を取得する 「キーリスト」にキーを追加してmemcacheに保存する Cron/TQで呼ばれる保存処理 「キーリスト」を取得して、Datastoreに保存する すべてのキーについて、memcacheのエントリーを

    memcacheとDatastoreでライトバック付きKVSをつくる - スティルハウスの書庫の書庫
  • App Engineは「ACID保証しない」ではなく「ACID保証したくなくなる」 - スティルハウスの書庫の書庫

    App Engine未体験の方の中には、「App Engineはトランザクションをサポートしていない」ような印象を持っている方もいるかもしれませんが、そんなことはありません。App Engineのドキュメントに The App Engine datastore is strongly consistent, but it's not a relational database.とあるように、エンティティグループ(EG)という限られた範囲ではACID特性を保証しています。 しかし、このEGが使いにくい。 1つのEGにトランザクションが集中するとリトライが多発するので、個々のEGを小さくに負荷が集中しないように設計しなければならない 例えばUserとそのAdressとか、子が少なくなるよう負荷が集中しないような使い方にする 異なるEG間で整合性確保するには作り込みが必要 すると必然的に1つのロ

    App Engineは「ACID保証しない」ではなく「ACID保証したくなくなる」 - スティルハウスの書庫の書庫
  • 1