SlideShare a Scribd company logo
1 of 26
Лекция 3. Понятие Big Data. NoSQL средства
обработки и хранения BD. Отображение
моделей данных NoSQL.
Большие данные (англ. big data) - серия подходов, инструментов и методов обработки
структурированных и неструктурированных данных огромных объёмов и значительного
многообразия для получения воспринимаемых человеком результатов, эффективных в
условиях непрерывного прироста, распределения по многочисленным узлам
вычислительной сети, сформировавшихся в конце 2000-х годов, альтернативных
традиционным системам управления базами данных и решениям класса Business
Intelligence.
Об актуальности данного явления можно судить, обработав поисковые запросы в Google
Trends по теме big data.
* Материал из Википедии - свободной энциклопедии
*
- логи поведения пользователей в интернете;
- GPS-сигналы от автомобилей для транспортной
компании;
- данные, снимаемые с датчиков в большом
адронном коллайдере;
- оцифрованные книги в Российской
Государственной Библиотеке;
- информация о транзакциях всех клиентов банка;
- информация о всех покупках в крупной ритейл
сети.
1. Горизонтальная масштабируемость. Поскольку данных может быть сколь
угодно много – любая система, которая подразумевает обработку больших
данных, должна быть расширяемой. Например, если в 2 раза вырос объём данных
– в 2 раза увеличили количество железа в кластере и всё продолжило работать.
2. Отказоустойчивость. Принцип отказоустойчивости подразумевает, что машин
в кластере может быть много. Это означает, что часть этих машин будет
гарантированно выходить из строя. Методы работы с большими данными
должны учитывать возможность таких сбоев и переживать их без каких-либо
значимых последствий.
3. Локальность данных. В больших распределённых системах данные
распределены по большому количеству машин. Если данные физически
находятся на одном сервере, а обрабатываются на другом – расходы на передачу
данных могут превысить расходы на саму обработку. Поэтому одним из
важнейших принципов проектирования BigData-решений является принцип
локальности данных – по возможности обрабатываем данные на той же машине,
на которой их храним.
Ничего общего с SQL запросами обработка BD не имеет. Почему? Через 5 минут
расскажу историю про симпатичное желтое реляционное ведерко и… ну, узнаете.
Для обработки BD корпорация Google в 2004 году придумала целый набор
инструментов и алгоритмов, дав им название MapReduce.
Почитать в Вики: https://ru.wikipedia.org/wiki/MapReduce
Почитать оригинал статьи Google:
http://research.google.com/archive/mapreduce.html
Можно рассматривать функцию MapReduce как модель или фреймворк.
Параллельные вычисления над
очень большими данными
(несколько петабайт)
Программная оболочка для
вычисления BD с использованием
большого количества компьютеров
нодов в кластере
MapReduce – это модель распределенной обработки данных, предложенная
компанией Google для обработки больших объёмов данных на компьютерных
кластерах.
Подробнее можно почитать тут:
http://habrahabr.ru/post/103467/
тут:
http://habrahabr.ru/company/bitrix/blog/218003/
и вот тут:
http://habrahabr.ru/post/74792/
а еще вот тут:
https://msdn.microsoft.com/ru-ru/magazine/mt147240.aspx
и тут тоже можно почитать:
http://www.ibm.com/developerworks/ru/library/bd-mapreduce/index.html
Стадия Map. На этой стадии данные предобрабатываются при помощи
функции map(), которую определяет пользователь. Работа этой стадии
заключается в предобработке и фильтрации данных. Пользовательская
функция применяется к каждой входной записи.
Функция map() примененная к одной входной записи и выдаёт множество
пар ключ-значение. Множество – т.е. может выдать только одну запись, может
не выдать ничего, а может выдать несколько пар ключ-значение. Что будет
находится в ключе и в значении – решать пользователю, но ключ – очень
важная вещь, так как данные с одним ключом в будущем попадут в один
экземпляр функции reduce.
Будем “мапать” предложение с целью выяснить – сколько раз в нем упоминаются
разные слова. В Python псевдо-код команды Map будет выглядеть примерно так:
Определяем функцию def, в которую
положим предложение
Возвращаем значения из генератора,
разбитые по одному слову
Загрузим в переменную-генератор следующую строку (классика!):
the quick brown fox jumps over the lazy dog
Стадия Shuffle. Проходит незаметно для пользователя. В этой стадии вывод
функции map «разбирается по корзинам» – каждая корзина соответствует
одному ключу вывода стадии map. В дальнейшем эти корзины послужат входом
для reduce.
Результат функции Map в прошлом примере показан уже после выполнения
shuffle.
Посмотрим еще примерчик по коду Map и Shuffle. Взял его у этих ребят с
навороченным сайтом: http://datacentric.ru/#blog
Представим, нам в руки попали данные некоторой рекламной системы:
Мы хотим высчитать среднюю стоимость рекламы по городам России на
основании данных этого массива.
Стадия Reduce. Каждая «корзина» со значениями, сформированная на стадии
shuffle, попадает на вход функции reduce().
Функция reduce задаётся пользователем и вычисляет финальный результат
для отдельной «корзины». Множество всех значений, возвращённых функцией
reduce(), является финальным результатом MapReduce-задачи.
Посмотрим, как сделать Reduce для примера, приведенного выше.
Reduce для быстрой и хулиганистой коричневой лисички:
Reduce для данных о рекламной компании в виде листинга выглядит так:
Выборка из BigData при помощи функции MapReduce – это технически нетрудный,
но весьма эффективный инструмент анализа данных для Data Scientist .
Правильно оформленные результаты функции MR являются современным,
привлекательным продуктом на IT рынке.
Тут можно посмотреть обзор продукт “анализ bigdata” от компании-производителя
в виде слайдиков:
http://www.slideshare.net/Data-Centric_Alliance/big-data-is-the-new-oil
А тут можно посмотреть один из красиво упакованных продуктов по BigData:
http://www.slideshare.net/Data-Centric_Alliance/ss-55342365
Одним из наиболее распространенных инструментов работы с Big Data в рамках
парадигмы MapReduce является Hadoop от Apache.
Практической работы в нашем курсе этого года не предусмотрено, но
заинтересовавшиеся технологией MapReduce студенты могут попрактиковаться
в работе с это технологией в рамках Hadoop совершенно безвозмездно. То есть –
даром.
Вот ссылка на хорошую статью по Hadoop, его установке на кластер и по примерам
его использования: http://habrahabr.ru/company/dca/blog/268277/
Этот способ регламентируется применением NoSQL структуры хранения
данных.
NoSQL (not only SQL, не только SQL),
термин, обозначающий ряд подходов, направленных на реализацию хранилищ
баз данных, имеющих существенные отличия от моделей, используемых в
традиционных реляционных СУБД с доступом к данным средствами языка SQL.
В NoSQL вместо традиционного реляционного ACID используется
набор свойств BASE:
- базовая доступность (basic availability) - каждый запрос гарантированно
завершается (успешно или безуспешно).
- гибкое состояние (soft state) - состояние системы может изменяться со временем,
даже без ввода новых данных, для достижения согласования данных.
- согласованность в конечном счёте (eventual consistency) - данные могут быть
некоторое время рассогласованы, но приходят к согласованию через некоторое
время.
1. Применение различных типов хранилищ.
2. Возможность разработки базы данных без задания схемы.
3. Использование многопроцессорности.
4. Линейная масштабируемость (добавление процессоров увеличивает
производительность).
5. Инновационность: «не только SQL» открывает много возможностей для
хранения и обработки данных.
6. Сокращение времени разработки
7. Скорость: даже при небольшом количестве данных конечные пользователи
могут оценить снижение времени отклика системы с сотен миллисекунд до
миллисекунд.
Хранилище
“ключ-значение”
Хранилище семейств
колонок
Документо-ориентированная
СУБД
Все картинки весьма кликабельны 
1. Элемент хранения - пара
- составной ключ: major keys и minor keys;
- произвольное неструктурированное значение.
2. Ключ: “Smith/John/-/phonenumber/home”
- major key: список из 1 или более компонентов (“Smith/John”) – влияет на
выбор узла хранения по хеш-значению (алфавит);
- minor key: список из 0 или более компонентов (“phonenumber/home”) –
все значения гарантированно на одном узле, вместе с major key
определяет уникальный ключ.
3. Значение: “555 5555“
- значение, строка байтов;
- может быть сериализацией любого набора данных, структурированных
или неструктурированных, с любой семантикой.
{“Smith/Bob/-/phonenumber/home”:
“555 5555”}
{“Smith/Bob/-/phonenumber/mobile”:
“333 3333”}
Smith
└ Bob
└ phonenumber
├ home: “555 5555”
└ mobile: “333 3333”
Major key
Minor key
Value (значение)
В этом хранилище данные хранятся в виде разреженной матрицы, строки и
столбцы которой используются как ключи. Типичным применением этого вида
СУБД является веб-индексирование, а также задачи, связанные с большими
данными, с пониженными требованиями к согласованности данных.
Индексирование в поисковых системах (веб-индексирование) — процесс
добавления сведений (о сайте) роботом поисковой машины в базу данных,
впоследствии использующуюся для (полнотекстового) поиска информации
на проиндексированных сайтах.
1. Column (колонка) – множество пар ключ-значение (key-value).
2. Column Family (семейство колонок) - содержит множество колонок, у каждой
из которых есть название, значение, и временная метка, и на которые
ссылаются с помощью ключей строк.
3. Keyspace (пространство ключей) - содержит набор семейств колонок.
4. SuperColumn (суперколонки) - колонки, состоящие из набора подколонок.
users:
{ "1": { "firstName": "John",
"lastName": "Smith",
"phoneNumbers":
{ "home": "555 5555",
"mobile": "333 3333"}
},
"2": …
}
Get ({“firstName”, “lastName”}, "1“)
Очень близкий к XML формату хранения данных тип.
СУБД, специально предназначенная для хранения иерархических структур
данных (документов). В основе ДОСУБД лежат документные хранилища
имеющие структуру дерева (иногда леса). Структура дерева начинается с
корневого узла и может содержать несколько внутренних и листовых узлов.
Листовые узлы содержат данные, которые при добавлении документа заносятся в
индексы, что позволяет даже при достаточно сложной структуре находить место
(путь) искомых данных.
В отличие от хранилищ типа ключ-значение, выборка по запросу к документному
хранилищу может содержать части большого количества документов без полной
загрузки этих документов в оперативную память.
Документы могут быть организованы (сгруппированы) в коллекции.
Ключевым принципом реализации этой модели является JSON (JavaScript Object
Notation).
В качестве значений в JSON используются структуры:
Объект - это неупорядоченное множество пар ключ:значение, заключённое в фигурные
скобки «{ }». Ключ описывается строкой, между ним и значением стоит символ «:». Пары
ключ-значение отделяются друг от друга запятыми.
Массив (одномерный) - это упорядоченное множество значений. Массив заключается в
квадратные скобки «[ ]». Значения разделяются запятыми.
Значение может быть строкой в двойных кавычках, числом, объектом, массивом, одним из
литералов: true, false или null.
Строка - это упорядоченное множество из нуля или более символов юникода, заключенное в
двойные кавычки. Символы могут быть указаны с использованием последовательностей,
начинающихся с обратной косой черты «».
JSON XML
DBD lection 4. Big Data, NoSQL. In Russian.

More Related Content

What's hot

Реальный мир и хорошие модели данных.
Реальный мир и хорошие модели данных. Реальный мир и хорошие модели данных.
Реальный мир и хорошие модели данных. Victor Agroskin
 
Где и как хранить данные в процессе их анализа:  SQL и не только…
Где и как хранить данные в процессе их анализа: SQL и не только… Где и как хранить данные в процессе их анализа: SQL и не только…
Где и как хранить данные в процессе их анализа:  SQL и не только… Alexey Neznanov
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.Igor Shkulipa
 
006
006006
006JIuc
 
АрхиГраф.MDM: управление мастер-данными
АрхиГраф.MDM: управление мастер-даннымиАрхиГраф.MDM: управление мастер-данными
АрхиГраф.MDM: управление мастер-даннымиSergey Gorshkov
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программированиеRauan Ibraikhan
 
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЯковенко Кирилл
 
Соединяя точки. Моделе-ориентированный процесс системного проектирования
Соединяя точки. Моделе-ориентированный процесс системного проектированияСоединяя точки. Моделе-ориентированный процесс системного проектирования
Соединяя точки. Моделе-ориентированный процесс системного проектированияYulia Madorskaya
 

What's hot (17)

Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)
 
