Я работаю над приложением, которое развернуто в Интернете. Частью приложения являются функции поиска, где результат представлен в отсортированном списке. Приложение предназначено для пользователей в нескольких странах, используя разные локали (= правила сортировки). Мне нужно найти решение для правильной сортировки для всех пользователей.
В настоящее время я сортирую с ORDER BY в моем запросе SQL, поэтому сортировка выполняется в соответствии с языковым стандартом (или LC_LOCATE), установленным для базы данных. Эти правила некорректны для пользователей с языком, отличным от заданного для базы данных.
Кроме того, чтобы еще больше усложнить проблему, я использую нумерацию страниц в приложении, поэтому, когда я запрашиваю базу данных, я запрашиваю строки 1–15, 16–30 и т. Д., В зависимости от страницы, которая мне нужна. Однако, поскольку сортировка неверна, каждая страница содержит неправильно отсортированные записи. В худшем случае весь набор результатов для данной страницы может быть не в порядке, в зависимости от локали / правил сортировки текущего пользователя.
Если бы мне пришлось отсортировать код (на стороне сервера), мне нужно извлечь все строки из базы данных, а затем отсортировать. Это приводит к огромному снижению производительности, учитывая объем данных. Поэтому я бы хотел этого избежать.
Есть ли у кого-нибудь стратегия (или даже техническое решение) для решения этой проблемы, которая приведет к правильно отсортированным спискам без потери производительности при загрузке всех данных?
Технические подробности: База данных PostgreSQL 8.3, приложение EJB3, использующее EJB QL для запроса данных, работающее на JBoss 4.5.