C.4. Последовательности

C.4.1. Поддерживаются ли в Shardman глобальные последовательности?

Да, поддерживаются. Однако есть особенности их работы, которые следует учитывать. Глобальные последовательности по сути являются регулярными последовательности на каждом сегменте, и им выделяются последовательные блоки (65536 номеров по умолчанию). Когда выдаются числа, локальный последовательный блок передаётся локальному последовательному блоку в сегменте. То есть числа из глобальных последовательностей уникальны, но строгой монотонности в них нет (в отличие от PostgreSQL). Но могут быть «дыры» в значениях, выдаваемых генератором последовательностей.

C.4.2. Как создать глобальную последовательность?

CREATE SEQUENCE ... WITH (GLOBAL);
    

Обратите внимание, что функция shardman.next_value должна использоваться для получения следующего значения последовательности:

SELECT shardman.next_value('acl_id_seq'::regclass); 
    

Это будет исправлено в будущих версиях, и нормальная выборка также будет работать корректно. Тип данных bigserial (автоматическое создание последовательностей и вывод из неё значений по умолчанию) реализован и работает как для сегментированных, так и для глобальных таблиц. Рекомендуется использовать bigserial при отсутствии особых требований.