Управление данными. Основы проектирования БД
Управление данными. Основы проектирования БДУправление данными. Основы проектирования БД
Управление данными. Основы проектирования БД
 
Управление данными (распределенная обработка)
Управление данными (распределенная обработка)Управление данными (распределенная обработка)
Управление данными (распределенная обработка)
 
Реальный мир и хорошие модели данных.
Реальный мир и хорошие модели данных. Реальный мир и хорошие модели данных.
Реальный мир и хорошие модели данных.
 
Управление данными (дополнительно)
Управление данными (дополнительно)Управление данными (дополнительно)
Управление данными (дополнительно)
 
Где и как хранить данные в процессе их анализа:  SQL и не только…
Где и как хранить данные в процессе их анализа: SQL и не только… Где и как хранить данные в процессе их анализа: SQL и не только…
Где и как хранить данные в процессе их анализа:  SQL и не только…
 
Drupal Migrate
Drupal MigrateDrupal Migrate
Drupal Migrate
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.
 
006
006006
006
 
АрхиГраф.MDM: управление мастер-данными
АрхиГраф.MDM: управление мастер-даннымиАрхиГраф.MDM: управление мастер-данными
АрхиГраф.MDM: управление мастер-данными
 
9946
99469946
9946
 
базы данных
базы данныхбазы данных
базы данных
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программирование
 
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страниц
 
