Особенности масштабирования систем планирования и управления поставками Михаил Антонов Magenta Development.

Презентация:



Advertisements
Похожие презентации
Введение в SQL (НЕ select) Затрагиваемые темы Роль языка SQL. Части SQL Роль языка SQL. Части SQL Администрирование БД: привилегии (DCL) Администрирование.
Advertisements

ОПТИМИЗАЦИЯ SQL. Чем дальше от начала разработки обнаруживается неэффективность приложения, тем дороже она обходится Время Стоимость ПроектированиеРазработка.
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
Хранение таблиц По строкам По столбцам Строки нескольких таблиц группируются по общему атрибуту.
Язык SQL Последовательности Представления Индексы.
Оптимизация запросов в Microsoft SQL Server Дмитрий Костылев Начальник отдела разработки системного ПО ОАО «Нордеа Банк» SQL Server MVP.
1.Доступ к словарю базы данных 1.v$ 2.dba_ 3.all_ 4.user_ 2.Просмотр системных view cистемные view - dict (dictionary) столбцы системных view – dict_columns.
Администрирование информационных систем Лекция 4. Система управления базами данных.
Администрирование и безопасность MySQL. Создание и удаление пользователей Под учетной записью пользователя MySQL подразумевается строка в таблице user.
OLAP и OLTP системы OLTP – оперативная транзакционная обработка данных OLAP – оперативная аналитическая обработка данных.
Базы данных. Введение Базы данных обеспечивают хранение информации. Доступ к базе данных осуществляется через специальную программу - систему управления.
База данных и СУБД: основные понятия. База данных: общее понятие База данных: хранилище информации отражает объект реального мира имитирует деятельность.
СУБД Microsoft Access 2003 ЗНАКОМСТВО. Что такое Access? Access – Приложение, входящее в состав пакета Microsoft Office (разработано компанией Microsoft).
® SQL*Loader. ® БД ORACLE Назначение Загрузка внешних данных в БД Oracle.
Обеспечение целостности данных Процедурное. Хранимые процедуры Хранимые процедуры пишутся на специальном встроенном языке программирования, они могут.
Object Relational Mapping (ORM) Объектно-реляционное отображение.
Распределенная обработка данных Различные модели в технологии баз данных.
Реляционные базы данных N-арное отношение – подмножество декартова произведения N множеств возможных значений (доменов, типов данных, атрибутов) Изображение.
Система контроля прав доступа При помощи процедур и триггеров в MySQL.
Новые возможности 12c Active Data Guard Евгений Горбоконенко.
Транксрипт:

Особенности масштабирования систем планирования и управления поставками Михаил Антонов Magenta Development

Масштабируемость нужна крупным: Интернет-проектам – highscalability.com highscalability.com А также банкам, биржам, интернет- провайдерам, системам планирования поставок и еще много где… …но требования и подход везде разные

Как выглядит управление поставками (supply chain management, SCM) Сверху вниз – производится и поставляется товар Снизу вверх – «обратная связь», корректировка поставок Сырье Вендор Ритейлер Покупатель

Из каких компонентов состоит? SCM Demand Planning Order Management ProcurementTransportation

Что делает ритейлер? Заказывает товары у вендоров Продает их покупателям в своих магазинах (В идеале) получает с этого прибыль – Оборот крупного ритейлера млрд. $ в год – Но чистая прибыль обычно 1-4% от оборота – Поэтому точность прогнозов продаж важна

Что нужно ритейлеру от SCM-системы? Получать данные о происходящем в его магазинах (продажи, скидки и т.п.) Накапливать информацию для анализа Делать точные прогнозы продаж на будущее Формировать и размещать заказы Иметь возможность наблюдать за происходящим / анализировать / вносить корректировки вручную

Какие трудности при разработке? Крупные компании медлительны – «быстро уточнить» или «попросить исправить на своей стороне» трудно Ограниченный стек технологий – Mainstream, поддержка, сертификация Точность прогнозирования – Проверять и тюнить нужно на живой системе – А ошибки там обходятся дорого Масштабирование…

Специфика масштабирования – пользователи Их мало (десятки, сотни), и они эксперты в предметной области Обычно они «тушат пожары» – Обнаруживать и тушить их нужно быстро Основываясь на данных – Максимально подробных – Агрегированных на различных уровнях – Удобно визуализированных

Специфика масштабирования – данные Их много, и их надо хранить и обрабатывать – 2 тысячи магазинов * 50 тысяч товаров * 500 дней – Это 50 миллиардов, но в реальности 5-10 миллиардов Points of Sales – А еще информация об Events, Inventory Profile etc Они приходят каждый день со всех магазинов – Их надо конвертировать, валидировать, загружать – Приходят в определенное время, но иногда задерживаются

Специфика масштабирования – данные, ч.2 Их надо обрабатывать – Статистический (долгосрочный) прогноз – Эвристический (краткосрочный) прогноз – Создание заказов Время на обработку ограничено – Запускается после получения последних данных – Должна быть завершена до начала следующих фаз бизнес-процесса (упаковка, отгрузка товара со складов) – Обычное ограничение – часа на все шаги обработки

