powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Путешествия в прошлое
25 сообщений из 121, страница 1 из 5
Путешествия в прошлое
    #38750573
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

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

При чём в режиме "исторического просмотра" должны полноценно работать все функции системы (просмотр, фильтрация, сортировки и т.д.), кроме создания/изменения данных.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750589
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это недешевая фича, как с точки зрения разработки, так и с точки зрения производительности (данных больше, ключи больше, и т.п.), целую систему с таким функционалом делают редко. Какие-то элементы - да, бывает.
Rocket scienc'а в общем-то никакого нет, просто много геморроя.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750652
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,

Жаль... А я думал, может есть готовая к употреблению методология.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750669
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt А я думал, может есть готовая к употреблению методология. Бакапы, логи. Вы платите только за лишнее дисковое пространство.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750677
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttА я думал, может есть готовая к употреблению методология.
Есть. "Flashback query" называется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750745
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсть. "Flashback query" называется.

Не, ретроспективные запросы -- это возможности конкретной СУБД, хотя было бы круто, если можно было бы включить "ретроспективный режим" на всё подключение (например, указать временной штамп прям в строке соединения), то это бы решало задачу.

Но в целом интересует именно решение на уровне схемы базы данных, в отрыве от конкретной СУБД (может с некоторыми оговорками, допустим, чтобы это работало как минимум в MS SQL, Oracle, Postgre SQL).

Я себе это как вижу. В каждой таблице добавить поле типа HistoryId, которое ссылается на оригинальную запись. При любом изменении записи, создаётся копия со значением HistoryId, указывающую на оригинал. На уровне организации доступа к данным, записи с заполненным полем HistoryId игнорируются. В режиме ретроспективы, всегда берётся самая свежая запись, с датой изменения меньше указанного временного штампа. Не понятно только как толком восстанавливать связи, с учётом ретроспективы.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750752
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Бакапы, логи. Вы платите только за лишнее дисковое пространство.

Вопросы использования дискового пространства и производительности в данном случае второстепенны. Озвучена задача, чтобы в программе в любой момент времени можно было посмотреть состояние системы в указанный момент времени. Совсем старые записи можно архивировать (допустим, годовые). Больше интересует просмотр состояния в течение года/полугода.

А бекапы, логи, -- это совсем другое.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750759
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750761
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

одним HistoryID Вы не отделаетесь - надо вводить периоды актуальности для каждой записи. И тогда да, при обновлении Вы закрываете период актуальности текущей записи и создаете новую с открытым периодом.
Проблема еще в том, что не получится пользоваться внешними ключами "из коробки" - придется их заменять на ручные constraint'ы (и таким образом лишать оптимизатор дополнительной информации).
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750774
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинПроблема еще в том, что не получится пользоваться внешними ключами "из
коробки" - придется их заменять на ручные constraint'ы
Ну почему же не получится... У одного из моих пользователей есть такая безумная система: в
каждом первичном ключе есть поле версии, соответственно связи вторичных ключей идут
id+версия. Куча вьюшек превращают update любой записи в insert записи с новой версией +
копирование всех дочерних записей с новой версией.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750789
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин одним HistoryID Вы не отделаетесь - надо вводить периоды актуальности для каждой записи. И тогда да, при обновлении Вы закрываете период актуальности текущей записи и создаете новую с открытым периодом.Ну старые версии можно скидывать в дополнительные таблицы, оставляя основное приложение неизменным, а для ретроспективных запросов объединять историческую таблицу с базовой.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750796
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt Озвучена задача, чтобы в программе в любой момент времени можно было посмотреть состояние системы в указанный момент времени. И решением этой задачи будет восстановление системы с бакапа на определенный момент времени - базовый фунционал любого админа. Никаких изменений в коде (стало быть никаких багов, ни для ретроспективных запросов, ни для боевой программы).
Минусом будет только время на восстановление для большой базы.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750864
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttЗдравствуйте!

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

При чём в режиме "исторического просмотра" должны полноценно работать все функции системы (просмотр, фильтрация, сортировки и т.д.), кроме создания/изменения данных.

В какой области по-вашему это наиболее востребовано?
У меня есть то, что вам нужно:)
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750879
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот оно это путешествие в прошлое
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750893
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. В моём случае это наименее предпочтительная СУБД :(
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750903
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> надо вводить периоды актуальности для каждой записи

И периодами актуальности вы не отделаетесь, Кот. Четыре даты - это понятно, но задача хитрее, чем может показаться на первый взгляд.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750913
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

А какой кейс не покроется периодами актуальности для каждой сущности?
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750922
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ревизия закрытого периода. А связанные ревизии - локальная задница. :)
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750930
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257И решением этой задачи будет восстановление системы с бакапа на определенный момент времени - базовый фунционал любого админа. Никаких изменений в коде (стало быть никаких багов, ни для ретроспективных запросов, ни для боевой программы).
Минусом будет только время на восстановление для большой базы.

Нужен способ спроектировать базу данных так, чтобы задача решалась без бекапа. У бекапа совершенно другие задачи.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750934
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog123Вот оно это путешествие в прошлое

Слабо выставить дату и увидеть совокупное состояние всей системы в этот момент? А не тыкать в каждую запись, выясняя её прошлое.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750937
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Ревизия закрытого периода. А связанные ревизии - локальная задница. :)

Ревизии по опыту себя вообще не оправдывают. Неудобная бесполезная нашлёпка. Чем дата/время не ревизия?
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750940
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ревизии по опыту себя вообще не оправдывают.

Вы не готовы к решению этой задачи. Ревизии и представляют основной аналитический интерес.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750943
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttprog123Вот оно это путешествие в прошлое

Слабо выставить дату и увидеть совокупное состояние всей системы в этот момент? А не тыкать в каждую запись, выясняя её прошлое.

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

Моя фантазия не идет дальше трёх вкладок: "Вчера" "Сегодня" "Завтра".
Ряд информационных объектов по своей природе постоянны, всевозможные классификаторы, справочники и тому подобное, поэтому над ними время не шибко властно:)
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750960
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Вы не готовы к решению этой задачи. Ревизии и представляют основной аналитический интерес.

Могу ошибаться, или понятие "ревизия" мы понимаем по-разному.
...
Рейтинг: 0 / 0
Путешествия в прошлое
    #38750966
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog123Нарисуйте (можно от руки) достойный экранный интерфейс и если он придется по вкусу собравшимся, то я его реализую.

Как выглядит экранный интерфейс, не важно :)

prog123Моя фантазия не идет дальше трёх вкладок: "Вчера" "Сегодня" "Завтра".

Допустим, пункт меню "Рестропектива", по нажатию открывается форма ввода даты, указываешь дату, нажимаешь ОК, и программа "в прошлом", за исключением какой-нибудь надписи, обозначающей дату. Все функции доступны, кроме создания или изменения. Также, если программа логгирует просмотры, она должна перестать это делать.
...
Рейтинг: 0 / 0
25 сообщений из 121, страница 1 из 5
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Путешествия в прошлое
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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