DataScience Lab, 13 мая 2017
Сервис для аналитической обработки огромных объемов структурированных данных
Константин Герасименко CEO, Easyolap
Все материалы доступны по ссылке: http://datascience.in.ua/report2017
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js
DataScienceLab2017_Блиц-доклад
1. Сервис для аналитической обработки огромных
объемов структурированных данных.
Константин Герасименко
2. Константин Герасименко
Куда деваются ресурсы ?
Обычный аналитический SQL-запрос:
rdb=> SELECT year, count(1) FROM big_transaction_table WHERE transaction_status = 'successful' GROUP BY year ORDER BY year;
3. Константин Герасименко
Куда деваются ресурсы ?
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002716
(6 rows)
Time: 20643.407 ms
Обычный аналитический SQL-запрос:
rdb=> SELECT year, count(1) FROM big_transaction_table WHERE transaction_status = 'successful' GROUP BY year ORDER BY year;
4. Константин Герасименко
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002721
(6 rows)
Time: 20668.446 ms
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002716
(6 rows)
Time: 20643.407 ms
Обычный аналитический SQL-запрос:
rdb=> SELECT year, count(1) FROM big_transaction_table WHERE transaction_status = 'successful' GROUP BY year ORDER BY year;
Куда деваются ресурсы ?
5. Константин Герасименко
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002721
(6 rows)
Time: 4133.0 ms
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002721
(6 rows)
Time: 20668.446 ms
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002716
(6 rows)
Time: 20643.407 ms
Обычный аналитический SQL-запрос:
rdb=> SELECT year, count(1) FROM big_transaction_table WHERE transaction_status = 'successful' GROUP BY year ORDER BY year;
Куда деваются ресурсы ?
6. Константин Герасименко
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002721
(6 rows)
Time: 4133.0 ms
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002721
(6 rows)
Time: 20668.446 ms
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002716
(6 rows)
Time: 20643.407 ms
year | count
--------+----------
2010 | 9001497
2011 | 18003481
2012 | 18000254
2013 | 17990446
2014 | 17996327
2015 | 9002721
(6 rows)
Time: ~ 10 ms
Обычный аналитический SQL-запрос:
rdb=> SELECT year, count(1) FROM big_transaction_table WHERE transaction_status = 'successful' GROUP BY year ORDER BY year;
Куда деваются ресурсы ?
9. Константин Герасименко
1. Модель: Один раз вычисляй, много раз спрашивай
2. “Неограниченный” объём входных данных
✓ Данные могут храниться в сжатом формате: bzip2, gzip, lz4 и т.д.
3. Время ответа на запросы по уже вычисленным агрегатам всегда константно, как
правило в пределах миллисекунд (тысячных долей секунды) и не зависит от:
✓ объема входных данных
✓ сложности агрегационной функции.
4. Агрегационные функции любой сложности
5. Возможно использование сравнительно дешевых вычислительных ресурсов
предлагаемых фреймворком Hadoop/MapReduce
Преимущества такого подхода:
10. Константин Герасименко
1. Результаты доступны только после вычисления/обновления OLAP куба
➢ невозможно использовать в системах реального времени.
2. Для вычисления всех возможных комбинаций/результатов требуется очень много
вычислительных ресурсов.
3. OLAP куб может быть достаточно большого размера/объёма.
➢ сжатый куб требует меньше места, но ухудшается скорость.
4. Отсутствует доступ к исходным данным. Доступны только результаты
агрегационных функций.
Недостатки такого подхода:
11. Константин Герасименко
1. Анализ данных не находящихся в базе данных (например лог-файлы)
2. Анализ данных замеров c любых сенсоров: погода, GPS позиционирование,
отслеживание состояния здоровья и спорта и т. Д
3. Визуализация GPS точек
4. Агрегирование графовых связей
Потенциальные кейсы применения :
12. Константин Герасименко
1. Доступ к огромной вычислительной мощности Hadoop кластера
2. Хранение данных
3. Расчет требуемых агрегатов
➢ с возможностью инкрементального обновления
4. Интерактивные запросы
➢ в том числе и визуализация с помощью “Pivot table”
5. Экспорт агрегатов/результатов для дальнейшего анализа
➢ REST API
Что получает клиент при использовании easyolap ?
13. Константин Герасименко
1. SaaS сервиса на основе общего облака (shared cloud)
➢ оплата за использованные вычислительные ресурсы
2. Выделенного кластера/облака для одного клиента
3. Расширенной версии с коммерческой поддержкой
4. Бесплатной версии
Проект будет доступен в виде:
14. Сервис для аналитической обработки огромных объемов
структурированных данных.
Константин Герасименко
kred@gmx.net www.easyolap.com