20 апреля, dev {highload} - конференция о highload веб-разработке,...
DESCRIPTION
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в MongoDB", Сергей Туленцев (netstat24.com)TRANSCRIPT
Шардинг в 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