Не SQL’ем единым
Александр Козько
ByndyuSoft
alkozko@yandex.ru
6-я конференция .NET разработчиков
28 апреля 2013
www.dotnetconf.ru
2Не SQL’ем единым, Александр Козько
План
NoSQL
Виды NoSQL БД
MongoDB
3Не SQL’ем единым, Александр Козько
«Теорема CAP»
Можно выбрать только два из трех
Consistency (Согласованность).
Avalability (Доступность).
Partition Tolerance (Устойчивость к
разделению системы).
4Не SQL’ем единым, Александр Козько
Реляционные СУБД: CA, жертвуя P
NoSQL БД: обеспечивают AP жертвуя C
5Не SQL’ем единым, Александр Козько
Принципы NoSQL
Нереляционная модель данных
Распределенность
Хорошая горизонтальная
масштабируемость.
6Не SQL’ем единым, Александр Козько
Колоночные БД
Быстрое чтение
Меньше места на диске
Медленная запись
7Не SQL’ем единым, Александр Козько
Хранилища ключ-значения
Скорость
Запросы только по ключу
8Не SQL’ем единым, Александр Козько
БД на основе графов
Скорость для иерархических данных
Скорость для всего остального
Плохая масштабируемость
9Не SQL’ем единым, Александр Козько
Документно-ориентированные БД
Единица информации - документ
Модель данных совпадает с объектной
моделью приложения
Индексы не только по ключу
10Не SQL’ем единым, Александр Козько
Документно-ориентированная
С открытым исходным кодом (С++)
Имеет драйверы для всех популярных
платформ/языков
Пользователи:
http://www.mongodb.org/
11Не SQL’ем единым, Александр Козько
Гибкая схема
Документы хранятся в виде бинарного
JSON (BSON).
Нет ограничений на JSON, кроме наличия _id
{
_id: 4
title: "Не SQL'ем единым",
startTime: ISODate("2013-28-04T12:30:00.00Z")
}
12Не SQL’ем единым, Александр Козько
Нет джойнов
Взамен предлагается денормализация и
концепция встраивания
{
_id: 5
title: "Не SQL'ем единым",
startTime: ISODate("2013-28-04T12:30:00.00Z"),
author: {
name: "Александр Козько",
emails: ["alkozko@yandex.ru","alkozko@gmail.com"]
}
}
13Не SQL’ем единым, Александр Козько
Нет транзакций
Но есть атомарные обновления одного документа
db.users.update({
_id:1020,
{
$push:{friends:900},
$inc:{friend_count:1}
}
});
14Не SQL’ем единым, Александр Козько
Возможности индексирования
db.people.ensureIndex( { "phone-number": 1 } )
db.collection.ensureIndex( { a: 1, b: 1, c: 1 } )
db.collection.ensureIndex( { a: 1 }, { unique: true } )
db.collection.ensureIndex( { a: 1 }, { sparse: true } )
А ещё есть
Geospatial Indexes
Text Search Indexes
15Не SQL’ем единым, Александр Козько
Server-side Javascript
Некий Аналог ХП.
Рекомендуется для обновления больших
объемов информации, без выгрузки на
клиент
Однопоточный, блокирует все остальные
операции
16Не SQL’ем единым, Александр Козько
Map/Reduce
Средство для обработки больших объемов
данных
1. В Map группируем данные из коллекции по
ключу
2. В Reduce получаем сгруппированные по
ключу значения и проводим обработку
3. Записываем результат
Для описания функций Map и Reduce
используется JavaScript
17Не SQL’ем единым, Александр Козько
GridFS
Спецификация, описывающая дробление
и сохранение больших файлов в
MongoDB.
Позволяет хранить объекты больше 16MB
18Не SQL’ем единым, Александр Козько
Особенности
Memory mapped files — данные лежат
только в кэше ОС, нет дублирования
данных в кэше БД
Невозможно выставить ограничение
потребления памяти
Для быстрого изменения документы
должны быть в памяти
19Не SQL’ем единым, Александр Козько
Масштабирование
Шардинг по диапазонам ключей с
автоматической балансировкой
Репликация
20Не SQL’ем единым, Александр Козько
Инструменты
Скачать БД: http://www.mongodb.org/downloads
Драйвер в NuGet’e: MongoCSharpDriver
Клиенты c GUI:
Robomongo http://robomongo.org/
MongoVUE http://www.mongovue.com/
21Не SQL’ем единым, Александр Козько
Где использовать?
Логирование и статистика
Rich key-value
Данные динамической природы
Прототипирование
Сохранение объектов сложной структуры
22Не SQL’ем единым, Александр Козько
Где не использовать?
Необходимость транзакций
Важна целостность и непротиворечивость
данных на уровне БД
Можно обойтись реляционными БД
NoSQL базы — это ещё один
инструмент, а не замена РСУБД
23Не SQL’ем единым, Александр Козько
Спасибо за внимание
Александр Козько
ByndyuSoft
alkozko@yandex.ru

