Пишем свою платформу для управления данными. Это очень...
-
Upload
ontico -
Category
Engineering
-
view
434 -
download
3
Transcript of Пишем свою платформу для управления данными. Это очень...
Пишем свою платформу для работы с данными? Это просто.Василий Суханов
О чем расскажу?
Здесь работает ваш
клиент
Здесь крутится ваша
СУБД у клиента
… про жизнь
Здесь совершаете подвиги
вы
Поиск решенияНовый движок?
Сделать свой или выбрать готовый?
Старый 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
ПРИГЛАШАЕМ К НАШЕМУ СТЕНДУ
СПАСИБО ЗА ВНИМАНИЕ