Я хочу зберігати відсортований список всередині бази даних. Наступні операції хочу виконати ефективно.
- Вставити (x) - Вставити запис x у таблицю
- Видалити (x) - Видалити запис x з таблиці
- До (x, n) - Повернення записів 'n' перед записом x у відсортованому списку.
- Після (x, n) - Повернення записів 'n', що завершили запис x, у відсортованому списку.
- Перший (n) - Повернення перших записів 'n' зі списку відсортованих.
- Останнє (n) - Повернення останніх «n» записів із відсортованого списку.
- Порівняйте (x, y) - Давши два записи x і y з таблиці, знайдіть, якщо x> y.
Простий метод, про який я міг би придумати, - це зберігати якийсь атрибут 'rank' у таблиці та запитувати шляхом сортування за цим атрибутом. Але в цьому методі вставлення / зміна запису з рангом стає дорогою операцією. Чи є кращий метод?
Зокрема, я хочу реалізувати таблицю за допомогою SimpleDB Amazon. Але загальна відповідь на реляційну базу даних також повинна бути корисною.
Оновлення профілю завантаження:
Оскільки я планую це для веб-програми, це залежить від кількості користувачів, які використовують додаток.
Якщо є 100 тис. Активних користувачів (супер оптимізм: P), то моя дуже приблизна оцінка за день
500k вибирає, 100k вставляє та видаляє, 500k оновлення
Я б очікував, що стіл виросте в цілому до 500 тис.
Я хочу оптимізувати оновлення, вставити та порівняти операції. Ранг елементів буде постійно змінюватися, і мені потрібно постійно оновлювати таблицю.