SlideShare a Scribd company logo
1 of 33
Новые возможности MongoDB 2.4
Основано на презентации Элиота Хоровица (CTO, 10gen)
Изменения затронули:
1. Возможности для разработчиков
2. Изменения в работе
3. Производительность
4. Безопасность
5. Возможности для корпоративной версии
1. Изменения для разработчиков
Географические данные
Более точная сферическая модель
db.shapes.ensureIndex({shape: "2dsphere"})
Поддержка GeoJSON
http://geojson.org/
Формат обмена географическими данными на базе JSON
{ shape : { type : "Point" , coordinates : [ 40, 5 ] } }
{ shape : { type : "LineString" , coordinates : [ [ 40 , 5 ] , [ 41 , 6 ] ] } }
{ shape : { type : "Polygon" ,
coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
} }
Пересечение полигонов
db.shapes.find({
shape: {$geoIntersects: {
$geometry: { type: "Polygon",
сoordinates: [[ [0,0], [3,0], [3,3], [0,3], [0,0] ]]
}
}}
})
$geoWithin проверяет включение фигур в фигуру, заданную
условием поиска. Быстрее чем $near, так как не сортирует.
db.places.find( { shape :
{ $geoWithin :
{ $geometry :
{ type : "Polygon" ,
coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
} } } } )
Новые возможности агрегации
● Появилась в 2.2, улучшилась в 2.4
● Теперь в 3–5 раз быстрее
● Поддерживаются $near и $within в запросах к географическим
данным
● Поддерживается $concat: [ "$item.type", " ", "$item.category" ]
● Поддерживаются бинарные данные (передача дальше)
Поиск текста
(разберём отдельно)
Ограниченные по размеру массивы
(capped arrays)
$push: { quizzes: { $each: [ { id: 3, score: 8 },
{ id: 4, score: 7 },
{ id: 5, score: 6 } ],
$sort: { score: 1 },
$slice: -5
}
}
$setOnInsert
добавляет контроль над вставляемыми значениями
db.coll.update( { _id: 1 },
{ $setOnInsert: { x: 25, y: 30 } },
{ upsert: true } )
Старые операторы тоже работают: $inc, $rename, $set, $unset
2. Изменения в работе
Шардинг с хеш-ключом
Проще поддерживать, меньше перебалансировать
Лучше распределение операций чтения и записи
Можно сравнивать на равенство, нельзя на больше-меньше
Хранятся 64 бита от 128-битного MD5
Шардинг с хеш-ключом
Приводит числа с плавающей запятой
к 64-битным целым!
Шардинг с хеш-ключом
db.active.ensureIndex( { a: "hashed" } )
Анализ рабочих данных
Working set – то, что в памяти
MongoDB лучше всего себя чувствует, когда working set < ОЗУ
Теперь есть средства оценки
db.serverStatus( { workingSet: 1 } )
db.runCommand( { serverStatus: 1, workingSet: 1 } )
"workingSet" : {
"note" : "thisIsAnEstimate",
"pagesInMemory" : <num>, // Сколько страниц по 4к
"computationTimeMicros" : <num>,
"overSeconds" : num // Время оценки
},
Управление операциями
индексирования
Теперь их можно принудительно завершить :)
Индексы могут строиться в фоновом режиме одним экземпляром БД параллельно
друг с другом
Улучшена репликация
Улучшен алгоритм определения настоящих сбоев от просто глюков сети
Ускорена начальная синхронизация
3. Улучшения в
производительности
V8
Javascript быстрее везде, где он нужен: MapReduce, $where...
Лучше работает многопоточность
Агрегация быстрее в 2-5 раз
Ускорен подсчёт результатов
Ускорен $elemMatch (поиск по массиву)
3. Улучшения в безопасности
Роли
read
readWrite
dbAdmin
userAdmin
clusterAdmin
SSL
Инстансы могут (не обязательно) запрашивать сертификат,
выданный авторизованным центром
mongod --sslOnNormalPorts --sslPEMKeyFile /etc/ssl/mongodb.pem --sslCAFile /etc/ssl/ca.pem
mongo --ssl --sslPEMKeyFile /etc/ssl/client.pem
4. Улучшения для корпоративных
клиентов
Улучшенная безопасность
Kerberos
Встроенный SSL
Мониторинг (On-Prem Monitoring)
Визуализация
Отслеживание более сотни различных событий
Возможности как у MongoDB Monitoring Service
Интеграция с внешним
мониторингом
Simple Network Management Protocol
MongoDB была протестирована и сертифицирована как стабильно
работающая на Red Hat/CentOS, Ubuntu и Amazon Linux.
http://www.meetup.com/Krasnodar-MongoDB-User-Group
Глеб Лебедев
gleb@gleblebedev.com

More Related Content

What's hot

2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
HappyDev
 
Встраивание языка в строковой интерполятор
Встраивание языка в строковой интерполяторВстраивание языка в строковой интерполятор
Встраивание языка в строковой интерполятор
Michael Limansky
 
WordPress Cron API
WordPress Cron APIWordPress Cron API
WordPress Cron API
versusbassz
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
Technopark
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Ontico
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
Technopark
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
Technopark
 
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest
 

What's hot (12)

Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов —  Кастомная кнопка: взгляд изнутриКирилл Аверьянов —  Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
 
Кастомная кнопка: взгляд изнутри
Кастомная кнопка: взгляд изнутриКастомная кнопка: взгляд изнутри
Кастомная кнопка: взгляд изнутри
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
 
лабраб 1
лабраб 1лабраб 1
лабраб 1
 
Встраивание языка в строковой интерполятор
Встраивание языка в строковой интерполяторВстраивание языка в строковой интерполятор
Встраивание языка в строковой интерполятор
 
WordPress Cron API
WordPress Cron APIWordPress Cron API
WordPress Cron API
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
хранение данных
хранение данныххранение данных
хранение данных
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
 

Similar to Новое в Mongodb 2.4

MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
phpdevby
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
fudz1k
 
Sphinx. настройка, эксплуатация
Sphinx. настройка, эксплуатацияSphinx. настройка, эксплуатация
Sphinx. настройка, эксплуатация
andreyborue
 
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
Andrey Gershun
 

Similar to Новое в Mongodb 2.4 (20)

Next Gen Applications
Next Gen ApplicationsNext Gen Applications
Next Gen Applications
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
Работа с геоданными в MongoDb
Работа с геоданными в MongoDbРабота с геоданными в MongoDb
Работа с геоданными в MongoDb
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Multimodel Database Caché
Multimodel Database CachéMultimodel Database Caché
Multimodel Database Caché
 
MongoDB. Фокус на тестирование
MongoDB. Фокус на тестированиеMongoDB. Фокус на тестирование
MongoDB. Фокус на тестирование
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
Построение индексов Redis
Построение индексов RedisПостроение индексов Redis
Построение индексов Redis
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
 
Cтрах и ненависть в MongoDB
Cтрах и ненависть в MongoDBCтрах и ненависть в MongoDB
Cтрах и ненависть в MongoDB
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БД
 
Sphinx. настройка, эксплуатация
Sphinx. настройка, эксплуатацияSphinx. настройка, эксплуатация
Sphinx. настройка, эксплуатация
 
SQL Server Denali
SQL Server DenaliSQL Server Denali
SQL Server Denali
 
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
 

Новое в Mongodb 2.4