SlideShare a Scribd company logo
mongodb.org NoSQL  база данных
Олег Качан Независимый разработчик twitter.com/ maximalno
NoSQL = Not only SQL
NoSQL  базы данных Key-value (Redis, Dynamo, MemcacheDB, Voldemort) Document (MongoDB, CouchDB, Riak) Wide Column (BigTable, Cassandra, HBase) Graph (Neo4j, InfiniteGraph)
MongoDB Быстрая база данных ( C++ ) Устоявшийся проект, выпущена версия 2 .0 Open-source , но разрабатывается и поддерживается компанией  10gen Одно из наиболее универсальных решений
Поддержка  MongoDB  языками C/C++ Java .NET Javascript Perl PHP Python Ruby Официальные драйверы Erlang Scala Haskell Драйверы  open-source ActionScript, Clojure, Delphi, Node.js, F#, Go, Groovy, Lua, Objective C, Smalltalk  и т.д.
Кто использует  MongoDB? Craigslist
Кто использует  MongoDB?
@hipsterhacker If it's not MongoDB, it's the WrongoDB Retweeted by  @bowermanandrew  and 100+ others
MongoDB Документная база данных
Каждому ключу соответствует документ { first_name: “Oleg”, last_name: “Kachan”, contacts: { twitter: “maximalno”, email: “683009@gmail.com” }, skills: [“php”, “node.js”, “mongodb”] } _id: ObjectId(“ 4daf… ” ) =>
Организация данных SQL MongoDB База данных База данных Таблица Коллекция Строка/запись Документ
Измение мышление Нет JOIN Избыточность данных вместо нормализации Контроль данных из приложения, а не из базы Навыки работы с SQL базами не подходят для NoSQL
MongoDB Чем лучше?
Сравнение с другими решениями Функциональность Memcached Key/value MongoDB RDBMS
Преимущества Документно-ориентированная база данных Быстрое чтение и особенно запись Широкая по сравнению с другими  NoSQL  функциональность Масштабирование из коробки По чтению ( Master/slave, Replica sets ) По записи ( Sharding )
Но зачем? О бласти применения
MongoDB Не подходит : если вы используете  JOIN’ ы если вам необходимы транзакции Подходит : хранение разнородных данных хранение геоданных хранение логов и статистики
Пример HTML- страница Н овость К арточка товара Система управления контентом
Пример SQL 3  таблицы : pages, news, goods MongoDB 1  коллекция : documents Система управления контентом
Пример Страница { type: “page”, content: “ Текст на странице ” } Система управления контентом
Пример Новость { type: “news”, date: new Date(), header: “ Заголовок ” , teaser: “ Краткий текст ” , content: “ Полное содержание ” } Система управления контентом
Пример Карточка товара { type: “good”, name: “ Телевизор ” price:  30000 , features: { lcd: 1, led: 0 }, categories: [ “home”, “tv” ] } Система управления контентом
MongoDB Подробнее
Организация данных
Типы данных  BSON String Integer Double Date Byte array ( бинарные данные ) Boolean Null BSON Object
Ключ Каждому добавленному документу автоматически предоставляется уникальный ключ _ id: ObjectId(“47cc67093475061e3d95369d”)
CRUD
Create SQL CREATE DATABASE vldc; CREATE TABLE vldc.users (`id` INT AUTO_INCREMENT PRIMARY KEY, `first_name` VARCHAR(50), `last_name` VARCHAR(50)); INSERT INTO vldc.users SET first_name = “Oleg”; MongoDB use vldc db.users.insert({ first_name: “Oleg” })
Read SQL SELECT * FROM users SELECT first_name FROM users MongoDB db.users.find() db.users.find({}, { first_name: 1 })
Read SQL SELECT * FROM users WHERE first_name = “Oleg” ORDER BY id DESC LIMIT 1,10 MongoDB db.users.find({first_name: “Oleg” }).sort({ _id: -1 }).skip(1).limit(10)
Операторы условий $gt, $lt, $gte, $lte $ne $in, $nin $mod $all $size $exists $type $not $where
Update
Операторы модификации $set $unset $inc $push $pushAll $addToSet $pop $pull $pullAll
Delete SQL DELETE FROM users WHERE id = 1 DELETE FROM users WHERE first_name = “Oleg” MongoDB db.users.remove({ _id: ObjectId(“4df8fb81ed4cadd6271c0000”) }) db.users.remove({ first_name: “Oleg”})
Создание индексов SQL ALTER TABLE `users` ADD INDEX (`first_name`)  MongoDB db.users.ensureIndex({ first_name: 1 })  //  по возрастанию db.users.ensureIndex({ first_name: -1 })   // по убыванию
Гео-индекс MongoDB db.places.ensureIndex({ location: “2d” } Поиск при помощи операторов $near –  поиск объектов с сортировкой, самые близкие - первые $box   –  поиск объектов в заданном квадрате $center   –  поиск объектов в заданном радиусе
Спасибо! Ответы на вопросы

More Related Content

What's hot (20)

PDF
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
PDF
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
Ontico
 
PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Ontico
 
PPTX
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
 
PDF
Класс!ная Cassandra
odnoklassniki.ru
 
PPTX
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
 
PPTX
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
PPTX
Анализируем данные с Clickhouse
Александр Сигачев
 
PDF
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
PDF
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
 
PPTX
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Ontico
 
PDF
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Ontico
 
PPT
Алексей Чумаков. Apache Cassandra на реальном проекте
Volha Banadyseva
 
PDF
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
PPT
Redis: возможности, выгоды, примеры использования
Alexey Kachayev
 
PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Ontico
 
PDF
SphinxSearch Meetup - Tips&tricks
Roman Pavlushko
 
PDF
Чему мы научились разрабатывая микросервисы?
Vadim Madison
 
PDF
Опыт использования Spark, Основано на реальных событиях
Vasil Remeniuk
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
Ontico
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Ontico
 
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
 
Класс!ная Cassandra
odnoklassniki.ru
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
Анализируем данные с Clickhouse
Александр Сигачев
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Ontico
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Ontico
 
Алексей Чумаков. Apache Cassandra на реальном проекте
Volha Banadyseva
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
Redis: возможности, выгоды, примеры использования
Alexey Kachayev
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Ontico
 
SphinxSearch Meetup - Tips&tricks
Roman Pavlushko
 
Чему мы научились разрабатывая микросервисы?
Vadim Madison
 
Опыт использования Spark, Основано на реальных событиях
Vasil Remeniuk
 

Viewers also liked (11)

PDF
клуб Digital finance #3 - Дмитрий Ткаченко - Digital Finance
Business.People
 
PPT
Attacking MongoDB
Михаил Фирстов
 
PDF
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Dev2Dev
 
PPTX
Преимущества NoSQL баз данных на примере MongoDB
UNETA
 
PDF
Java BigData Full Stack Development (version 2.0)
Alexey Zinoviev
 
PDF
Data access 2.0? Please welcome: Spring Data!
Oliver Gierke
 
PPTX
MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)
MongoDB
 