More Related Content

PPTX
MongoDB первые впечатления
PDF
Константин Осипов
PPTX
MongoDB. Как готовить, с чем едят?
PDF
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
ODP
МойСклад, облачный сервис ERP
PDF
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
PDF
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
PPTX
MongoDB в продакшен - миф или реальность?
MongoDB первые впечатления
Константин Осипов
MongoDB. Как готовить, с чем едят?
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
МойСклад, облачный сервис ERP
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
MongoDB в продакшен - миф или реальность?

What's hot (20)

PPTX
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
ODP
Кратко о MongoDB
PPTX
No sql.mongodb scaling
PDF
Дмитрий Долгов
PPTX
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
PDF
Cоздаем пробки или тюнинг postgresql для расчетных задач
PPT
MongoDB basics in Russian
PDF
NoSQL thumbtack experience, Анатолий Никулин
PPTX
NoSQL - взрыв возможностей
PDF
Обзор перспективных баз данных для highload / Юрий Насретдинов
PDF
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
PPT
Lobanov_Cloud-Comput..
ODP
Alexander Krizhanovsky Krizhanovsky Hpds
ODP
ClickHouse
PDF
Как устроено API в AppMetrica
PDF
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
PPTX
Анализируем данные с Clickhouse
PDF
2014.10.15 блиц-доклад PostgreSQL kNN search
PDF
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
PDF
High load++2016.highlights (dropbox+clickhouse)
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
Кратко о MongoDB
No sql.mongodb scaling
Дмитрий Долгов
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Cоздаем пробки или тюнинг postgresql для расчетных задач
MongoDB basics in Russian
NoSQL thumbtack experience, Анатолий Никулин
NoSQL - взрыв возможностей
Обзор перспективных баз данных для highload / Юрий Насретдинов
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Lobanov_Cloud-Comput..
Alexander Krizhanovsky Krizhanovsky Hpds
ClickHouse
Как устроено API в AppMetrica
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
Анализируем данные с Clickhouse
2014.10.15 блиц-доклад PostgreSQL kNN search
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
High load++2016.highlights (dropbox+clickhouse)
Ad

Viewers also liked (20)

PPTX
Смотрим на Mvvm сквозь prism'у
PPTX
Бутылка саке и муравей
PDF
Много данных, много вычислений: есть ли жизнь на Amazon'е
PDF
Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.
PDF
Data mining в реальном проекте
PPTX
Клиентская оптимизация в ритме военного марша
PPTX
код шрёдингера
PDF
Модульное тестирование и TDD в .NET
PPTX
Непрерывная интеграция в ритме военного марша
PDF
RabbitMQ - обмен сообщениями, который просто работает
PDF
Agile на практике
PPTX
Cassandra: быстрая запись данных в высоконагруженных системах
PDF
Индексы в MSSQL: принципы работы и способы оптимизации
PDF
Опыт разработки эффективного SPA
PDF
Применение Kanban для управления портфелем проектов. Конференция #Dotnetconf ...
PDF
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
PDF
Шаблоны интеграции - актуальные инструменты и решения
PDF
Индексируй неиндексирумое
PDF
Эволюция управления зависимостями в коде
PDF
Использование сервера Continuous Integration для разработки мобильных приложений
Смотрим на Mvvm сквозь prism'у
Бутылка саке и муравей
Много данных, много вычислений: есть ли жизнь на Amazon'е
Продуктово-аутсорсинговая разработка. Развитие продуктовых идей.
Data mining в реальном проекте
Клиентская оптимизация в ритме военного марша
код шрёдингера
Модульное тестирование и TDD в .NET
Непрерывная интеграция в ритме военного марша
RabbitMQ - обмен сообщениями, который просто работает
Agile на практике
Cassandra: быстрая запись данных в высоконагруженных системах
Индексы в MSSQL: принципы работы и способы оптимизации
Опыт разработки эффективного SPA
Применение Kanban для управления портфелем проектов. Конференция #Dotnetconf ...
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
Шаблоны интеграции - актуальные инструменты и решения
Индексируй неиндексирумое
Эволюция управления зависимостями в коде
Использование сервера Continuous Integration для разработки мобильных приложений
Ad

