Пишем свою платформу для управления данными. Это очень...

15
Пишем свою платформу для работы с данными? Это просто. Василий Суханов

Transcript of Пишем свою платформу для управления данными. Это очень...

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

Пишем свою платформу для работы с данными? Это просто.Василий Суханов

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

О чем расскажу?

Здесь работает ваш

клиент

Здесь крутится ваша

СУБД у клиента

… про жизнь

Здесь совершаете подвиги

вы

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

Поиск решенияНовый движок?

Сделать свой или выбрать готовый?

Старый SQL код должен работать!

И чтобы не хуже, чем раньше!

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

Какую инфраструктуру выбрать?

SQL code IR code IR code

Parser/Lexer, синтаксиси семантика

Оптимизация Выполнение

( 1) Желательно, чтобы быстро работало, и можно было влиять на процесс

(2) Промежуточный код/план нужно оптимизировать (3) Нужна возможность отладки SQL Code

(1) (2) (3)

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

А как это работает?

Front-End Back-End

IR code ВЫПОЛНЕНИЕ

С++OLAP join

JOINEvaluate

С++ OLTP

READWRITE

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

Попробуем выполнить?

(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;

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

Как построить BackEnd?

Колоночное хранение

Сжатие данных и упаковка в BITVECTOR

INTEL AVX2, SSE2

UNIFIED DATA TABLE

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

Что в итоге?Мы выполнили задачу минимум – создали движок

для чтения и вставки данных в таблицуи ещё добавили JOIN

Какие затраты мы понесли?Неделя для изучения LLVM инфраструктуры с нуля

… а теперь давайте рассмотрим несколько примеров

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

Пример 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!

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

Пример 2

Что даёт Column?Вычисление функции AVG

по одному вектору из 141 000 000 элементов DECIMAL(20,2)занимает 220 миллисекунд (server processing time)

на одном ядре

Сжатие данных в среднем 1:3 до 1:7 в памяти

Данные на основе выборки из текущих проектов.В задачах, отличных от решаемых, показатели могут отличаться от представленных.

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

Пример 3Загрузка данных в БД

Рабочий диапазон скорости загрузки на текущих HW системах от 2 до 8 ТБ в минуту

Данные кластеризуются в рамках одной таблицы

Скорость зависит от типа и скорости памяти RAM

Данные на основе выборки из текущих проектов.В задачах, отличных от решаемых, показатели могут отличаться от представленных.

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

Пример 4

КластерЗапрос агрегации по колонке таблицы

из 100 миллиардов строки занимаемой памятью 20 ТБ RAM

работает менее чем 3 минуты

Данные на основе выборки из текущих проектов.В задачах, отличных от решаемых, показатели могут отличаться от представленных.

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

Платформа SAP HANA

In-Memory SQL движок

Колоночное хранение и сжатие данных

OLAP в RealTime

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

ФИНАЛСделать свою мини-СУБД очень просто !!!

Благодаря многим открытым проектам (LLVM) стало проще работать

Логику задачи нужно отражать на языке предметной области !!!

На данный момент нет варианта более оптимального программирования в СУБД, чем SQL

ПРИГЛАШАЕМ К НАШЕМУ СТЕНДУ

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

СПАСИБО ЗА ВНИМАНИЕ