Здесь проблема, которую я пытаюсь решить:
Мне нужно иметь возможность отображать разбитую по страницам, отсортированную таблицу данных, которая хранится в нескольких черепах базы данных.
Пейджинг и сортировка - хорошо известные проблемы, которые большинство из нас может решить любым количеством способов, когда данные поступают из одного источника. Но если вы раскалываете свои данные через осколки или используете DHT или распределенную базу данных документов или какой-либо вкус NoSQL, который вам нравится, все становится сложнее.
Здесь простая картина действительно небольшого набора данных:
Осколок |
данных
1 |
1 | D
1 | G
2 | B
2 | E
2 | H
3 | C
3 | F
3 | I
Отсортировано на страницы (Размер страницы = 3):
Страница |
данных
1 |
1 | B
1 | C
2 | D
2 | E
2 | F
3 | G
3 | H
3 | I
И если мы хотим показать страницу пользователя 2, мы вернемся:
D
E
F
Если размер рассматриваемой таблицы составляет примерно 10 миллионов строк или 100 миллионов, вы не можете просто вытащить все данные на веб-сервер/сервер приложений, чтобы отсортировать его и вернуть правильную страницу. И вы, очевидно, не можете позволить каждому отдельному осколку сортировать и размещать свой собственный фрагмент данных, потому что осколки не знают друг о друге.
Чтобы усложнить ситуацию, данные, которые мне нужно представить, не могут быть слишком устаревшими, поэтому предварительное вычисление набора полезных сортов заблаговременно и сохранение результатов для последующего поиска нецелесообразно.