SlideShare a Scribd company logo
Пишем свою
платформу для
работы с данными?
Это просто.
Василий Суханов
О чем расскажу?
Здесь работает
ваш
клиент
Здесь крутится
ваша
СУБД у клиента
… про жизнь
Здесь совершаете
подвиги
вы
Поиск решения
Новый движок?
Сделать свой или выбрать готовый?
Старый SQL код должен работать!
И чтобы не хуже, чем раньше!
Какую инфраструктуру
выбрать?
SQL code IR code IR code
Parser/Lexer, синтаксис
и семантика
Оптимизация Выполнение
(1) Желательно, чтобы быстро работало,
и можно было влиять на процесс
(2) Промежуточный код/план нужно оптимизировать
(3) Нужна возможность отладки SQL Code
(1) (2) (3)
А как это работает?
Front-End Back-End
IR code ВЫПОЛНЕНИЕ
С++
OLAP join
JOINEvaluate
С++
OLTP
READWRITE
Попробуем выполнить?
(1) INSERT #ORDERS USING ARRAY(«КАРТОШКА», «01-FEB», «50»);
TABLE<String “TOWN”, String “DESCRIPTION”> ORDERS;
Size last_row_index = ORDERS.getSize();
COLUMN<String> column_town = ORDERS.”TOWN”;
COLUMN<String> column_date = DWH.”DATE”;
column_town[last_row_index] = “КАРТОШКА”;
column_desc[last_row_index] = “01-FEB”
#table = JE_Engine.join(‘#DWH’,’#ORDERS’,-1);
…
(2) SELECT VALUE FROM #DWH a INNER JOIN #ORDERS b
ON a.DATE_ID=b.DATE_ID;
Как построить BackEnd?
Колоночное хранение
Сжатие данных и упаковка в BITVECTOR
INTEL AVX2, SSE2
UNIFIED DATA TABLE
Что в итоге?
Мы выполнили задачу минимум – создали движок
для чтения и вставки данных в таблицу
и ещё добавили JOIN
Какие затраты мы понесли?
Неделя для изучения LLVM инфраструктуры с нуля
… а теперь давайте рассмотрим несколько примеров
Пример 1
Как быть с OLTP?
Держатель
счёта
Номер
счёта Баланс Операция От кого К кому Сумма
Фунтик 1 100 1 1 4 50
Беладонна 2 20 2 2 4 50
Скрудж 3 300 3 3 4 50
Cheshire Cat 4 400
1) SELECT SUM(Сумма) INTO BALANCE FROM LOG
WHERE BENEFICIAR=2;
2) IF BALANCE >= 50 THEN INSERT INTO LOG(2,4,50);
MAKE IT WISE AND SIMPLE!
Пример 2
Что даёт Column?
Вычисление функции AVG
по одному вектору из 141 000 000 элементов DECIMAL(20,2)
занимает 220 миллисекунд (server processing time)
на одном ядре
Сжатие данных в среднем 1:3 до 1:7 в памяти
Данные на основе выборки из текущих проектов.
В задачах, отличных от решаемых, показатели могут отличаться от представленных.
Пример 3
Загрузка данных в БД
Рабочий диапазон скорости загрузки
на текущих HW системах от 2 до 8 ТБ в минуту
Данные кластеризуются в рамках одной таблицы
Скорость зависит от типа и скорости памяти RAM
Данные на основе выборки из текущих проектов.
В задачах, отличных от решаемых, показатели могут отличаться от представленных.
Пример 4
Кластер
Запрос агрегации по колонке таблицы
из 100 миллиардов строк
и занимаемой памятью 20 ТБ RAM
работает менее чем 3 минуты
Данные на основе выборки из текущих проектов.
В задачах, отличных от решаемых, показатели могут отличаться от представленных.
Платформа SAP HANA
In-Memory SQL движок
Колоночное хранение и сжатие данных
OLAP в RealTime
ФИНАЛ
Сделать свою мини-СУБД очень просто !!!
Благодаря многим открытым проектам (LLVM) стало проще работать
Логику задачи нужно отражать на языке предметной области !!!
На данный момент нет варианта
более оптимального программирования в СУБД, чем SQL
ПРИГЛАШАЕМ К НАШЕМУ СТЕНДУ
СПАСИБО
ЗА ВНИМАНИЕ

More Related Content

PDF
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
PDF
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
PPTX
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
PPTX
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
PDF
Балансировка нагрузки и отказоустойчивость в Одноклассниках
PPTX
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
PPTX
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...

What's hot (20)

PDF
Чему мы научились разрабатывая микросервисы?
PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
PPTX
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
PPTX
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PPTX
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
PDF
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
PDF
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
PPTX
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
PDF
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
PDF
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
PDF
RootConf 2015
PDF
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
PDF
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
PPTX
Масштабирование баз данных. (Database Scalability)
PDF
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
PPTX
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Чему мы научились разрабатывая микросервисы?
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
RootConf 2015
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Масштабирование баз данных. (Database Scalability)
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Ad

Similar to Пишем свою платформу для управления данными. Это очень просто / Суханов Василий (SAP Labs) (20)

