|
|
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
Текущая система - утрированное описание структуры БД (MSSQL 08R2): Таблица объектов учёта (ID и много текстовых строк) ОУ; Связанные с ней таблицы с дополнительными данными - ТДД; Таблица заявок ТЗ, связанная с ней таблица нарядов ТН, таблицы-клоны ОУ и ТДД (ТК), в которые помещаются пользовательские изменения. В какждой из ТК хранится ссылка на наряд. Каждому наряду соответствует одна запись в ТК. Логика работы системы - при создании заявки создаётся наряд и связанные с ним записи в таблицах клонах. Для первого наряда в ТК помещаются данные из ОУ и ТДД. В рамках наряда пользователи вносят изменения в ТК. При сохранении наряда происходят следующие действия: 1. создаётся новый наряд для которого создаются новые строки в ТК, в которые копируются данные из ТК предыдущего наряда. 2. При необходимости - данные из ТК накатываются на ОУ и ТДД. Таким образом сохраняется полная история всех пользовательских изменений. Программный код системы изменить нельзя, но к БД есть полный доступ. Задача разделить продукционную и отчётную БД. С денормализацией всё понятно. Вопрос по заполнению отчётной БД. Пока оптимальным видится вариант - все изменения в ТК триггерами БД откладываться в некий temp. Откуда по расписанию забирать, парсить и скидывать в отчётную БД. Правильной дорогой иду, товарищи? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2011, 16:29 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
vippi Задача разделить продукционную и отчётную БДПервейшее и наипростейшее решение - бакапите основную базу и восстанавливаете ее на отчетном экземпляре. Плюсы - нечему ломаться, тест бакапа, полная свобода действий с отчетной базой. Или накатываете лог, но тогда изменять отчетную базу нельзя. Если наипростейшее решение не устраивает - отвечаете почему и от этого пляшем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2011, 16:40 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
Наипростейшее решение, к сожалению не подходит. Уже сейчас есть настроенное зеркало через LogShipping используещееся для отчётов через ReportingServices. Записей много. Их надо банально удалять из продукционки. Несколько бэкапов на различные даты также не подходит - используется куча отчётов. Скажу больше - система позволяет пользователям формировать выборки используя умные фильтры - поиск по любым полям, JOIN-ы и проч. Запретить это нельзя. Покрыть все варианты индексами - на выходе будет громадный размер БД и проблемы со вставкой. Т.е. надо как-то переносить данные. Скорее всего при каждом изменении записи в продукционке (заявки, наряды и связанные с ними клоны) - сливать эти записи в хранилище. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2011, 17:06 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
vippi ... Задача разделить продукционную и отчётную БД. С денормализацией всё понятно. Вопрос по заполнению отчётной БД. ... То есть, выбранная Вами СУБД не справляется с нагрузкой без этого, весьма странного разделения?:) И что же это за нагрузка, если не секрет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2011, 18:10 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
Вы определитесь сразу - у вас проблема с текущей системой или отчетами Вы решили что частичное удаление решит ваши проблемы? Может и так но при правильном плане большой объем данных не проблема, при неправильном удаление не поможет. Копайте в сторону репликации вместо самописных триггеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2011, 22:04 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
SERG1257, Вообще-то это нормальная ситуация - объем данных растет операционная база пухнет, - начиная с какого-то момента никакие планы не спасают от тормозов. Для этого и создается хранилище чтобы там держать исторические данные, а в операционной - только небольшой временной промежуток. Насчет профессиональной репликации - опять-таки, не совсем согласна - зависит от сложности задачи/объема данных, а то ведь и из пушки по воробьям может получиться. На одном из начальных этапов/для задач где не прогнозируется большой рост объемов или нагрузки, работа на триггерах вполне может послужить сносным решением.. Конечно предварительно надо оттестится насколько это повысит нагрузку на операционную базу, ну и vippiзабирать, парсить и скидывать в отчётную БД. - это все конечно на ночь или в моменты сниженной нагрузки накрайняк, - в зависимости от того каковы требования на сроки обновления данных в хранилище. А потратить деньги на всевозможные ETL-инструменты - это никогда не поздно, - главное чтоб оправдано было. vippi - а сейчас у вас операционная база и хранилище - это по структуре/объему данных одно и то же или нет? Если у вас пользователи имеют возможность создавать произвольные запросы, то чтобы это работало прилично вам по любому придется покрывать все индексами по максимуму - только делать это нужно будет в хранилище а не в операционной базе, - ну на то оно и хранилище - здесь мы жертвуем размерами БД и скоростью вставки в обмен на скорость выборки. Что-то упоминалось про денормализацию... вы собираетесь создавать отдельную структуру хранилища или как? И, - можете озвучить примерный объем данных операционной базы, объем хранилища и объем прироста дынных в хранилище за день? И прогнозы по росту? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2011, 11:11 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
AnyaNartova Вообще-то это нормальная ситуация - объем данных растет операционная база пухнет, - начиная с какого-то момента никакие планы не спасают от тормозовЭто не нормальная ситуация, чтобы быть нормальной оно должно поддерживаться авторами софта. Иначе - огромный риск несогласованных данных не стоящий никакого ускорения, тем более что после удаления делетом, надо перестроить индексы чтобы получить эффект. Далее - имеем тормоза - я предлагаю разобраться чем они вызваны - в какие моменты, какие процедуры и т.д. Без этого любая настройка не имеет смысла. самописная репликация - склад граблей со стороны пользователей приложения. AnyaNartova вам по любому придется покрывать все индексами по максимумуЩаз. Начинать надо опять от пользователей от статистики запросов, и требований бизнеса. Пользователи не выдают совсем произвольных запросов, а для типичных надо протоптать дорожку, выбрать идеальный план, убедится что он используется. Плохо если приложение выдает динамический запрос прямо к базе, тогда ой. AnyaNartova Что-то упоминалось про денормализациюТопик стартер слышал что это помогает, но без предварительного анализа это бессмысленно. AnyaNartova И, - можете озвучить примерный объем данных операционной базы, объем хранилища и объем прироста дынных в хранилище за день? И прогнозы по росту?Плюс редакцию SQL Server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2011, 16:12 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
SERG1257 Это не нормальная ситуация, чтобы быть нормальной оно должно поддерживаться авторами софта. Ну здесь частично согласна, но ведь не все предусматривают. Ну к примеру, классические продажи. Храните вы их в базе за год, два, три... если у вас ко всему прочему еще и успешная компания, через пяток лет база по-любому распухнет. А терять все это никто не хочет, ибо это бесценные данные с точки зрения анализа: что продавали, кому и как. Имея эти данные можно просчитать что, кому и как надо продавать чтобы максимально эффективно было. SERG1257Далее - имеем тормоза - я предлагаю разобраться чем они вызваны - в какие моменты, какие процедуры и т.д. Без этого любая настройка не имеет смысла. Я не спорю с тем, что с этого надо начинать, но рано или поздно наступает момент, когда это перестает спасать. Ну все, - все попадает в индексы, статистика обновлена, запросы оптимальны и т.д. и т.п. ну объективно - а посчитать отчет - 6 часов. SERG1257самописная репликация - склад граблей со стороны пользователей приложения. А вы думаете, если писать перенос используя профессиональный ETL инструмент граблей будет меньше? И там и там люди пишут. Согласитесь, это зависит от кривизны рук пишущего. SERG1257AnyaNartova вам по любому придется покрывать все индексами по максимумуЩаз. Начинать надо опять от пользователей от статистики запросов, и требований бизнеса. Пользователи не выдают совсем произвольных запросов, а для типичных надо протоптать дорожку, выбрать идеальный план, убедится что он используется. Плохо если приложение выдает динамический запрос прямо к базе, тогда ой. А что такое ad-hoc запросы, - вы не слышали? Это собственно оно самое и есть - динамический запрос прямо к базе. Собственно, это первый шаг на пути к реальной аналитике, и случается он, когда простых статических отчетов уже нехватает. Дальше идет уже продвинутая аналитика и прогнозирование. Эти динамические запросы, - убийство для большинства баз, - вот и придумали обходные маневры: OLAP-решения, где все аггрегаты посчитаны заранее; чисто железячные и супер-дорогие с MPP-архитектурой типа Terradata; базы с хранением данных по колонкам типа Sybase IQ, и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 18:51 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
Не хочется с вами Аня спорить в отсутствие ТС тем более что формально вы правы, так несколько замечаний AnyaNartova Ну все, - все попадает в индексы, статистика обновлена, запросы оптимальны и т.д. и т.п. ну объективно - а посчитать отчет - 6 часов.Ну что вы привязались к этим индексам - это всего лишь один из иструментов. AnyaNartova А вы думаете, если писать перенос используя профессиональный ETL инструмент граблей будет меньше?Я уверен что стандартная репликация от MS будет надежнее чем самописная на триггерах. AnyaNartova А что такое ad-hoc запросы, - вы не слышали?Я слышал про такие запросы, но не верю в возможности написать эффективный запрос не зная SQL (эта идея будоражит умы вот уже много лет). Я верю в эффективные и корректные запросы написанных грамотным спецом, и модифицируемые пользователем по принципу - то же самое, но с перламутровыми пуговицами. Иначе слишком велика вероятность несогласованных данных: join vs left join, обработка null, union vs union all и им подобные мелочи делают вопрос постороения отчетов в OLTP системе неоднозначным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2011, 16:41 |
|
||
|
Наполнение хранилища-отчётной БД
|
|||
|---|---|---|---|
|
#18+
SERG1257подобные мелочи делают вопрос постороения отчетов в OLTP системе неоднозначным. Вот! Вот это как раз и есть камень преткновения. Я полностью согласна с тем, что в OLTP нельзя гонять ad hoc, в том числе и по описанным вами причинам. Такие вещи возможны только в хранилищах, - где данные и структура подготовлены специальным образом и очищены. К примеру - null в правильно построенном хранилище должен отсутствовать как класс. Ладно, давайте и правда закроем тему, а то мы уже далеко удалились от ТС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2011, 21:38 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37292398&tid=1542142]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 415ms |

| 0 / 0 |
