Я ищу, чтобы хранить отсортированный список в базе данных. Я хочу эффективно выполнить следующие операции.
- Вставить (x) - Вставить запись x в таблицу
- Удалить (x) - удалить запись x из таблицы
- Before (x, n) - вернуть 'n' записей, предшествующих записи x в отсортированном списке.
- После (x, n) - вернуть 'n' записей, следующих за записью x в отсортированном списке.
- First (n) - вернуть первые 'n' записей из отсортированного списка.
- Last (n) - вернуть последние 'n' записи из отсортированного списка.
- Сравнение (x, y) - Учитывая две записи x и y из таблицы, найдите, если x> y.
Простой метод, который я мог бы придумать, - это сохранить в таблице какой-то атрибут «ранг» и выполнить запрос путем сортировки по этому атрибуту. Но в этом методе вставка / изменение записи с рангом становится дорогостоящей операцией. Есть ли лучший метод?
В частности, я хочу реализовать таблицу с помощью Amazon SimpleDB. Но общий ответ для реляционной базы данных также должен быть полезным.
Обновление профиля нагрузки:
Поскольку я планирую это для веб-приложения, это зависит от количества пользователей, которые используют приложение.
Если есть 100 000 активных пользователей (супер оптимизм: P), то моя очень приблизительная оценка в день будет
500 тыс. Выбирает, 100 тыс. Вставляет и удаляет, 500 тыс. Обновлений
Я ожидаю, что таблица вырастет в общей сложности до 500 тысяч.
Я хочу оптимизировать обновления, операции вставки и сравнения. Ранг предметов будет постоянно меняться, и мне нужно постоянно обновлять таблицу.