Similar to Не SQL'ем единым (20)

PPTX
IOP202 Redis in Azure
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
PDF
Nosql and Mongodb
PPTX
NoSQL - World IT Planet, Saint Petersburg 2015
PDF
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
PDF
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
PPTX
от авгиевых конюшен к звездам
PDF
кри 2014 elastic search рациональный подход к созданию собственной системы а...
PDF
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
PDF
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
PPT
Present
PDF
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PDF
HBase on HappyDev 2013
PDF
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
ODP
PDF
Базы данных. Введение
PDF
Базы данных. MongoDB
PDF
Волков не бояться! Бизнес логика и РСУБД
PDF
Couchbase, что за зверь и на что способен.
PPTX
DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)
IOP202 Redis in Azure
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Nosql and Mongodb
NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
от авгиевых конюшен к звездам
кри 2014 elastic search рациональный подход к созданию собственной системы а...
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Present
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
HBase on HappyDev 2013
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Базы данных. Введение
Базы данных. MongoDB
Волков не бояться! Бизнес логика и РСУБД
Couchbase, что за зверь и на что способен.
DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)

More from Alexander Byndyu (20)

PDF
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
PDF
Применение low-code платформ в энтерпрайзе
PDF
Антихрупкость в IT или как полюбить изменения
PDF
Карта гипотез как метод стратегического планирования
PPTX
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
PDF
История о том, как техническое задание подменяет цель проекта
PDF
Шпаргалка по IT-миру для предпринимателя
PDF
Микросервисы, чистый PaaS и конкурс Мисс Россия
PDF
IT-директор на аутсорсе
PDF
Бизнес-гибкость через микросервисную архитектуру
PDF
Impact Mapping на практике v2
PDF
Кнопочное мышление против целостного IT-продукта
PDF
Пять самых важных составляющих процесса выпуска продуктов
PDF
Пять самых важных составляющих процесса выпуска проектов
PDF
Час Кода 2015
PDF
Impact mapping in practice
PPTX
Impact Mapping на практике
PDF
Customer satisfaction для программистов
PDF
CQRS на практике. В поиске точки масштабирования и новых метафор
PDF
Как размножается Sphinx
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Применение low-code платформ в энтерпрайзе
Антихрупкость в IT или как полюбить изменения
Карта гипотез как метод стратегического планирования
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
История о том, как техническое задание подменяет цель проекта
Шпаргалка по IT-миру для предпринимателя
Микросервисы, чистый PaaS и конкурс Мисс Россия
IT-директор на аутсорсе
Бизнес-гибкость через микросервисную архитектуру
Impact Mapping на практике v2
Кнопочное мышление против целостного IT-продукта
Пять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска проектов
Час Кода 2015
Impact mapping in practice
Impact Mapping на практике
Customer satisfaction для программистов
CQRS на практике. В поиске точки масштабирования и новых метафор
Как размножается Sphinx