DOCX
бд шпора2
PPTX
SQL________________________________.pptx
PPTX
СУБД осень 2012 лекция 5
DOC
005
PPTX
Стажировка-2013, разработчики, занятие 11. Базы данных
PPTX
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08
PPTX
СУБД 2013 Лекция №1 "Введение и начало проектирования"
PDF
14 - Базы данных. Основные объекты базы данных и язык SQL
PPTX
Управление Данными. Лекция 7
PPTX
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
PDF
Фёдор Строк - Базы данных - SQL, ORM, NoSQL
PPTX
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
PDF
Не все базы данных одинаково полезны
PDF
Выступление Сергея Аверина, Badoo, на High Performance Conference
PDF
Не все базы данных одинаково полезны
PPTX
Управление Данными. Лекция 6
PPT
Базы данных лекция №7
PPTX
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
PPTX
Управление Данными. Лекция 1
DOC
0044
бд шпора2
SQL________________________________.pptx
СУБД осень 2012 лекция 5
005
Стажировка-2013, разработчики, занятие 11. Базы данных
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08
СУБД 2013 Лекция №1 "Введение и начало проектирования"
14 - Базы данных. Основные объекты базы данных и язык SQL
Управление Данными. Лекция 7
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Фёдор Строк - Базы данных - SQL, ORM, NoSQL
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
Не все базы данных одинаково полезны
Выступление Сергея Аверина, Badoo, на High Performance Conference
Не все базы данных одинаково полезны
Управление Данными. Лекция 6
Базы данных лекция №7
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Управление Данными. Лекция 1
0044
Ad

More from Ontico (20)

PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
PDF
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)

Пишем свою платформу для управления данными. Это очень просто / Суханов Василий (SAP Labs)

  • 1. Пишем свою платформу для работы с данными? Это просто. Василий Суханов
  • 2. О чем расскажу? Здесь работает ваш клиент Здесь крутится ваша СУБД у клиента … про жизнь Здесь совершаете подвиги вы
  • 3. Поиск решения Новый движок? Сделать свой или выбрать готовый? Старый SQL код должен работать! И чтобы не хуже, чем раньше!
  • 4. Какую инфраструктуру выбрать? SQL code IR code IR code Parser/Lexer, синтаксис и семантика Оптимизация Выполнение (1) Желательно, чтобы быстро работало, и можно было влиять на процесс (2) Промежуточный код/план нужно оптимизировать (3) Нужна возможность отладки SQL Code (1) (2) (3)
  • 5. А как это работает? Front-End Back-End IR code ВЫПОЛНЕНИЕ С++ OLAP join JOINEvaluate С++ OLTP READWRITE
  • 6. Попробуем выполнить? (1) INSERT #ORDERS USING ARRAY(«КАРТОШКА», «01-FEB», «50»); TABLE<String “TOWN”, String “DESCRIPTION”> ORDERS; Size last_row_index = ORDERS.getSize(); COLUMN<String> column_town = ORDERS.”TOWN”; COLUMN<String> column_date = DWH.”DATE”; column_town[last_row_index] = “КАРТОШКА”; column_desc[last_row_index] = “01-FEB” #table = JE_Engine.join(‘#DWH’,’#ORDERS’,-1); … (2) SELECT VALUE FROM #DWH a INNER JOIN #ORDERS b ON a.DATE_ID=b.DATE_ID;
  • 7. Как построить BackEnd? Колоночное хранение Сжатие данных и упаковка в BITVECTOR INTEL AVX2, SSE2 UNIFIED DATA TABLE
  • 8. Что в итоге? Мы выполнили задачу минимум – создали движок для чтения и вставки данных в таблицу и ещё добавили JOIN Какие затраты мы понесли? Неделя для изучения LLVM инфраструктуры с нуля … а теперь давайте рассмотрим несколько примеров
  • 9. Пример 1 Как быть с OLTP? Держатель счёта Номер счёта Баланс Операция От кого К кому Сумма Фунтик 1 100 1 1 4 50 Беладонна 2 20 2 2 4 50 Скрудж 3 300 3 3 4 50 Cheshire Cat 4 400 1) SELECT SUM(Сумма) INTO BALANCE FROM LOG WHERE BENEFICIAR=2; 2) IF BALANCE >= 50 THEN INSERT INTO LOG(2,4,50); MAKE IT WISE AND SIMPLE!
  • 10. Пример 2 Что даёт Column? Вычисление функции AVG по одному вектору из 141 000 000 элементов DECIMAL(20,2) занимает 220 миллисекунд (server processing time) на одном ядре Сжатие данных в среднем 1:3 до 1:7 в памяти Данные на основе выборки из текущих проектов. В задачах, отличных от решаемых, показатели могут отличаться от представленных.
  • 11. Пример 3 Загрузка данных в БД Рабочий диапазон скорости загрузки на текущих HW системах от 2 до 8 ТБ в минуту Данные кластеризуются в рамках одной таблицы Скорость зависит от типа и скорости памяти RAM Данные на основе выборки из текущих проектов. В задачах, отличных от решаемых, показатели могут отличаться от представленных.
  • 12. Пример 4 Кластер Запрос агрегации по колонке таблицы из 100 миллиардов строк и занимаемой памятью 20 ТБ RAM работает менее чем 3 минуты Данные на основе выборки из текущих проектов. В задачах, отличных от решаемых, показатели могут отличаться от представленных.
  • 13. Платформа SAP HANA In-Memory SQL движок Колоночное хранение и сжатие данных OLAP в RealTime
  • 14. ФИНАЛ Сделать свою мини-СУБД очень просто !!! Благодаря многим открытым проектам (LLVM) стало проще работать Логику задачи нужно отражать на языке предметной области !!! На данный момент нет варианта более оптимального программирования в СУБД, чем SQL ПРИГЛАШАЕМ К НАШЕМУ СТЕНДУ