NoSQL – взрыв возможностей Алексей Солнцев, iForum, 17 апреля 2012.

Презентация:



Advertisements
Похожие презентации
Винников Олег. NET Developer. Почему NoSQL Особенности NoSQL решений Модели данных NoSQL Масштабирование MongoDB.
Advertisements

BigData изнутри: технологии и алгоритмы Александр Сербул руководитель направления, разработчик Партнерская конференция «1С-Битрикс»
Докладчик – Альперин Борис NOT ONLY SQL NOSQL 1. Различные модели представления информации: иерархическая, сетевая, реляционная, объектная, … Реляционная.
Всеволод Дёмкин Новые нереляционные системы хранения данных.
NOSQL NoSQL (англ. not only SQL, не только SQL) Обозначает ряд подходов, проектов, направленных на реализацию моделей баз данных, имеющих существенные.
Mongodb.org NoSQL база данных. Олег Качан Независимый разработчик twitter.com/maximalno.
Масштабируемость Интернет-ресурсов Игорь Лобанов Центр Финансовых Технологий.
Как Map/Reduce спас Яндекс.Статистику. Background Взрывной рост объема данных, за 8 лет объем дневных данных вырос в 2000 раз с 2ГБ до 4ТБ Скорости процессоров,
Павел Светличный Senior iOS Developer Svitla Systems Киев, Построение кластера на базе Apache CouchDB.
Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования Александр Демидов руководитель направления арендных.
Ключ-значение. Обзор лекции 1.Ключ-значение 2.Колоночные 3.Документо-ориентированные 4.Графовые 2.
Администрирование информационных систем Лекция 4. Система управления базами данных.
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
Поисковые движки. Sphinx Search Engine. Докладчик: Роман Кудлай
Что такое Google App Engine Сервис хостинга сайтов и web-приложений в инфраструктуре Google. PaaS Оплата только ресурсов Простота использования, поддержки.
© 2009 Grid Dynamics Scaling Mission Critical Systems Алексей Рагозин Oracle Day, 2009.
ACID требования, CAP- теорема, BASE архитектура. 3. ACID требования, CAP- теорема, BASE архитектура 2.
Рогов Павел (271 ПИ ) Назаренко Дмитрий (272 ПИ ) Научный руководитель : Гринкруг Е. М. Курсовая работа. Клиент - серверное Android- приложение для планирования.
DocsVision 4.0 DocsVision 4.0 универсальная система управления документами и бизнес-процессами.
1С-Битрикс: Управление сайтом 10.0 Веб-кластер.
Транксрипт:

NoSQL – взрыв возможностей Алексей Солнцев, iForum, 17 апреля 2012

О себе 10 лет в индустрии информационных технологий Solution Architect в компании Infopulse Украина Agile волонтёр Организатор и координатор краудсорсинг-переводов книг на русский язык Тренер в центре XP Injection Алексей

Scrum и XP: заметки с

Scrum и Kanban: выжимаем

Этимология термина NoSQL No значит Not Only SQL значит RDBMS NoSQL значит NotOnlyRDMBS Эрик

Троллинг off Это не движение Это не противостояние РСУБД Это не серебряная пуля Пока что без стандартов

Что изменилось с

Цифровая вселенная

Информация в фактах Обрабатывает 24 петабайта информации в день Хранит свыше 2 миллиардов фотографий Получает 160 миллионов твиттов в месяц За 20 минут добавляют 10 миллионов

Проблемы цифровой вселенной Объёмы данных Связанность данных Слабая структурируемость данных Обработка данных при помощи независимых

Ограничения реляционных СУБД Фиксированная структура Разряженные таблицы JOIN плохо масштабируется Блокировки при записи Работа с медленными

Масштабирование Цена решения Производительность

Типы масштабирования Вертикальное Горизонтальное

Стоимость лицензий Порядка $ за ядро

Репликация Клиент Slave (Ведомый) Slave (Ведомый) Нагрузка на Master сервер при записи Master

Репликация Клиент Peer (Равноправный узел) Peer (Равноправный узел) Peer (Равноправный узел) Проблемы синхронизации

Шардинг Клиент Peer (K-S) Slave (T-Z) Как добавить новый узел? Peer (A-J) Роутер

MySQL

Как грибы после

Разнообразие типов Key-Value Column Families Объектно-ориентированные Документ-ориентированные Граф-ориентированные

Второе дыхание NoSQL Теорема Брювера Amazon Dynamo Google BigTable

Свойства распределённых систем Согласованность Доступность Устойчивость к сбоям

Key -Value Ключ – DHT Value – String, Set Примитивные операции Нет составных запросов Кэширование Хранение сессий Хранение логов In-memory Сохранение на

Распределённая хэш-таблица

Amazon Dynamo и Basho Riak Решение для систем, требующих высокую степень доступности Децентрализованная, распределённая база

Инкрементальная масштабируемость Узлы объединены в кольцо Все знают о

Инкрементальная масштабируемость Пересчёт k/n

Согласованность «в конечном итоге» N – количество копий R – кворум на чтение W – кворум на запись W > N/2 R+W > N Если Тогда Иначе Дано При чтении получите последнюю версию Получите согласованность в «конечном итоге»

Согласованность и скорость ответа Надёжно, но медленно R = 2, W = 3, N = 4 Быстро, но не совсем надёжно R = 1, W = 1, N = 3

Google BigTable и Apache HBase Хранение огромных объёмов данных Обработка огромных объёмов данных Анализ огромных объёмов

Архитектура Big Table

ColumnFamily

Архитектура MapReduce

Cassandra FacebookDynamoBigTable Модель данных Метод хранения данных MapReduce P2P архитектура Управление кластером

Документ-ориентированные

Схемы и запросы СхемаЗапросы MySQLФиксированнаяДинамические CouchDBДинамическаяФиксированные MongoDBДинамическаяДинамические

Формат документов { "_id" : ObjectId("497ce96f395f2f052a494fd4"), "title" : "Awesome Blog Post", "body" : "Text text text text, text text text...", "created": "Tue, 3 Jan :13:56 GMT", "tags" : [ "css", "javascipt", "jquery" ], "comments" : [ { "name" : "Kelly Glover" "created" : "Tue, 22 Jan :22:32 GMT", "text" : "This is a very good..." }, ], "shortUrl" : "awesome-blog-post" } { "_id" : ObjectId("497ce96f395f2f052a494fd4"), "title" : "Awesome Blog Post", "body" : "Text text text text, text text text...", "created": "Tue, 3 Jan :13:56 GMT", "tags" : [ "css", "javascipt", "jquery" ], "comments" : [ { "name" : "Kelly Glover" "created" : "Tue, 22 Jan :22:32 GMT", "text" : "This is a very good..." }, ], "shortUrl" : "awesome-blog-post" }

API для запросов // найти записи по условию db.stat.find({clicks: {$gt: 10} }); // найти все записи и отсортировать db.users.find({}).sort({name: 1}); //найти все записи, пропустить первые 20 записей db.users.find().skip(20).limit(10); // найти записи по условию db.stat.find({clicks: {$gt: 10} }); // найти все записи и отсортировать db.users.find({}).sort({name: 1}); //найти все записи, пропустить первые 20 записей db.users.find().skip(20).limit(10);

Граф-ориентированные Нахождение кратчайшего пути Построение социальных графов Работа с информационными

Neo4j Узел Связь Key-value параметры

Polyglot persistence

Take away Знайте свой продукт Следите за комьюнити Следите за спонсорами проектов Будьте аккуратней с новинками и

Оставайтесь на linkedin.com/in/solntsev