Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Пишем свою
платформу для
работы с данными?
Это просто.
Василий Суханов
О чем расскажу?
Здесь работает
ваш
клиент
Здесь крутится
ваша
СУБД у клиента
… про жизнь
Здесь совершаете
подвиги
вы
Поиск решения
Новый движок?
Сделать свой или выбрать готовый?
Старый SQL код должен работать!
И чтобы не хуже, чем раньше!
Какую инфраструктуру
выбрать?
SQL code IR code IR code
Parser/Lexer, синтаксис
и семантика
Оптимизация Выполнение
(1) Жела...
А как это работает?
Front-End Back-End
IR code ВЫПОЛНЕНИЕ
С++
OLAP join
JOINEvaluate
С++
OLTP
READWRITE
Попробуем выполнить?
(1) INSERT #ORDERS USING ARRAY(«КАРТОШКА», «01-FEB», «50»);
TABLE<String “TOWN”, String “DESCRIPTION”...
Как построить BackEnd?
Колоночное хранение
Сжатие данных и упаковка в BITVECTOR
INTEL AVX2, SSE2
UNIFIED DATA TABLE
Что в итоге?
Мы выполнили задачу минимум – создали движок
для чтения и вставки данных в таблицу
и ещё добавили JOIN
Какие ...
Пример 1
Как быть с OLTP?
Держатель
счёта
Номер
счёта Баланс Операция От кого К кому Сумма
Фунтик 1 100 1 1 4 50
Беладонна...
Пример 2
Что даёт Column?
Вычисление функции AVG
по одному вектору из 141 000 000 элементов DECIMAL(20,2)
занимает 220 мил...
Пример 3
Загрузка данных в БД
Рабочий диапазон скорости загрузки
на текущих HW системах от 2 до 8 ТБ в минуту
Данные класт...
Пример 4
Кластер
Запрос агрегации по колонке таблицы
из 100 миллиардов строк
и занимаемой памятью 20 ТБ RAM
работает менее...
Платформа SAP HANA
In-Memory SQL движок
Колоночное хранение и сжатие данных
OLAP в RealTime
ФИНАЛ
Сделать свою мини-СУБД очень просто !!!
Благодаря многим открытым проектам (LLVM) стало проще работать
Логику задачи...
СПАСИБО
ЗА ВНИМАНИЕ
Upcoming SlideShare
Loading in …5
×

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

520 views

Published on

На примере платформы SAP HANA рассмотрим подходы к созданию высокопроизводительной платформы для управления большими массивами данных и выполнения сложных вычислений. В ходе сессии будут представлены архитектурные решения, которые частично легли в основу платформы, а также будет проведён сравнительный анализ предложенных решений в приложении к современным разработкам Intel в области архитектуры ЭВМ.

Тезисы - http://www.highload.ru/2015/abstracts/1856.html

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Пишем свою платформу для работы с данными? Это просто. Василий Суханов
  2. 2. О чем расскажу? Здесь работает ваш клиент Здесь крутится ваша СУБД у клиента … про жизнь Здесь совершаете подвиги вы
  3. 3. Поиск решения Новый движок? Сделать свой или выбрать готовый? Старый SQL код должен работать! И чтобы не хуже, чем раньше!
  4. 4. Какую инфраструктуру выбрать? SQL code IR code IR code Parser/Lexer, синтаксис и семантика Оптимизация Выполнение (1) Желательно, чтобы быстро работало, и можно было влиять на процесс (2) Промежуточный код/план нужно оптимизировать (3) Нужна возможность отладки SQL Code (1) (2) (3)
  5. 5. А как это работает? Front-End Back-End IR code ВЫПОЛНЕНИЕ С++ OLAP join JOINEvaluate С++ OLTP READWRITE
  6. 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. 7. Как построить BackEnd? Колоночное хранение Сжатие данных и упаковка в BITVECTOR INTEL AVX2, SSE2 UNIFIED DATA TABLE
  8. 8. Что в итоге? Мы выполнили задачу минимум – создали движок для чтения и вставки данных в таблицу и ещё добавили JOIN Какие затраты мы понесли? Неделя для изучения LLVM инфраструктуры с нуля … а теперь давайте рассмотрим несколько примеров
  9. 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. 10. Пример 2 Что даёт Column? Вычисление функции AVG по одному вектору из 141 000 000 элементов DECIMAL(20,2) занимает 220 миллисекунд (server processing time) на одном ядре Сжатие данных в среднем 1:3 до 1:7 в памяти Данные на основе выборки из текущих проектов. В задачах, отличных от решаемых, показатели могут отличаться от представленных.
  11. 11. Пример 3 Загрузка данных в БД Рабочий диапазон скорости загрузки на текущих HW системах от 2 до 8 ТБ в минуту Данные кластеризуются в рамках одной таблицы Скорость зависит от типа и скорости памяти RAM Данные на основе выборки из текущих проектов. В задачах, отличных от решаемых, показатели могут отличаться от представленных.
  12. 12. Пример 4 Кластер Запрос агрегации по колонке таблицы из 100 миллиардов строк и занимаемой памятью 20 ТБ RAM работает менее чем 3 минуты Данные на основе выборки из текущих проектов. В задачах, отличных от решаемых, показатели могут отличаться от представленных.
  13. 13. Платформа SAP HANA In-Memory SQL движок Колоночное хранение и сжатие данных OLAP в RealTime
  14. 14. ФИНАЛ Сделать свою мини-СУБД очень просто !!! Благодаря многим открытым проектам (LLVM) стало проще работать Логику задачи нужно отражать на языке предметной области !!! На данный момент нет варианта более оптимального программирования в СУБД, чем SQL ПРИГЛАШАЕМ К НАШЕМУ СТЕНДУ
  15. 15. СПАСИБО ЗА ВНИМАНИЕ

×