# Шардирование таблиц: текущие ограничения

При работе с шардированными таблицами учитывайте следующие ограничения:

1. **Локальные и кластерные шардированные таблицы не могут сосуществовать на одних и тех же узлах**:
   На наборе узлов, входящих в кластер репликации, нельзя смешивать:
   - Локальные шардированные таблицы (созданные без префикса кластера: `create table s ... shards='N' rf='1'`)
   - Кластерные шардированные таблицы (созданные с префиксом кластера: `create table c:r ... shards='N' rf='M'`)

   **Пример**: рассмотрим кластер из 2 узлов, где:
   - Таблица `s` была создана независимо на каждом узле как локальная шардированная таблица
   - Таблица `r` реплицируется на оба узла через кластер
   
   В этой конфигурации попытка создать кластерную шардированную таблицу (`create table c:r ... shards='N' rf='2'`) на тех же узлах завершится ошибкой.

2. **Согласованность имени кластера**:
   - Подсистема шардирования при первом использовании привязывается к одному имени кластера; все кластерные шардированные таблицы на этих узлах должны использовать это же имя кластера.
   - После выбора имени кластера оно применяется ко всем последующим созданиям кластерных шардированных таблиц.
   
   **Пример**: если первую кластерную шардированную таблицу вы создаете так:
   ```sql
   create table c:users ... shards='N' rf='M'
   ```
   Все последующие кластерные шардированные таблицы должны использовать кластер `c`:
   ```sql
   create table c:orders ... shards='N' rf='M'  -- works
   create table d:items  ... shards='N' rf='M'  -- fails
   ```

3. **Изменение таблиц не поддерживается**:
   - После создания шардированной таблицы ее структуру нельзя изменить с помощью `ALTER TABLE`.
   - Чтобы изменить схему, нужно:
     1. Создать новую шардированную таблицу с нужной структурой
     2. Скопировать данные в новую таблицу
     3. Удалить старую таблицу

4. **Ограничение на число шардов**:
   - Не более 3,000 шардов на одну шардированную таблицу.
   - Это ограничение действует независимо от конфигурации кластера и размера таблицы.
   - Планируйте стратегию шардирования с учетом этого лимита.

5. **`rf` и `shards` должны быть целыми числами в кавычках**:
   - Оба параметра требуют заключенного в кавычки числового значения (`shards='10'`, `rf='2'`); значения без кавычек, нечисловые, пустые или дробные значения отклоняются.
   - На автономном (не кластерном) сервере `rf` должен быть равен `'1'`.
   - В кластере репликации `rf` должен быть от `1` до числа узлов в кластере.

<!-- proofread -->

