クライアントの表示順序を追跡するプロパティをデータストアに格納したいとします。しかし、クライアントはエンティティを移動することができ、表示順序を更新する必要があります。REST APIで表示順序を保存および更新するためのベストプラクティスは何ですか?
私が考えることができる最も明白な解決策は、エンティティと同じシーケンスで表示順序を整数として保存することです。この解決策の問題点は、最後のアイテムをどこに移動して最初に配置すれば、リスト内のすべてのアイテムを更新する必要があるということです。
私が考え出すことのできる別のアイデアは、1000、2000、...、100 000のようなギャップを持つシーケンスとして表示順序を格納することです。エンティティを移動するとき、表示値を常に中間値として与えます表示値1000と2000のエンティティ間にエンティティを配置する場合は、表示値1500を指定します。このソリューションでは、移動しているエンティティを更新するだけで済みますが、 2つのノード間の数字が足りなくなった場合、より多くのエンティティに影響を及ぼす何らかの並べ替えを行わなければなりません。あなたはそのギャップを非常に大きくして、ほとんど起こらないようにすることができます。
この問題を解決するためのベストプラクティスはありますか?
あなたが動いているエンティティとそれを後に置いているエンティティを少なくとも更新する必要があります。少なくとも複数のエンティティを更新する必要があります。 上記のソリューションがページングで機能しない理由がわかりません。 –
@DavidBergリスト全体を一度に読み込んでからページに表示すると、ソリューションが機能します。しかし、アイテムの1ページだけをロードしたい場合は、そのページの開始位置を簡単に見つける方法はありません。 – Dialecticus
うーん、私はページングの実装がどのように行われているかによって異なります。あなたがアイテムを別のページに移動しようとしている場合は、それが問題となる唯一の時間です。その場合は、そのページも取得する必要があります。または私はここに何かを逃していますか? –