Особенности масштабирования систем планирования и управления поставками

Содержание

Слайд 2

Масштабируемость нужна крупным:

Интернет-проектам
highscalability.com
А также банкам, биржам, интернет-провайдерам, системам планирования поставок и еще

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

Слайд 3

Как выглядит управление поставками (supply chain management, SCM)

Сверху вниз –производится и поставляется

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

Сырье

Вендор

Ритейлер

Покупатель

Слайд 4

Из каких компонентов состоит?

Из каких компонентов состоит?

Слайд 5

Что делает ритейлер?

Заказывает товары у вендоров
Продает их покупателям в своих магазинах
(В идеале)

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

Слайд 6

Что нужно ритейлеру от SCM-системы?

Получать данные о происходящем в его магазинах (продажи,

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

Слайд 7

Какие трудности при разработке?

Крупные компании медлительны
«быстро уточнить» или «попросить исправить на своей

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

Слайд 8

Специфика масштабирования – пользователи

Их мало (десятки, сотни), и они эксперты в предметной

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

Слайд 9

Специфика масштабирования – данные

Их много, и их надо хранить и обрабатывать
2 тысячи

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

Слайд 10

Специфика масштабирования – данные, ч.2

Их надо обрабатывать
Статистический (долгосрочный) прогноз
Эвристический (краткосрочный) прогноз
Создание заказов
Время

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

Слайд 11

Стек технологий

Oracle 10g / 11g, RAC (RedHat Linux)
Java 1.6, JBoss AS 4.2

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

Слайд 12

Собственно масштабирование

Хранение массивных таблиц и индексов
Быстрая загрузка интеграционных данных извне
Оптимизация отдельных

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

Слайд 13

Oracle Partitioning

Разбиение таблиц и индексов на отдельные секции
Которыми можно управлять индивидуально

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

Слайд 14

Примеры table partitioning

List partitioning
CREATE TABLE employers (       emp_no  NUMBER PRIMARY KEY,       ename  VARCHAR2(30),       deptno  NUMBER)    PARTITION BY LIST (deptno) (      

Примеры table partitioning List partitioning CREATE TABLE employers ( emp_no NUMBER PRIMARY
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);

Слайд 15

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

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

Слайд 16

Пример использования SQL Loader
Control file
load data
CHARACTERSET UTF8
infile 'c:\data\mydata.csv'
into table employer
fields terminated by

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

Слайд 17

SQL Loader – ускорение загрузки

Два режима загрузки - Conventional Load и Direct

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

Слайд 18

2-х шаговая загрузка через SQL Loader

Создаем временную таблицу той же структуры, что

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

Слайд 19

External tables

Хранятся не внутри tablespace, а как указатели на внешний flat file
Позволяют

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

Слайд 20

Жизненный цикл запроса

Проверка синтаксиса
Проверки обращений к объектам БД
Трансформация запроса оптимизатором
Оценка статистики, выбор

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

Слайд 21

Explain plan

Иерархичен
Измеряется в costs – смысл зависит от модели оптимизации
Требует знания:
Базовых методов

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.

Слайд 22

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

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

Слайд 23

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

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

Слайд 24

Transient Kernel Profiler (tkprof)

alter session set sql_trace=true;
alter session set timed_statistics=true;
<Выполнение любых запросов>
Форматирование

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

Слайд 25

Оптимизация UI

Пре-агрегирование данных (materialized views,
вспомогательные таблицы с ручным обновлением)
Вынос туда повторяющихся

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

Слайд 26

Оптимизация engines

Выделение цепочки engines для обработки данных
Выделение групп данных, которые могут рассчитываться

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

Слайд 27

Выводы о масштабируемости

Узкое место – I/O на серверах БД
Хотя многие операции проще

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