SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
Шардинг	
  в	
  MongoDB	
  
Сергей	
  Туленцев	
  
Разработчик,	
  h@p://netstat24.com 	
   	
  	
  
2013	
   dev.it-­‐porUolio.net	
  
Шардинг	
  в	
  MongoDB	
  
Сергей	
  Туленцев	
  
Разработчик,	
  h@p://netstat24.com 	
   	
  	
  
2013	
   dev.it-­‐porUolio.net	
  
Ликбез	
  по	
  шардингу	
  
dev.it-­‐porUolio.net	
   3	
  
•  Что	
  это	
  такое?	
  
Ликбез	
  по	
  шардингу	
  
4	
  
Ликбез	
  по	
  шардингу 	
  	
  
•  Shard	
  key	
  
5	
  
Range-­‐based	
  sharding	
  
•  Что	
  это	
  такое?	
  
•  Shard	
  key	
  очень	
  важен	
  
– Хороший	
  ключ	
  улучшает	
  производительность	
  
– Неудачный	
  ключ	
  –	
  ухудшает	
  
6	
  
Range-­‐based	
  sharding	
  
•  Примеры	
  плохих	
  ключей	
  
– Основан	
  на	
  времени	
  
7	
  
Range-­‐based	
  sharding	
  
•  Примеры	
  плохих	
  ключей	
  
– Другое	
  монотонно	
  возрастающее	
  значение	
  
8	
  
Range-­‐based	
  sharding 	
  	
  
•  Примеры	
  плохих	
  ключей	
  
– Маленькая	
  мощность	
  (cardinality)	
  
9	
  
Range-­‐based	
  sharding	
  
•  Примеры	
  хороших	
  ключей	
  
– No	
  sca@er/gather	
  
10	
  
Range-­‐based	
  sharding	
  
•  Примеры	
  хороших	
  ключей	
  
11	
  
Range-­‐based	
  sharding	
  
•  Плюсы	
  
– Range	
  queries	
  
12	
  
Range-­‐based	
  sharding	
  
•  Минусы	
  
– Горячие	
  шарды	
  
– Неумный	
  алгоритм	
  балансировки	
  
•  Pinning	
  chunks	
  to	
  shards	
  
13	
  
Range-­‐based	
  sharding	
  
•  Подставляем	
  костыль	
  
14	
  
Range-­‐based	
  sharding	
  
•  Подставляем	
  костыль	
  
15	
  
Hash-­‐based	
  sharding	
  
•  Теперь	
  «из	
  коробки»	
  
16	
  
Hash-­‐based	
  sharding	
  
•  Плюсы	
  
– Равномерное	
  распределение	
  операций	
  записи	
  
•  Минусы	
  
– Неэффективные	
  range	
  queries	
  
– Бесполезный	
  db.printShardingStatus()	
  
17	
  
Выводы	
  
•  Выбирайте	
  shard	
  key	
  с	
  умом	
  
– Одно	
  лечим,	
  другое	
  калечим	
  
– Профилятор	
  –	
  наше	
  всё	
  
•  Ключ	
  на	
  основе	
  времени	
  –	
  плохо	
  
•  10gen	
  нас	
  любит	
  
18	
  
Спасибо	
  за	
  внимание.	
  Вопросы?	
  
•  @stulentsev	
  
•  h@p://tech.tulentsev.com	
  
•  sergei.tulentsev@gmail.com	
  
19	
  

Más contenido relacionado

La actualidad más candente

Михаил Сенин - Индексирование сайта: Яндекс.Вебмастер для устранения проблем
Михаил Сенин -  Индексирование сайта: Яндекс.Вебмастер для устранения проблем Михаил Сенин -  Индексирование сайта: Яндекс.Вебмастер для устранения проблем
Михаил Сенин - Индексирование сайта: Яндекс.Вебмастер для устранения проблем Yandex
 
Никулин Павел. Machine learning для текстового анализа
Никулин Павел. Machine learning для текстового анализаНикулин Павел. Machine learning для текстового анализа
Никулин Павел. Machine learning для текстового анализаДмитрий Шахов
 
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info it-people
 
Как быть всегда готовым зарабатывать больше: мониторинг, план Б
Как быть всегда готовым зарабатывать больше: мониторинг, план БКак быть всегда готовым зарабатывать больше: мониторинг, план Б
Как быть всегда готовым зарабатывать больше: мониторинг, план БPlaytini
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Ontico
 
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Lenvendo
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
Redis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияRedis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияAlexey Kachayev
 
Производительность Client-Side
Производительность Client-SideПроизводительность Client-Side
Производительность Client-SideAleksandr Boichenko
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlDaniel Podolsky
 
Текстовый анализ - теория и практика
Текстовый анализ - теория и практикаТекстовый анализ - теория и практика
Текстовый анализ - теория и практикаAlexey Chekushin
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchИлья Середа
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Daniel Podolsky
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Ontico
 

La actualidad más candente (20)

Михаил Сенин - Индексирование сайта: Яндекс.Вебмастер для устранения проблем
Михаил Сенин -  Индексирование сайта: Яндекс.Вебмастер для устранения проблем Михаил Сенин -  Индексирование сайта: Яндекс.Вебмастер для устранения проблем
Михаил Сенин - Индексирование сайта: Яндекс.Вебмастер для устранения проблем
 
Никулин Павел. Machine learning для текстового анализа
Никулин Павел. Machine learning для текстового анализаНикулин Павел. Machine learning для текстового анализа
Никулин Павел. Machine learning для текстового анализа
 
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
 
Как быть всегда готовым зарабатывать больше: мониторинг, план Б
Как быть всегда готовым зарабатывать больше: мониторинг, план БКак быть всегда готовым зарабатывать больше: мониторинг, план Б
Как быть всегда готовым зарабатывать больше: мониторинг, план Б
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
 
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
Redis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияRedis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использования
 
Производительность Client-Side
Производительность Client-SideПроизводительность Client-Side
Производительность Client-Side
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
Текстовый анализ - теория и практика
Текстовый анализ - теория и практикаТекстовый анализ - теория и практика
Текстовый анализ - теория и практика
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
poznay top 2
poznay top 2poznay top 2
poznay top 2
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
 

Más de IT-Portfolio

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...IT-Portfolio
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...IT-Portfolio
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...IT-Portfolio
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...IT-Portfolio
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...IT-Portfolio
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...IT-Portfolio
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...IT-Portfolio
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...IT-Portfolio
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...IT-Portfolio
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...IT-Portfolio
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...IT-Portfolio
 

Más de IT-Portfolio (13)

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
 

20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в MongoDB", Сергей Туленцев