http://www.infoq.com/presentations/newport-evolving-key-value-programming-modelは KV ストアに関するビデオであり、redisがオブジェクトの属性を格納するための列ベースのスタイルを促進するという前提が全体にあります。オブジェクトをシリアル化して単一のキーの下に格納するのではなく、個別のキーの下で。
(この質問はredis 固有のものではありませんが、一般的な KV ストアの一般的なスタイルとベスト プラクティスです。)
たとえば「人」のブロブの代わりに、redis は、オブジェクトの属性が別のキーとして格納される列ベースのスタイルを推奨します。
R.set("U:123:firstname","Billy")
R.set("U:123:surname","Newport")
...
これがベストプラクティスなのか、人々が異なるアプローチを取るのか、私は興味があります.
たとえば、単一のキーの下でオブジェクトを「ピクル」できます。これには、単一のリクエストで取得または設定できるという利点があります。
または、人は、最初の項目がフィールド名インデックスなどのリストになる可能性がありますか?
これは私に考えさせました-階層的なキーストアが欲しいです、例えば
R.set(["U:123","firstname"],"Billy")
R.set(["U:123","surname"],"Newport")
R.get(["U:123"]) returns [("firstname","Billy"),("surname","Newport")]
次に、トランザクションを追加します。
with(R.get(["U:132"]) as user):
user.set("firstname","Paul")
user.set("lastname","Simon")
スケーリングの観点から、get と set のバッチ処理が重要になりますか?
これをサポートしている、または他の適用可能なアプローチを持っている主要なストアはありますか?