PDF
Logging Application Behavior to MongoDB
Robert Stewart
 
PPTX
Practice Fusion & MongoDB: Transitioning a 4 TB Audit Log from SQL Server to ...
MongoDB
 
PDF
Neo4j - 5 cool graph examples
Peter Neubauer
 
PDF
Data Modeling with Neo4j
Neo4j
 
клуб Digital finance #3 - Дмитрий Ткаченко - Digital Finance
Business.People
 
Attacking MongoDB
Михаил Фирстов
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Dev2Dev
 
Преимущества NoSQL баз данных на примере MongoDB
UNETA
 
Java BigData Full Stack Development (version 2.0)
Alexey Zinoviev
 
Data access 2.0? Please welcome: Spring Data!
Oliver Gierke
 
MongoDB as a Data Warehouse: Time Series and Device History Data (Medtronic)
MongoDB
 
Logging Application Behavior to MongoDB
Robert Stewart
 
Practice Fusion & MongoDB: Transitioning a 4 TB Audit Log from SQL Server to ...
MongoDB
 
Neo4j - 5 cool graph examples
Peter Neubauer
 
Data Modeling with Neo4j
Neo4j
 
Ad

Similar to MongoDB basics in Russian (20)

PDF
Nosql and Mongodb
Eduard Antsupov
 
PDF
Базы данных. MongoDB
Vadim Tsesko
 
PDF
MongoDB@addconf
Sergei Tulentsev
 
PPT
MongoDB. Фокус на тестирование
Uladzimir Kryvenka
 
PDF
Моделирование для NoSQL БД
Andrew Sovtsov
 
PPTX
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
PPT
Introduction to MongoDB
Iurii Ogiienko
 
PPTX
DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)
it-people
 
PDF
NoSQL pain
Ivan Grishaev
 
PPTX
Основы MongoDB + NodeJS
Alexander Konovalov
 
PPTX
Cтрах и ненависть в MongoDB
Dmitry Viskov
 
PPTX
Sphinx + MongoDB: работаем вместе.
MageCloud
 
PDF
Сравнение систем СУБД
Sergey Ryabenko
 
PDF
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 
PPTX
MongoDB - About Performance Optimization, Ivan Griga - Smart Gamma
Evgeniy Kuzmin
 
ODP
Новое в Mongodb 2.4
Gleb Lebedev
 
PPTX
Oracle NoSQL Database
Andrey Akulov
 
PDF
Практическое применение MongoDB Aggregation Framework
Денис Кравченко
 
PDF
Next Gen Applications
Vittorio Cioe
 
Nosql and Mongodb
Eduard Antsupov
 
Базы данных. MongoDB
Vadim Tsesko
 
MongoDB@addconf
Sergei Tulentsev
 
MongoDB. Фокус на тестирование
Uladzimir Kryvenka
 
Моделирование для NoSQL БД
Andrew Sovtsov
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
Introduction to MongoDB
Iurii Ogiienko
 
DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)
it-people
 
NoSQL pain
Ivan Grishaev
 
Основы MongoDB + NodeJS
Alexander Konovalov
 
Cтрах и ненависть в MongoDB
Dmitry Viskov
 
Sphinx + MongoDB: работаем вместе.
MageCloud
 
Сравнение систем СУБД
Sergey Ryabenko
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 
MongoDB - About Performance Optimization, Ivan Griga - Smart Gamma
Evgeniy Kuzmin
 
Новое в Mongodb 2.4
Gleb Lebedev
 
Oracle NoSQL Database
Andrey Akulov
 
Практическое применение MongoDB Aggregation Framework
Денис Кравченко
 
Next Gen Applications
Vittorio Cioe
 
Ad

MongoDB basics in Russian