Стек технологий Oracle 10g / 11g, RAC (RedHat Linux) Java 1.6, JBoss AS 4.2 (Windows 2003) Cобственный Cache / Grid Manager JSP, Struts, Javascript

Собственно масштабирование Хранение массивных таблиц и индексов Быстрая загрузка интеграционных данных извне Оптимизация отдельных запросов Настройка и мониторинг БД «в целом» Оптимизация пользовательского интерфейса Оптимизация работы engines

Oracle Partitioning Разбиение таблиц и индексов на отдельные секции Которыми можно управлять индивидуально (add, drop, move, split и др.) Улучшает производительность (partition pruning, partition-wise joins, разнесение секций по нескольким физическим устройствам хранения) Прозрачно для SQL запросов (в теории) Экономически эффективное использование Storage devices

Примеры table partitioning List partitioning CREATE TABLE employers ( emp_no NUMBER PRIMARY KEY, ename VARCHAR2(30), deptno NUMBER) PARTITION BY LIST (deptno) ( PARTITION p10 VALUES (10), PARTITION p20 VALUES (20,30)); Hash partitioning CREATE TABLE employers (id NUMBER, name VARCHAR2 (60)) PARTITION BY HASH (id) PARTITIONS 3 STORE IN (tablespase tsname1, tsname2, tsname3);

Загрузка данных - Oracle SQL Loader

Пример использования SQL Loader Control file load data CHARACTERSET UTF8 infile 'c:\data\mydata.csv' into table employer fields terminated by "," optionally enclosed by '"' (empno, empname, sal, deptno) Вызов sqlldr control=loader.ctl

SQL Loader – ускорение загрузки Два режима загрузки - Conventional Load и Direct Path Load Отключение индексов и constraints, более редкие коммиты и data saves Увеличение размера буфера SQL Loadera (чтение данных из файла более крупными блоками) Для Direct Path Load: – unrecoverable mode (отключение записи redo-логов) – параллельная загрузка (разбиение файла с данными на несколько более мелких, каждый из них загружается отдельным процессом SQL Loader)

2-х шаговая загрузка через SQL Loader Создаем временную таблицу той же структуры, что и CSV- файл, загружаем в неё CSV-file Разбиваем данные во временной таблице на группы Переносим данные из временной таблицы в основную – Используя UPDATE и / или INSERT – Создавая по отдельному task для каждой группы, и выполняя их параллельно – Заполняя нужные дополнительные столбцы (внешние ключи и др.) – Обновляя индексы Удаляем временную таблицу

External tables Хранятся не внутри tablespace, а как указатели на внешний flat file Позволяют обращаться к данным в flat file (CSV) как к таблице, используя SQL Являются дополнительной надстройкой над SQL Loader и работают через него

Жизненный цикл запроса Проверка синтаксиса Проверки обращений к объектам БД Трансформация запроса оптимизатором Оценка статистики, выбор способа выполнения Генерация Explain Plan Выполнение запроса (доступ к данным)

Explain plan Иерархичен Измеряется в costs – смысл зависит от модели оптимизации Требует знания: – Базовых методов доступа к данным: FTS, index lookup, row id – Типов индексов – b-tree index, bitmap index – Методов доступа по индексу: unique scan, range scan… – Физические способы joins Оптимизатору можно давать подсказки (hints) – SELECT /*+ HINT_NAME(params) */ … – FIRST_ROWS(n), ALL_ROWS, APPEND.

Мониторинг БД – Oracle Grid Control

Oracle Grid Control - продолжение

Transient Kernel Profiler (tkprof) alter session set sql_trace=true; alter session set timed_statistics=true; Форматирование файла трассировки Анализ результатов по выполненным запросам: Количество разборов запроса, процент попаданий в кеш, процессорное время, количество прочитанных блоков, число извлеченных строк и др. Не забыть выключить трассировку!

Оптимизация UI Пре-агрегирование данных (materialized views, вспомогательные таблицы с ручным обновлением) Вынос туда повторяющихся «тяжелых» частей запросов Регулярное обновление / очистка вспомогательных таблиц / mviews Принудительная фильтрация в UI как мера предосторожности

Оптимизация engines Выделение цепочки engines для обработки данных Выделение групп данных, которые могут рассчитываться независимо друг от друга. Группировка должна быть одинаковой по всем массивным таблицам. Пример: – таблицы: Forecasts, Orders, Sales, Alerts – subnet: Distribution center (DC) - Item Создание параллельно выполняющихся задач для обработки каждой группы каждым engine – Горизонтально масштабируемо – Более мелкие и управляемые транзакции – Отслеживание прогресса, предсказуемое время выполнения

Выводы о масштабируемости Узкое место – I/O на серверах БД Хотя многие операции проще и быстрее выполнять внутри СУБД, Oracle масштабировать дороже, чем Java/JBoss Оптимально выглядит 4-6 Java-серверов и 1-2 сервера Oracle

Вопросы? Михаил Антонов Magenta Technology twitter.com/Zorkus