10 субд
10 субд10 субд
10 субд
 
Соединяя точки. Моделе-ориентированный процесс системного проектирования
Соединяя точки. Моделе-ориентированный процесс системного проектированияСоединяя точки. Моделе-ориентированный процесс системного проектирования
Соединяя точки. Моделе-ориентированный процесс системного проектирования
 
лекция 2
лекция 2лекция 2
лекция 2
 

Similar to DBD lection 4. Big Data, NoSQL. In Russian.

Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БДAndrew Sovtsov
 
Hadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogHadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogAndrew Panfilov
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данныхОмские ИТ-субботники
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)Andrew Panfilov
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхСергей Макрушин
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхSergey Makrushin
 
Организация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияОрганизация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияVasily Kazakov
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopAlexey Bokov
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиElizaveta Alekseeva
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Ontico
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Yandex
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиYuri Yashkin
 
Реверс-инжиниринг требований в проекте по миграции КИС. Алексей Смирнов
Реверс-инжиниринг требований в проекте по миграции КИС.  Алексей СмирновРеверс-инжиниринг требований в проекте по миграции КИС.  Алексей Смирнов
Реверс-инжиниринг требований в проекте по миграции КИС. Алексей СмирновAlexander Baikin
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...HappyDev-lite
 

Similar to DBD lection 4. Big Data, NoSQL. In Russian. (20)

Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БД
 
Hadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogHadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> Cascalog
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
 
Druid - Interactive Analytics At Scale
Druid - Interactive Analytics At ScaleDruid - Interactive Analytics At Scale
Druid - Interactive Analytics At Scale
 
Организация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияОрганизация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятия
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and Hadoop
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
Реверс-инжиниринг требований в проекте по миграции КИС. Алексей Смирнов
Реверс-инжиниринг требований в проекте по миграции КИС.  Алексей СмирновРеверс-инжиниринг требований в проекте по миграции КИС.  Алексей Смирнов
Реверс-инжиниринг требований в проекте по миграции КИС. Алексей Смирнов
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
 

DBD lection 4. Big Data, NoSQL. In Russian.

  • 1. Лекция 3. Понятие Big Data. NoSQL средства обработки и хранения BD. Отображение моделей данных NoSQL.
  • 2. Большие данные (англ. big data) - серия подходов, инструментов и методов обработки структурированных и неструктурированных данных огромных объёмов и значительного многообразия для получения воспринимаемых человеком результатов, эффективных в условиях непрерывного прироста, распределения по многочисленным узлам вычислительной сети, сформировавшихся в конце 2000-х годов, альтернативных традиционным системам управления базами данных и решениям класса Business Intelligence. Об актуальности данного явления можно судить, обработав поисковые запросы в Google Trends по теме big data. * Материал из Википедии - свободной энциклопедии *
  • 3. - логи поведения пользователей в интернете; - GPS-сигналы от автомобилей для транспортной компании; - данные, снимаемые с датчиков в большом адронном коллайдере; - оцифрованные книги в Российской Государственной Библиотеке; - информация о транзакциях всех клиентов банка; - информация о всех покупках в крупной ритейл сети.
  • 4. 1. Горизонтальная масштабируемость. Поскольку данных может быть сколь угодно много – любая система, которая подразумевает обработку больших данных, должна быть расширяемой. Например, если в 2 раза вырос объём данных – в 2 раза увеличили количество железа в кластере и всё продолжило работать. 2. Отказоустойчивость. Принцип отказоустойчивости подразумевает, что машин в кластере может быть много. Это означает, что часть этих машин будет гарантированно выходить из строя. Методы работы с большими данными должны учитывать возможность таких сбоев и переживать их без каких-либо значимых последствий. 3. Локальность данных. В больших распределённых системах данные распределены по большому количеству машин. Если данные физически находятся на одном сервере, а обрабатываются на другом – расходы на передачу данных могут превысить расходы на саму обработку. Поэтому одним из важнейших принципов проектирования BigData-решений является принцип локальности данных – по возможности обрабатываем данные на той же машине, на которой их храним.
  • 5. Ничего общего с SQL запросами обработка BD не имеет. Почему? Через 5 минут расскажу историю про симпатичное желтое реляционное ведерко и… ну, узнаете. Для обработки BD корпорация Google в 2004 году придумала целый набор инструментов и алгоритмов, дав им название MapReduce. Почитать в Вики: https://ru.wikipedia.org/wiki/MapReduce Почитать оригинал статьи Google: http://research.google.com/archive/mapreduce.html Можно рассматривать функцию MapReduce как модель или фреймворк. Параллельные вычисления над очень большими данными (несколько петабайт) Программная оболочка для вычисления BD с использованием большого количества компьютеров нодов в кластере
  • 6.
  • 7.
  • 8. MapReduce – это модель распределенной обработки данных, предложенная компанией Google для обработки больших объёмов данных на компьютерных кластерах. Подробнее можно почитать тут: http://habrahabr.ru/post/103467/ тут: http://habrahabr.ru/company/bitrix/blog/218003/ и вот тут: http://habrahabr.ru/post/74792/ а еще вот тут: https://msdn.microsoft.com/ru-ru/magazine/mt147240.aspx и тут тоже можно почитать: http://www.ibm.com/developerworks/ru/library/bd-mapreduce/index.html
  • 9.
  • 10.
  • 11. Стадия Map. На этой стадии данные предобрабатываются при помощи функции map(), которую определяет пользователь. Работа этой стадии заключается в предобработке и фильтрации данных. Пользовательская функция применяется к каждой входной записи. Функция map() примененная к одной входной записи и выдаёт множество пар ключ-значение. Множество – т.е. может выдать только одну запись, может не выдать ничего, а может выдать несколько пар ключ-значение. Что будет находится в ключе и в значении – решать пользователю, но ключ – очень важная вещь, так как данные с одним ключом в будущем попадут в один экземпляр функции reduce.
  • 12. Будем “мапать” предложение с целью выяснить – сколько раз в нем упоминаются разные слова. В Python псевдо-код команды Map будет выглядеть примерно так: Определяем функцию def, в которую положим предложение Возвращаем значения из генератора, разбитые по одному слову Загрузим в переменную-генератор следующую строку (классика!): the quick brown fox jumps over the lazy dog
  • 13. Стадия Shuffle. Проходит незаметно для пользователя. В этой стадии вывод функции map «разбирается по корзинам» – каждая корзина соответствует одному ключу вывода стадии map. В дальнейшем эти корзины послужат входом для reduce. Результат функции Map в прошлом примере показан уже после выполнения shuffle. Посмотрим еще примерчик по коду Map и Shuffle. Взял его у этих ребят с навороченным сайтом: http://datacentric.ru/#blog Представим, нам в руки попали данные некоторой рекламной системы: Мы хотим высчитать среднюю стоимость рекламы по городам России на основании данных этого массива.
  • 14. Стадия Reduce. Каждая «корзина» со значениями, сформированная на стадии shuffle, попадает на вход функции reduce(). Функция reduce задаётся пользователем и вычисляет финальный результат для отдельной «корзины». Множество всех значений, возвращённых функцией reduce(), является финальным результатом MapReduce-задачи. Посмотрим, как сделать Reduce для примера, приведенного выше. Reduce для быстрой и хулиганистой коричневой лисички:
  • 15. Reduce для данных о рекламной компании в виде листинга выглядит так: Выборка из BigData при помощи функции MapReduce – это технически нетрудный, но весьма эффективный инструмент анализа данных для Data Scientist . Правильно оформленные результаты функции MR являются современным, привлекательным продуктом на IT рынке. Тут можно посмотреть обзор продукт “анализ bigdata” от компании-производителя в виде слайдиков: http://www.slideshare.net/Data-Centric_Alliance/big-data-is-the-new-oil А тут можно посмотреть один из красиво упакованных продуктов по BigData: http://www.slideshare.net/Data-Centric_Alliance/ss-55342365
  • 16. Одним из наиболее распространенных инструментов работы с Big Data в рамках парадигмы MapReduce является Hadoop от Apache. Практической работы в нашем курсе этого года не предусмотрено, но заинтересовавшиеся технологией MapReduce студенты могут попрактиковаться в работе с это технологией в рамках Hadoop совершенно безвозмездно. То есть – даром. Вот ссылка на хорошую статью по Hadoop, его установке на кластер и по примерам его использования: http://habrahabr.ru/company/dca/blog/268277/
  • 17. Этот способ регламентируется применением NoSQL структуры хранения данных. NoSQL (not only SQL, не только SQL), термин, обозначающий ряд подходов, направленных на реализацию хранилищ баз данных, имеющих существенные отличия от моделей, используемых в традиционных реляционных СУБД с доступом к данным средствами языка SQL. В NoSQL вместо традиционного реляционного ACID используется набор свойств BASE: - базовая доступность (basic availability) - каждый запрос гарантированно завершается (успешно или безуспешно). - гибкое состояние (soft state) - состояние системы может изменяться со временем, даже без ввода новых данных, для достижения согласования данных. - согласованность в конечном счёте (eventual consistency) - данные могут быть некоторое время рассогласованы, но приходят к согласованию через некоторое время.
  • 18. 1. Применение различных типов хранилищ. 2. Возможность разработки базы данных без задания схемы. 3. Использование многопроцессорности. 4. Линейная масштабируемость (добавление процессоров увеличивает производительность). 5. Инновационность: «не только SQL» открывает много возможностей для хранения и обработки данных. 6. Сокращение времени разработки 7. Скорость: даже при небольшом количестве данных конечные пользователи могут оценить снижение времени отклика системы с сотен миллисекунд до миллисекунд.
  • 20. 1. Элемент хранения - пара - составной ключ: major keys и minor keys; - произвольное неструктурированное значение. 2. Ключ: “Smith/John/-/phonenumber/home” - major key: список из 1 или более компонентов (“Smith/John”) – влияет на выбор узла хранения по хеш-значению (алфавит); - minor key: список из 0 или более компонентов (“phonenumber/home”) – все значения гарантированно на одном узле, вместе с major key определяет уникальный ключ. 3. Значение: “555 5555“ - значение, строка байтов; - может быть сериализацией любого набора данных, структурированных или неструктурированных, с любой семантикой.
  • 21. {“Smith/Bob/-/phonenumber/home”: “555 5555”} {“Smith/Bob/-/phonenumber/mobile”: “333 3333”} Smith └ Bob └ phonenumber ├ home: “555 5555” └ mobile: “333 3333” Major key Minor key Value (значение)
  • 22. В этом хранилище данные хранятся в виде разреженной матрицы, строки и столбцы которой используются как ключи. Типичным применением этого вида СУБД является веб-индексирование, а также задачи, связанные с большими данными, с пониженными требованиями к согласованности данных. Индексирование в поисковых системах (веб-индексирование) — процесс добавления сведений (о сайте) роботом поисковой машины в базу данных, впоследствии использующуюся для (полнотекстового) поиска информации на проиндексированных сайтах. 1. Column (колонка) – множество пар ключ-значение (key-value). 2. Column Family (семейство колонок) - содержит множество колонок, у каждой из которых есть название, значение, и временная метка, и на которые ссылаются с помощью ключей строк. 3. Keyspace (пространство ключей) - содержит набор семейств колонок. 4. SuperColumn (суперколонки) - колонки, состоящие из набора подколонок.
  • 23. users: { "1": { "firstName": "John", "lastName": "Smith", "phoneNumbers": { "home": "555 5555", "mobile": "333 3333"} }, "2": … } Get ({“firstName”, “lastName”}, "1“)
  • 24. Очень близкий к XML формату хранения данных тип. СУБД, специально предназначенная для хранения иерархических структур данных (документов). В основе ДОСУБД лежат документные хранилища имеющие структуру дерева (иногда леса). Структура дерева начинается с корневого узла и может содержать несколько внутренних и листовых узлов. Листовые узлы содержат данные, которые при добавлении документа заносятся в индексы, что позволяет даже при достаточно сложной структуре находить место (путь) искомых данных. В отличие от хранилищ типа ключ-значение, выборка по запросу к документному хранилищу может содержать части большого количества документов без полной загрузки этих документов в оперативную память. Документы могут быть организованы (сгруппированы) в коллекции. Ключевым принципом реализации этой модели является JSON (JavaScript Object Notation).
  • 25. В качестве значений в JSON используются структуры: Объект - это неупорядоченное множество пар ключ:значение, заключённое в фигурные скобки «{ }». Ключ описывается строкой, между ним и значением стоит символ «:». Пары ключ-значение отделяются друг от друга запятыми. Массив (одномерный) - это упорядоченное множество значений. Массив заключается в квадратные скобки «[ ]». Значения разделяются запятыми. Значение может быть строкой в двойных кавычках, числом, объектом, массивом, одним из литералов: true, false или null. Строка - это упорядоченное множество из нуля или более символов юникода, заключенное в двойные кавычки. Символы могут быть указаны с использованием последовательностей, начинающихся с обратной косой черты «». JSON XML