|
|
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Интересует, доводилось ли кому-нибудь проектировать базу данных таким образом, чтобы в программе можно было выбрать дату и посмотреть полное состояние всей системы на это время без артефактов, естественно без возможностей изменения данных? Как будто был произведён откат, но без использования отката, т.е. на уровне данных. При чём в режиме "исторического просмотра" должны полноценно работать все функции системы (просмотр, фильтрация, сортировки и т.д.), кроме создания/изменения данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 15:42 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Это недешевая фича, как с точки зрения разработки, так и с точки зрения производительности (данных больше, ключи больше, и т.п.), целую систему с таким функционалом делают редко. Какие-то элементы - да, бывает. Rocket scienc'а в общем-то никакого нет, просто много геморроя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 15:51 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Жаль... А я думал, может есть готовая к употреблению методология. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 16:16 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
hVostt А я думал, может есть готовая к употреблению методология. Бакапы, логи. Вы платите только за лишнее дисковое пространство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 16:24 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
hVosttА я думал, может есть готовая к употреблению методология. Есть. "Flashback query" называется. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 16:29 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕсть. "Flashback query" называется. Не, ретроспективные запросы -- это возможности конкретной СУБД, хотя было бы круто, если можно было бы включить "ретроспективный режим" на всё подключение (например, указать временной штамп прям в строке соединения), то это бы решало задачу. Но в целом интересует именно решение на уровне схемы базы данных, в отрыве от конкретной СУБД (может с некоторыми оговорками, допустим, чтобы это работало как минимум в MS SQL, Oracle, Postgre SQL). Я себе это как вижу. В каждой таблице добавить поле типа HistoryId, которое ссылается на оригинальную запись. При любом изменении записи, создаётся копия со значением HistoryId, указывающую на оригинал. На уровне организации доступа к данным, записи с заполненным полем HistoryId игнорируются. В режиме ретроспективы, всегда берётся самая свежая запись, с датой изменения меньше указанного временного штампа. Не понятно только как толком восстанавливать связи, с учётом ретроспективы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 17:17 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
SERG1257Бакапы, логи. Вы платите только за лишнее дисковое пространство. Вопросы использования дискового пространства и производительности в данном случае второстепенны. Озвучена задача, чтобы в программе в любой момент времени можно было посмотреть состояние системы в указанный момент времени. Совсем старые записи можно архивировать (допустим, годовые). Больше интересует просмотр состояния в течение года/полугода. А бекапы, логи, -- это совсем другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 17:21 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
hVosttхотя было бы круто, если можно было бы включить "ретроспективный режим" на всё подключение (например, указать временной штамп прям в строке соединения), то это бы решало задачу. Oracle ConceptsPackaged applications, like report generation tools that only do queries, can run in Flashback Query mode by using logon triggers . Applications can run transparently without requiring changes to code . Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 17:28 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
hVostt, одним HistoryID Вы не отделаетесь - надо вводить периоды актуальности для каждой записи. И тогда да, при обновлении Вы закрываете период актуальности текущей записи и создаете новую с открытым периодом. Проблема еще в том, что не получится пользоваться внешними ключами "из коробки" - придется их заменять на ручные constraint'ы (и таким образом лишать оптимизатор дополнительной информации). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 17:29 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинПроблема еще в том, что не получится пользоваться внешними ключами "из коробки" - придется их заменять на ручные constraint'ы Ну почему же не получится... У одного из моих пользователей есть такая безумная система: в каждом первичном ключе есть поле версии, соответственно связи вторичных ключей идут id+версия. Куча вьюшек превращают update любой записи в insert записи с новой версией + копирование всех дочерних записей с новой версией. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 17:38 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин одним HistoryID Вы не отделаетесь - надо вводить периоды актуальности для каждой записи. И тогда да, при обновлении Вы закрываете период актуальности текущей записи и создаете новую с открытым периодом.Ну старые версии можно скидывать в дополнительные таблицы, оставляя основное приложение неизменным, а для ретроспективных запросов объединять историческую таблицу с базовой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 17:51 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
hVostt Озвучена задача, чтобы в программе в любой момент времени можно было посмотреть состояние системы в указанный момент времени. И решением этой задачи будет восстановление системы с бакапа на определенный момент времени - базовый фунционал любого админа. Никаких изменений в коде (стало быть никаких багов, ни для ретроспективных запросов, ни для боевой программы). Минусом будет только время на восстановление для большой базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 17:59 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
hVosttЗдравствуйте! Интересует, доводилось ли кому-нибудь проектировать базу данных таким образом, чтобы в программе можно было выбрать дату и посмотреть полное состояние всей системы на это время без артефактов, естественно без возможностей изменения данных? Как будто был произведён откат, но без использования отката, т.е. на уровне данных. При чём в режиме "исторического просмотра" должны полноценно работать все функции системы (просмотр, фильтрация, сортировки и т.д.), кроме создания/изменения данных. В какой области по-вашему это наиболее востребовано? У меня есть то, что вам нужно:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 19:12 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Вот оно это путешествие в прошлое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 19:30 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovhVosttхотя было бы круто, если можно было бы включить "ретроспективный режим" на всё подключение (например, указать временной штамп прям в строке соединения), то это бы решало задачу. Oracle ConceptsPackaged applications, like report generation tools that only do queries, can run in Flashback Query mode by using logon triggers . Applications can run transparently without requiring changes to code . О, круто! Жаль, что только для Oracle. В моём случае это наименее предпочтительная СУБД :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 19:41 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
> надо вводить периоды актуальности для каждой записи И периодами актуальности вы не отделаетесь, Кот. Четыре даты - это понятно, но задача хитрее, чем может показаться на первый взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 20:01 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
guest_20040621, А какой кейс не покроется периодами актуальности для каждой сущности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 20:20 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
Ревизия закрытого периода. А связанные ревизии - локальная задница. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 20:34 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
SERG1257И решением этой задачи будет восстановление системы с бакапа на определенный момент времени - базовый фунционал любого админа. Никаких изменений в коде (стало быть никаких багов, ни для ретроспективных запросов, ни для боевой программы). Минусом будет только время на восстановление для большой базы. Нужен способ спроектировать базу данных так, чтобы задача решалась без бекапа. У бекапа совершенно другие задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 20:40 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
prog123Вот оно это путешествие в прошлое Слабо выставить дату и увидеть совокупное состояние всей системы в этот момент? А не тыкать в каждую запись, выясняя её прошлое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 20:41 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
guest_20040621Ревизия закрытого периода. А связанные ревизии - локальная задница. :) Ревизии по опыту себя вообще не оправдывают. Неудобная бесполезная нашлёпка. Чем дата/время не ревизия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 20:43 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
> Ревизии по опыту себя вообще не оправдывают. Вы не готовы к решению этой задачи. Ревизии и представляют основной аналитический интерес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 20:46 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
hVosttprog123Вот оно это путешествие в прошлое Слабо выставить дату и увидеть совокупное состояние всей системы в этот момент? А не тыкать в каждую запись, выясняя её прошлое. Нарисуйте (можно от руки) достойный экранный интерфейс и если он придется по вкусу собравшимся, то я его реализую. Сама информационная система живет во времени, абсолютно все данные. Большое информационное хранилище с огромным количеством сущностей очень разных по структуре и составу, очень сложно представить как нечто единое целое в историческом контексте, тут надо наверное быть художником. Моя фантазия не идет дальше трёх вкладок: "Вчера" "Сегодня" "Завтра". Ряд информационных объектов по своей природе постоянны, всевозможные классификаторы, справочники и тому подобное, поэтому над ними время не шибко властно:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 20:50 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
guest_20040621Вы не готовы к решению этой задачи. Ревизии и представляют основной аналитический интерес. Могу ошибаться, или понятие "ревизия" мы понимаем по-разному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 21:17 |
|
||
|
Путешествия в прошлое
|
|||
|---|---|---|---|
|
#18+
prog123Нарисуйте (можно от руки) достойный экранный интерфейс и если он придется по вкусу собравшимся, то я его реализую. Как выглядит экранный интерфейс, не важно :) prog123Моя фантазия не идет дальше трёх вкладок: "Вчера" "Сегодня" "Завтра". Допустим, пункт меню "Рестропектива", по нажатию открывается форма ввода даты, указываешь дату, нажимаешь ОК, и программа "в прошлом", за исключением какой-нибудь надписи, обозначающей дату. Все функции доступны, кроме создания или изменения. Также, если программа логгирует просмотры, она должна перестать это делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 21:24 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38750940&tid=1540795]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 397ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...