The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Microsoft поглотил компанию Citus, развивающую СУБД на базе ..."
Отправлено KonstantinB, 26-Янв-19 23:25 
Все несколько не так. С буквами это просто пример. Проблема куда серьезнее, чем чудные буквы.

Порядок сортировки в Unicode определяется Collation-ами: для любого символа известно, "больше" или "меньше" он другого, то есть они все упорядочены. На основе этого строятся индексы (тот же btree).

У юникодных collation-ов есть версии, и делать утверждения о каком-то порядке символов можно только в рамках конкретной версии. Поменялась версия - поменялся порядок.

Репликация в постгресе физическая, байтики копируются один в один, в том числе и внутреннее представление индекса. Соответственно, помимо того, какой используется collation, надо хранить и его версию (и иметь возможность указать библиотеке, какая нам версия нужна), иначе развалятся алгоритмы, для которых важна инвариантность порядка сортировки в collation (тот же merge join).

В этом месте передаем пламенный привет glibc, в котором на версионирование collation-ов положен большой болт. Второй пламенный привет передается BSD-шникам, у которых utf-ные collation-ы поломаны испокон веков и won't fix.

Правильное решение тут одно - обходить [g]libc-шные strcoll* за сто миль (они максимум для чего пригодны, это сделать | sort в шелле, но уж никак не для СУБД), и использовать ICU. Это в проекте уже лет 10, но ни у кого не доходят руки (там свои проблемы, в частности, внутренний utf-16).

А microsoft тут, да, точно ни в чем не виноват. :-)

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру