powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Касательно архитектуры БД
37 сообщений из 37, показаны все 2 страниц
Касательно архитектуры БД
    #39486206
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоит задача, спроектировать схему таблиц для хранилища данных.
Требуется отслеживать все изменения в данных, которые будут поступать в базу раз в сутки.
Задача пользователей - просматривать потом эти данные по состоянию на определенную дату.

Вопрос, в каком виде оптимальнее хранить историю? Есть два варианта, как я понимаю

1) Создать одну таблицу с данными (таблица фактов) и делать в нее срезы каждый день. Будет происходить накопление данных, но это может занимать много места.

2) Создать таблицу с данными и к ней таблицу с историей изменения. Минус - более трудоемкий доступ.

Каким образом предпочтительнее хранить историю добавления данных? Может быть, есть еще варианты о которых я не знаю?
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486214
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486244
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По первому варианту - создать таблицу с фактами.
В неё данные будет грузить ETL.
Если доступ (по времени) к ней будет неудовлетворительным, то делается витрина с последними значениями показателей (ну или более крупными агрегатами по времени, например на каждый конец месяца).
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486247
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Некоторую сложность добавляет то, что пользователи хотят возможность указывать причину изменения/добавления записи наряду с датой изменения.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486257
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в чем сложность.
Делаешь возможность пользователю указывать причины операции из справочника и проносишь в свою таблицу фактов причины.
Потом можно делать отдельную витрину с агрегатами по причинам.
Прелесть таблицы фактов, в том что от неё можно делать много различных витрин. Чем полнее и детальнее таблица фактов, тем больше разнородных витрин сможешь сделать.

Если есть время, то можешь посмотреть мануал по WH, там даже картинки нарисовали
http://docs.oracle.com/database/122/DWHSG/introduction-data-warehouse-concepts.htm#DWHSG-GUID-452FBA23-6976-4590-AA41-1369647AD14D
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486267
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается что комментарий по изменению нужно будет добавлять не полностью к записи, а к каждому столбцу. Получается в конце дня приходит изменение по 3 колонкам, к каждой - своя причина. А с остальными, неизменными, что делать? Просто оставлять в записи неизменными? не избыточно ли получается...

PS/ время есть, спасибо - изучу-)
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486370
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_MuscleПолучается что комментарий по изменению нужно будет добавлять не полностью к записи, а к каждому столбцу. Получается в конце дня приходит изменение по 3 колонкам, к каждой - своя причина. А с остальными, неизменными, что делать? Просто оставлять в записи неизменными? не избыточно ли получается...

PS/ время есть, спасибо - изучу-)у вас же есть вот это требование "Задача пользователей - просматривать потом эти данные по состоянию на определенную дату.".
В этих условиях это самый правильный пусть - сохранять всю версию сборки.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486480
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_MuscleСтоит задача, спроектировать схему таблиц для хранилища данных.
Требуется отслеживать все изменения в данных, которые будут поступать в базу раз в сутки.
Задача пользователей - просматривать потом эти данные по состоянию на определенную дату.

Вопрос, в каком виде оптимальнее хранить историю? Есть два варианта, как я понимаю

1) Создать одну таблицу с данными (таблица фактов) и делать в нее срезы каждый день. Будет происходить накопление данных, но это может занимать много места.

2) Создать таблицу с данными и к ней таблицу с историей изменения. Минус - более трудоемкий доступ.

Каким образом предпочтительнее хранить историю добавления данных? Может быть, есть еще варианты о которых я не знаю?

для состояния "на определенную дату" у Oracle есть штука Flashback Data Archive https://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm#BJFIEEII

начиная с 11.2 он стал вполне юзабелен - сняли досадные ограничения на DDL.
Задачать период хранения можно в т.ч.

А для "что на что и кем изменилось" - это банальный триггер AFTER INSERT OR UPDATE OR DELETE, который пишет во вторую таблицу данные аудита

или использование фич того-же FDA

как это все делать - показано тут:

http://www.oracle.com/technetwork/issue-archive/2016/16-mar/o26performance-2925662.html
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486483
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486497
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatch,
"это банальный триггер" - банальнее и дерьмовее совета дать не мог? тригеры зло.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486543
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintdbpatch,
"это банальный триггер" - банальнее и дерьмовее совета дать не мог? тригеры зло.

ути пути, ты английские буквы со ссылки выше совсем не осилил? бедняга
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39486595
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatch,
тебя когда просят вырыть яму метр на метр ты проектную документацию запрашиваеш, команду собираеш, потом план работ пишеш экскаватор заказываешь и приступаеш?)
мой коментарий касается сферических коней в вакууме как и твой совет. ты у автора даже не спросил какая у него нагрузка, как грузятся данные построчно или массово а может через апи или еще какими методами.... но совет конечно надо дать. с кучей умных ссылок и кучей ненужной инфы, тебе место в пт.. откуда ты и вылез.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487086
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchandrey_anonymous http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/ilm/temporal/temporal.html
близко, но мимо
Серьезно?!
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487227
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintdbpatch,
тебя когда просят вырыть яму метр на метр ты проектную документацию запрашиваеш, команду собираеш, потом план работ пишеш экскаватор заказываешь и приступаеш?)
мой коментарий касается сферических коней в вакууме как и твой совет. ты у автора даже не спросил какая у него нагрузка, как грузятся данные построчно или массово а может через апи или еще какими методами.... но совет конечно надо дать. с кучей умных ссылок и кучей ненужной инфы, тебе место в пт.. откуда ты и вылез.

ок, буквы со статьи ты так и не осилил, ну молодец, чо
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487231
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousdbpatchпропущено...

близко, но мимо
Серьезно?!

да, там рассказано уже про сахарносинтаксисные расширения FDA в 12с (насколько я понял из чтения по диагонали, дальше не вникал, до 12с в продакшине мне еще пару лет), но не про саму FDA.

мимо - в смысле странно учить школьника решать системы диффуров, не научив брать производные.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487254
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr_MuscleСтоит задача, спроектировать схему таблиц для хранилища данных.
Требуется отслеживать все изменения в данных, которые будут поступать в базу раз в сутки.


Раз в сутки , это прошлый век.
Уже лет 10 как бизнес уходит в реалтайм.
А тот кто не уходит, непоспевает за трендами, и потенциальный банкрот.
Особенно критично, если это логистика продаж.

Как то один топ сети супермаркетов на каком сешине рассказывал ,
если реалтайм логистика прощелкала сроки годности и допустила затоварку
скоропортящехся продуктов,
им показательно привозят в офис этих товаров на сумму премии.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487261
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А запустые полки в магазинах, когда положенной номенклатуры нет в магазине
их просто премии лишают.
Чуваки в реалтайме видят ,
как и какие товары уходят с полок , по факту печати чеков на кассах.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487271
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchда, там рассказано уже про сахарносинтаксисные расширения FDA
Гонишь.
Там про сахарносинтаксисные расширения обычного SQL над классической "версионной" таблицей, FDA нафиг не нужен для задачи.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487322
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор,
1) обязательно прочитай рекомендованную ссылку, особенно Facts and Dimensions
http://docs.oracle.com/database/122/DWHSG/data-warehouse-logical-design.htm#DWHSG9234
дальше дели свои входящие данные на Facts \ Dimensions, факты складируй по срезам, измерения делай медленно меняющиеся - https://en.wikipedia.org/wiki/Slowly_changing_dimension типа 2,
джойны факт-измерение будут выглядеть так:

fact.id_dimension = dim.id_dimension
and fact.ddate between dim.start_date and dim.end_date

2) некоторые редко меняющиеся или долго длящиеся факты можно хранить в виде scd type2 - это может сильно экономить место
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487430
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
д0kХMr_MuscleСтоит задача, спроектировать схему таблиц для хранилища данных.
Требуется отслеживать все изменения в данных, которые будут поступать в базу раз в сутки.


Раз в сутки , это прошлый век.
Уже лет 10 как бизнес уходит в реалтайм.
А тот кто не уходит, непоспевает за трендами, и потенциальный банкрот.
Особенно критично, если это логистика продаж.

Как то один топ сети супермаркетов на каком сешине рассказывал ,
если реалтайм логистика прощелкала сроки годности и допустила затоварку
скоропортящехся продуктов,
им показательно привозят в офис этих товаров на сумму премии.

Раз в сутки - это достаточная периодичность для данного случая. Данные будут использоваться для составления отчетности в госорганы.

Alexus12Автор,
1) обязательно прочитай рекомендованную ссылку, особенно Facts and Dimensions
http://docs.oracle.com/database/122/DWHSG/data-warehouse-logical-design.htm#DWHSG9234
дальше дели свои входящие данные на Facts \ Dimensions, факты складируй по срезам, измерения делай медленно меняющиеся - https://en.wikipedia.org/wiki/Slowly_changing_dimension типа 2,
джойны факт-измерение будут выглядеть так:

fact.id_dimension = dim.id_dimension
and fact.ddate between dim.start_date and dim.end_date

2) некоторые редко меняющиеся или долго длящиеся факты можно хранить в виде scd type2 - это может сильно экономить место

Про деление на факты и измерения, все понятно. Мне с аудитом изменений неясно, как бы так хранить аудит изменения по каждой ячейке таблицы фактов.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487497
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousdbpatchда, там рассказано уже про сахарносинтаксисные расширения FDA
Гонишь.
Там про сахарносинтаксисные расширения обычного SQL над классической "версионной" таблицей, FDA нафиг не нужен для задачи.

странно, а в тексте статьи упоминался пакет из FDA. впрочем, я же говорил - сильно это не копал (недосуг ставить 12.2), ибо приведенный синтаксис мало возбудил в контексте типовой (кстати) задачи ТСа

