20 апреля, dev {highload} - конференция о highload веб-разработке,...

19
Шардинг в MongoDB Сергей Туленцев Разработчик, h@p://netstat24.com 2013 dev.itporUolio.net

Upload: it-portfolio

Post on 14-Jan-2015

286 views

Category:

Technology


4 download

DESCRIPTION

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

TRANSCRIPT

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

Шардинг  в  MongoDB  

Сергей  Туленцев  Разработчик,  h@p://netstat24.com      

2013   dev.it-­‐porUolio.net  

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

Шардинг  в  MongoDB  

Сергей  Туленцев  Разработчик,  h@p://netstat24.com      

2013   dev.it-­‐porUolio.net  

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

Ликбез  по  шардингу  

dev.it-­‐porUolio.net   3  

•  Что  это  такое?  

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

Ликбез  по  шардингу  

4  

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

Ликбез  по  шардингу    

•  Shard  key  

5  

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

Range-­‐based  sharding  

•  Что  это  такое?  •  Shard  key  очень  важен  – Хороший  ключ  улучшает  производительность  – Неудачный  ключ  –  ухудшает  

6  

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

Range-­‐based  sharding  

•  Примеры  плохих  ключей  – Основан  на  времени  

7  

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

Range-­‐based  sharding  

•  Примеры  плохих  ключей  – Другое  монотонно  возрастающее  значение  

8  

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

Range-­‐based  sharding    

•  Примеры  плохих  ключей  – Маленькая  мощность  (cardinality)  

9  

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

Range-­‐based  sharding  

•  Примеры  хороших  ключей  – No  sca@er/gather  

10  

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

Range-­‐based  sharding  

•  Примеры  хороших  ключей  

11  

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

Range-­‐based  sharding  

•  Плюсы  – Range  queries  

12  

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

Range-­‐based  sharding  

•  Минусы  – Горячие  шарды  – Неумный  алгоритм  балансировки  

•  Pinning  chunks  to  shards  

13  

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

Range-­‐based  sharding  

•  Подставляем  костыль  

14  

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

Range-­‐based  sharding  

•  Подставляем  костыль  

15  

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

Hash-­‐based  sharding  

•  Теперь  «из  коробки»  

16  

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

Hash-­‐based  sharding  

•  Плюсы  – Равномерное  распределение  операций  записи  

•  Минусы  – Неэффективные  range  queries  – Бесполезный  db.printShardingStatus()  

17  

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

Выводы  

•  Выбирайте  shard  key  с  умом  – Одно  лечим,  другое  калечим  – Профилятор  –  наше  всё  

•  Ключ  на  основе  времени  –  плохо  •  10gen  нас  любит  

18  

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

Спасибо  за  внимание.  Вопросы?  

•  @stulentsev  •  h@p://tech.tulentsev.com  •  [email protected]  

19