В этой статье рассматриваются несколько советов по оптимальному sharding стратегия в OpenSearch.

  1. Использование временных индексов везде, где это возможно. Как упоминалось в этой статье, использование временных индексов имеет ряд преимуществ.

  2. Если не уверены, начните с 1 осколок. Благодаря индексам, основанным на времени, он предлагает гибкость изменения количества сегментов в любое время.
    Например

if the event count per second is 100 and each event is 1KB, then per day
number of events = 100 per sec * 86400 secs in day = 86,40,000
approx size of each event = 1KB
size of all events per day = 1 KB * 86,40,000 = 86,40,000 KB = ~9 GB per day
Войти в полноэкранный режим

Выйти из полноэкранного режима

Каждый осколок достаточно хорош, чтобы держать его 30-50 Данные ГБ. В приведенном выше сценарии с ежедневным размером набора данных 9 GBа single shard должно быть достаточно в случае дневных индексов.

  1. Рассмотрим другой сценарий —
If the event count per second is 200 and each event is 2KB, then per day
number of events = 200 per sec * 86400 secs in day = 1,72,80,000
approx size of each event = 2KB
size of all events per day = 2 KB * 1,72,80,000 = 3,45,60,000 KB = ~34 GB per day

Войти в полноэкранный режим

Выйти из полноэкранного режима

Здесь также может быть достаточно одного сегмента, но это повлияет на индексацию, сделав ее медленнее. Выбор 3 основных сегментов будет означать, что размер каждого сегмента будет примерно 12 ГБ.

  1. Для сценария, обсуждаемого в пункте 3, осколки размером ~12 ГБ могут выглядеть слишком маленькими, но тогда прошлые индексы, доступные только для чтения, могут быть принудительно объединенный на 1 сегмент. В качестве альтернативы количество осколков может быть уменьшено для прошлых индексов путем их переиндексации, например, скажем, переиндексировать дневные индексы в месячные индексы, а затем принудительно объединить их. Это может привести к тому, что 30 дневных индексов с 1 сегментом каждого индекса (таким образом, всего 30 сегментов для 30 индексов) станут единым ежемесячным индексом, скажем, с 9 или 12 сегментами в зависимости от размера сегментов.

  2. Лучший способ — поэкспериментировать и выяснить, что работает лучше всего. Дневные индексы предлагают простор для экспериментов, поскольку шаблон можно легко изменить, чтобы изменить количество осколков для вновь созданных индексов.

  3. Держите осколки четного размера даже для разных типов индексов. Например. сказать twitter индекс имеет 5 shards каждый из 10 GBзатем дизайн posts index таким образом, чтобы размер осколка индекса сообщений также был приблизительно равен 10-15 GB или же 10-20 GB. Причина в том, что если twitter осколок индекса 10 GB а также posts осколок индекса говорит 50 GBто это может привести к неравномерному дисковому пространству.

Не стесняйтесь добавлять свои вопросы / мысли в комментариях ниже.