|
|
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
Принято считать, что триггеры (FK, индексы, ...) для DWH - зло (замедляют работу). Есть такая статья Ask Tom - The Trouble with Triggers http://www.oracle.com/technetwork/articles/o58asktom-101055.html и такое обсуждение https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:2575882200346616184 Вопросы, в них не поднятые: 1) почему триггеры - зло для DWH, и насколько количественно они - зло знаете ссылки на авторитетные статьи? 2) какие ограничения накладывает добавление к таблице триггера. например, здесь https://docs.oracle.com/cd/B28359_01/server.111/b28313/usingpe.htm указано: Parallel DML operations cannot be done on tables with triggers интересно, что в доке для 11.2 этого предложения нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 14:52 |
|
||
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
Табличные триггеры вообще имхо зло. Почти все можно и без них сделать, про них легче забыть и сделать сложно обратимые изменения нечаянно(при импорте каком-нибудь например). Если архитектура на них сильно завязана, то усложняются ad hoc изменения данных, да и код менять в такой системе становится сложнее. Про FK, индексы не понятно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 16:28 |
|
||
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
Alexus12, Одно из оснований это то что в двх в основном батч загрузки, которые должны быть как можно быстрее. И собственно говоря кто будет вещать построчный триггер для какой нибудь обработки на стейджинг таблицу, который убьет весь перформанс, когда есть batch-ETL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 16:32 |
|
||
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
ora601, вот в высших кругах появилась идея повесить проверку качества данных на такой триггер - и прямо при загрузке сигналить о кривых данных... триггером! нужно авторитетное обоснование, почему так нельзя (и насколько это ухудшает перформанс) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 17:59 |
|
||
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
А зачем нужны неверные данные? Даже быстро загруженные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 18:25 |
|
||
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
Alexus121) почему триггеры - зло для DWH, и насколько количественно они - зло знаете ссылки на авторитетные статьи?Почему ты решил, что авторитетные люди будут тратить время, чтоб расжевывать тривиальные вещи? Неужели так сложно загрузить пачку данных в таблицу, а потом повторить эксперимент уже с триггером и сравнить время? Увидеть что отличается в n раз и успокоиться. Alexus122) какие ограничения накладывает добавление к таблице триггера. например, здесь https://docs.oracle.com/cd/B28359_01/server.111/b28313/usingpe.htm указано: Parallel DML operations cannot be done on tables with triggers интересно, что в доке для 11.2 этого предложения нет... Restrictions on Parallel Direct Path Loads 11.2 Alexus12и прямо при загрузке сигналить о кривых данных... триггером!Откройте для себя oracle error logging clause и верхам передайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 19:51 |
|
||
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
постит труизмыА зачем нужны неверные данные? Даже быстро загруженные? Верные, неверные, зависит от мнения валидатора, которое может меняться Не стоит смешивать загрузку данных и проверку их качества, это разные процессы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 10:51 |
|
||
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, спасибо за наводку на DML error logging, но есть траблы в нашем случае с его применением: 1) есть Restrictions: The DML error logging functionality is not invoked when: •Deferred constraints are violated. •Direct-path INSERT or MERGE operations raise unique constraint or index violations. •UPDATE or MERGE operations raise a unique constraint or index violation. In addition, the tracking of errors in LONG, LOB and object types is not supported, although a table containing these columns can be the target of error logging. 2) проверки, заказанные бизнесом, легко могут выходить за рамки (простых) ограничений, которые ставятся на таблицу (нарушения уникальности и т.п.), причем постановка от разных заказчиков может быть разной (что один посчитает ошибкой - другому не ошибка) 3) запись в таблице все равно должна появляться, независимо от того, сбойная ли она (принцип "собрать все - затем проверять") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 12:30 |
|
||
|
Триггеры - ограничения и проблемы от них для DWH
|
|||
|---|---|---|---|
|
#18+
Alexus12•Deferred constraints are violated.Было бы интересно узнать "разумные" случаи применения Deferred. В подавляющем большинстве раз когда приходилось иметь с ними дело это были "костыли". Alexus12•Direct-path INSERT or MERGE operations raise unique constraint or index violations. •UPDATE or MERGE operations raise a unique constraint or index violation.Это важный момент. Тем не менее на 11.2 всё работает. Хотя были какие-то моменты. Alexus12In addition, the tracking of errors in LONG, LOB and object types is not supported, although a table containing these columns can be the target of error logging.В вашем случае это проблема? Интересно. :)) Alexus122) проверки, заказанные бизнесом, легко могут выходить за рамки (простых) ограничений, которые ставятся на таблицу (нарушения уникальности и т.п.)Есть еще check constrains для проверки в рамках строки. А если проверка выходит за рамки строки и это не что-то тривиальное типа уникальности, то лучше делать pre-/post-processing. Но явно не триггеры. Alexus12причем постановка от разных заказчиков может быть разной (что один посчитает ошибкой - другому не ошибка)При попытке техническими методами решать проблемы хренового анализа система со временем превращается в не сопровождаемый непонятный ад. Alexus123) запись в таблице все равно должна появляться, независимо от того, сбойная ли она (принцип "собрать все - затем проверять")Во-первых, "кривые" строки все уходят в таблицу с ошибками, а не просто игнорируются. Во-вторых, во многих организациях существует поэтапный подход. Сначала абсолютно все грузится в так называемую стейджинговую схему. Затем чистые данные переливаются в схему для отчетности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2016, 12:46 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1887075]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 468ms |

| 0 / 0 |