Не SQL'ем единым

  • 1. Не SQL’ем единым Александр Козько ByndyuSoft alkozko@yandex.ru 6-я конференция .NET разработчиков 28 апреля 2013 www.dotnetconf.ru
  • 2. 2Не SQL’ем единым, Александр Козько План NoSQL Виды NoSQL БД MongoDB
  • 3. 3Не SQL’ем единым, Александр Козько «Теорема CAP» Можно выбрать только два из трех Consistency (Согласованность). Avalability (Доступность). Partition Tolerance (Устойчивость к разделению системы).
  • 4. 4Не SQL’ем единым, Александр Козько Реляционные СУБД: CA, жертвуя P NoSQL БД: обеспечивают AP жертвуя C
  • 5. 5Не SQL’ем единым, Александр Козько Принципы NoSQL Нереляционная модель данных Распределенность Хорошая горизонтальная масштабируемость.
  • 6. 6Не SQL’ем единым, Александр Козько Колоночные БД Быстрое чтение Меньше места на диске Медленная запись
  • 7. 7Не SQL’ем единым, Александр Козько Хранилища ключ-значения Скорость Запросы только по ключу
  • 8. 8Не SQL’ем единым, Александр Козько БД на основе графов Скорость для иерархических данных Скорость для всего остального Плохая масштабируемость
  • 9. 9Не SQL’ем единым, Александр Козько Документно-ориентированные БД Единица информации - документ Модель данных совпадает с объектной моделью приложения Индексы не только по ключу
  • 10. 10Не SQL’ем единым, Александр Козько Документно-ориентированная С открытым исходным кодом (С++) Имеет драйверы для всех популярных платформ/языков Пользователи: http://www.mongodb.org/
  • 11. 11Не SQL’ем единым, Александр Козько Гибкая схема Документы хранятся в виде бинарного JSON (BSON). Нет ограничений на JSON, кроме наличия _id { _id: 4 title: "Не SQL'ем единым", startTime: ISODate("2013-28-04T12:30:00.00Z") }
  • 12. 12Не SQL’ем единым, Александр Козько Нет джойнов Взамен предлагается денормализация и концепция встраивания { _id: 5 title: "Не SQL'ем единым", startTime: ISODate("2013-28-04T12:30:00.00Z"), author: { name: "Александр Козько", emails: ["alkozko@yandex.ru","alkozko@gmail.com"] } }
  • 13. 13Не SQL’ем единым, Александр Козько Нет транзакций Но есть атомарные обновления одного документа db.users.update({ _id:1020, { $push:{friends:900}, $inc:{friend_count:1} } });
  • 14. 14Не SQL’ем единым, Александр Козько Возможности индексирования db.people.ensureIndex( { "phone-number": 1 } ) db.collection.ensureIndex( { a: 1, b: 1, c: 1 } ) db.collection.ensureIndex( { a: 1 }, { unique: true } ) db.collection.ensureIndex( { a: 1 }, { sparse: true } ) А ещё есть Geospatial Indexes Text Search Indexes
  • 15. 15Не SQL’ем единым, Александр Козько Server-side Javascript Некий Аналог ХП. Рекомендуется для обновления больших объемов информации, без выгрузки на клиент Однопоточный, блокирует все остальные операции
  • 16. 16Не SQL’ем единым, Александр Козько Map/Reduce Средство для обработки больших объемов данных 1. В Map группируем данные из коллекции по ключу 2. В Reduce получаем сгруппированные по ключу значения и проводим обработку 3. Записываем результат Для описания функций Map и Reduce используется JavaScript
  • 17. 17Не SQL’ем единым, Александр Козько GridFS Спецификация, описывающая дробление и сохранение больших файлов в MongoDB. Позволяет хранить объекты больше 16MB
  • 18. 18Не SQL’ем единым, Александр Козько Особенности Memory mapped files — данные лежат только в кэше ОС, нет дублирования данных в кэше БД Невозможно выставить ограничение потребления памяти Для быстрого изменения документы должны быть в памяти
  • 19. 19Не SQL’ем единым, Александр Козько Масштабирование Шардинг по диапазонам ключей с автоматической балансировкой Репликация
  • 20. 20Не SQL’ем единым, Александр Козько Инструменты Скачать БД: http://www.mongodb.org/downloads Драйвер в NuGet’e: MongoCSharpDriver Клиенты c GUI: Robomongo http://robomongo.org/ MongoVUE http://www.mongovue.com/
  • 21. 21Не SQL’ем единым, Александр Козько Где использовать? Логирование и статистика Rich key-value Данные динамической природы Прототипирование Сохранение объектов сложной структуры
  • 22. 22Не SQL’ем единым, Александр Козько Где не использовать? Необходимость транзакций Важна целостность и непротиворечивость данных на уровне БД Можно обойтись реляционными БД NoSQL базы — это ещё один инструмент, а не замена РСУБД
  • 23. 23Не SQL’ем единым, Александр Козько Спасибо за внимание Александр Козько ByndyuSoft alkozko@yandex.ru