name | priority |
---|---|
apple | 1 |
orange | 2 |
banana | 3 |
ユーザーが自由にアイテムの並び替えが可能だと想定します。
DB上ではその順序をpriorityによって表現しています。
例えばappleを一番下のpriorityにするような変更があったときに、
table全部を変更し1,2,3を採番し直すのは一番naiveな実装と言えますが
tableの更新が3回必要です。listが大きくなれば更新の量も増えます。batch updateもありますが...
で
例えばdefaultのpriorityを1000ずつincrementさせて保存して、priorityの変更がある場合
最上、最下位の場合は+1000, -1000
どこかの間の場合は 真ん中の値とルールを決めれば不動小数点が許す限り、1回の更新で常にpriorityの変更が可能な気がします。
とはいえ、すごく賢いシステムでもないような気がしています。
更新の回数をできるだけ減らしスケールするような方法はありますでしょうか?
tableのmodelを変更していただいても構いませんが、RDBの使用を前提とさせてください
回答2件
あなたの回答
tips
プレビュー