1

ローカル ストレージ内の競合するバージョンのドキュメントを管理するスクリプトを作成する必要があります。私は現在、2 つの代替案について考えていますが、どちらがよりスケーラブルかを判断するのに苦労しています。

ドキュメントは JSON として保存され、バージョンを識別するためのidとがあります。revision

現在、次のように localstorage にパスを作成しています。

PATH/TO/DOCUMENT/id

このパスで、ドキュメントは JSON として保存されます

{"id":"abc","version":"1-a","content":"foo"}

POST、PUT(更新)、GET、および REMOVE を使用しています。POST/PUT が必要idversion、GET/REMOVE が必要なだけですid

競合するバージョンがローカル ストレージに存在することを許可するには、どうすればよいかわかりません

a)既存のパスに保存し、次のように2 番目の JSON文字列としてバージョンを追加します。

PATH/TO/DOCUMENT/id   {"id":"abc","version":"1-a","content":"foo"},
                      {"id":"abc","version":"2-b","content":"foodforthought"}

b)path.idに保存し、「単一ファイル」を保持します

PATH/TO/DOCUMENT/id.1-a   {"id":"abc","version":"1-a","content":"foo"}
PATH/TO/DOCUMENT/id.2-b   {"id":"abc","version":"2-b","content":"foodforthought"}

質問:
スケーラビリティと多くの異なるバージョンが存在するという点で、どちらがより理にかなっていますか?

4

3 に答える 3

1

オプション A を選択します。各 JSON エントリが小さく、ドキュメント全体ではなく ID のみを持つ場合。これは、管理とクリーンアップが簡単です。

オプション B を選択: 各 JSON エントリが大きい場合。@Bergiに同意します

于 2012-12-13T10:51:29.860 に答える
1

スケーラビリティと多くの異なるバージョンが存在するという点で、どちらがより理にかなっていますか?

オプション B. ここでは、JSON 文字列全体 (および操作に関してはオブジェクト) をメモリにロードすることなく、単一のドキュメント バージョンを読み書きできます。特に多くの巨大なドキュメントに関しては、これにより時間を節約できます.

ただし、1 つの巨大なドキュメントの多くのバージョンがあり、それらが互いにあまり変わらない場合は、パフォーマンスとメモリ使用量の点で、それらをインクリメンタルまたは差分バージョン管理で保存する方がよい場合があります。 「JSONファイル」。

于 2012-12-13T10:48:34.203 に答える
0

私が正しく理解していれば、それは最良のアーキテクチャについての質問です。

「多くの異なるバージョン」がある可能性があるため、クイックルックアップが必要ですlocalStorage。したがって、オプションbの方が適しています。オプションaでは、ドキュメントの特定のバージョンを検索する場合は常に、IDが含まれるすべてのアイテムabcを調べてから、探しているバージョンを見つけるためにそれらを反復処理する必要があります(最悪の場合:線形検索)。

ただし、.区切り文字として(ドット)を使用することは、おそらく最善のアイデアではありません。区切り文字は、バージョン番号とファイル名で使用されていない文字である必要があります。私はのようなものを提案します/。したがって、キーは次のようになります。

PATH/TO/DOCUMENT/id/1-a   {"id":"abc","version":"1-a","content":"foo"}
PATH/TO/DOCUMENT/id/2-b   {"id":"abc","version":"2-b","content":"foodforthought"}
于 2012-12-13T11:01:32.603 に答える