но что-то мне подсказывает, что сахар этот реализован именно через FDA - на ровном месте они врядли бы сделали еще одну реализацию на тему версионированной базы данных (старую еле еле отладили за несколько лет)
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487510
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchно что-то мне подсказывает, что сахар этот реализован именно через FDA - на ровном месте они врядли бы сделали еще одну реализацию на тему версионированной базы данных (старую еле еле отладили за несколько лет)
Да не, это чисто синтаксический сахарозаменитель - просто лепит в запросы предикаты по начальной и конечной датам.
Вести историю DML не умеет - это, как обычно, задача ETL или иного приложения.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39487515
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_MuscleМне с аудитом изменений неясно, как бы так хранить аудит изменения по каждой ячейке таблицы фактов.
Так и хранить.
https://en.wikipedia.org/wiki/Slowly_changing_dimension
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39488248
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

Получается, что мне больше подходит 6 способ

Если есть таблица
----------------------------------------------------------------------------
Supplier_key | Supplier_Code | Supplier_Name | Supplier_State
----------------------------------------------------------------------------
123 | ABC | Acme Supply Co | CA
124 | ABC | A & J Supply Co | IL


То к ней таблица истории с такими колонками:

Supplier_key
Supplier_Code
Supplier_Name
Sup_Name_Start_Date
Sup_Name_End_Date
Sup_Name_Change_Cause
Sup_Name_Change_User
Supplier_State
Supplier_State_Start_Date
Supplier_State_End_Date
Supplier_State_Change_Cause
Supplier_State_Change_User


Не херня ли получается, товарищи?
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39488264
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_MuscleНе херня ли получается, товарищи?Воистину.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39490471
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока что думаю остановиться на такой структуре. Чтобы была возможность получить доступ к текущим либо историческим значениям параметров продавца, покупателя. А так же в случае необходимости узнать кто и зачем их менял, пусть не поколоночно.... Снизим уровень детализации. Авторизация на уровне приложения, поэтому будет ссылка на таблицу с пользователями.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Deals (таблица фактов)
------------------------------------------------------
ID  |  SELLER_ID  | BUYER_ID  | {различные параметры}
------------------------------------------------------
  1 |     1       |     5     |
  2 |     2       |     6     |


Organiztions (измерение) 
---------------------------------------------------------------------------------------------------------------
ID|ORG_CODE(суррогатный)|SHORTNAME|   FULLNAME  | CHANGE_DATE |CHANGE_USER| CHANGE_NOTE
---------------------------------------------------------------------------------------------------------------
 1|        401          |    AB   | AB company  | 10.07.2017  |      2    |  
 2|        401          |    ABС  | AB company  | 12.07.2017  |      2    | На основании письма (...)
 5|        402          |    CD   | CD Company  | 15.07.2017  |      2    |  
 6|        402          |    CD   | C&D company | 17.07.2017  |      2    | На основании служебной записки(...)



Аналогично - другие таблицы, на которые может ссылаться Deals. Для вывода всего этого делать витрины данных по запросу. Так не очень хернёй выглядит?
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39490616
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_Muscleхернёй выглядит?
Выглядит.
Со ссылками - точно оно.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39490635
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousMr_Muscleхернёй выглядит?
Выглядит.
Со ссылками - точно оно.

А почему?
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39490642
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_MuscleА почему?

Исторические записи id={5,6} куда ссылаются? А id={1,2}?
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39490647
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousMr_MuscleА почему?

Исторические записи id={5,6} куда ссылаются? А id={1,2}?

Ну, на SELLER_ID {1,2} и соответственно BUYER_ID {5,6}
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39490650
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_MuscleНу, на SELLER_ID {1,2} и соответственно BUYER_ID {5,6}
Пора уже что-нибудь почитать из теории реляционных БД.
Хотя бы основы.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39490786
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousMr_MuscleНу, на SELLER_ID {1,2} и соответственно BUYER_ID {5,6}
Пора уже что-нибудь почитать из теории реляционных БД.
Хотя бы основы.

Читаю-читаю много, пока видимо не помогает! пожалуйста, объясните что здесь не так.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39490837
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_MuscleЧитаю-читаю много, пока видимо не помогает! пожалуйста, объясните что здесь не так.
Начнете запросы к этой... гм... структуре писать - поймете.
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39496938
andrey_anonymousMr_MuscleЧитаю-читаю много, пока видимо не помогает! пожалуйста, объясните что здесь не так.
Начнете запросы к этой... гм... структуре писать - поймете.
А почему одно на одно и то же измерение не могут сслылаться несколько разных столбцов фактов? Как это влияет на запросы?
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39497468
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не внял что-то...andrey_anonymousпропущено...

Начнете запросы к этой... гм... структуре писать - поймете.
А почему одно на одно и то же измерение не могут сслылаться несколько разных столбцов фактов? Как это влияет на запросы?

Хороший вопрос!!!
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39497950
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr_MuscleСтоит задача, спроектировать схему таблиц для хранилища данных.
тогда лучше было задать вопрос в ветке про DWH
стандартное решение - измерение времени
и класть данные в таблицу фактов на соответствующие уровни
...
Рейтинг: 0 / 0
Касательно архитектуры БД
    #39498088
Mr_Muscle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sintetik,

Простите, не совсем понятно.. можно чуть чуть подробнее?
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Касательно архитектуры БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]