Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какая СУБД может делать выборочную отмену изменений? / 25 сообщений из 25, страница 1 из 1
28.09.2006, 20:27
    #34020398
Воффка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
У меня вот такая задачка: например, в базу данных несколько пользователей вводили ошибочные изменения, удаляли и изменяли важные записи. Одновременно с ними другие поользователи вносили в бд правильные изменения. Возможно ли в какой-нибудь СУБД выборочно удалить изменения, внесенные этими "плохими" юзерами, и оставить изменения остальных пользователей? И в какой это сделать удобней всего?
Сразу напрашивается вариант составить дополнительную таблицу, в которую будут вноситься все изменения, но это слишком расточительно к месту и к производительности запросов на изменение/удаление... Помогите мне пожалуйста))
...
Рейтинг: 0 / 0
28.09.2006, 21:33
    #34020467
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Все СУБД такие ... но при условии что вместо того, чтобы придумывать решения, проектировщик для начала задумывается над задачей. Вам шашечки или ехать ? Вам обязательно такая СУБД нужна, или же легче задуматься о других способах решения самой задачи, которых множество и которые нужно применять комплексно - это система разграничения прав пользователей на изменение информации, это проверка правильного ввода информации, в критических случаях это ведение логирования, версионности изменений информации и прочее прочее прочее. Определитесь с задачей и сами найдете решение на абсолютно любой СУБД.
...
Рейтинг: 0 / 0
28.09.2006, 22:47
    #34020514
Воффка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Ладно, а если сам админ в процессе работы вводил множество данных, из которых половина оказалась неправильными. И как их отменить? И не обязательно ошибочные изменения будут вводиться со злыми целями, так что права доступа тут не причем
...
Рейтинг: 0 / 0
28.09.2006, 22:49
    #34020516
Воффка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Вся структура системы у меня продумана, вот только велика вероятность того что то, что изменения были ошибочны, может всплыть примерно через месяц, и то в этом случае делвть? неужели кроме логирования ничего нет? вроди вполне очевидная и распространенная проблема..
...
Рейтинг: 0 / 0
28.09.2006, 23:00
    #34020530
Anton Demidov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
В Оракле есть Log Miner - смотрит архивные логи и показывает SQL исполненный и SQL для отмены этих действий. Можно фильтровать по пользователю естественно.
К Log Miner-у есть API, так что написать свою оболочку к нему не составит труда.
Код: plaintext
1.
2.
--
Антон
Per rectum ad astrum
...
Рейтинг: 0 / 0
28.09.2006, 23:21
    #34020543
Какая СУБД может делать выборочную отмену изменений?
ВоффкаЛадно, а если сам админ в процессе работы вводил множество данных, из которых половина оказалась неправильными. И как их отменить? И не обязательно ошибочные изменения будут вводиться со злыми целями, так что права доступа тут не причем

Заменить безответсвенный персонал. СУБД ни при чём
...
Рейтинг: 0 / 0
28.09.2006, 23:34
    #34020550
error76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
авторЛадно, а если сам админ в процессе работы вводил множество данных, из которых половина оказалась неправильными. И как их отменить? И не обязательно ошибочные изменения будут вводиться со злыми целями, так что права доступа тут не причем
Ок. Сам админ, вводит (правит, удаляет) 100 записей. Половина из ста - ошибочные. Внимание вопрос! Как системе выбрать из массива 100 записей, те самые 50? какой критерий ошибочности? согласно чему может быть сделана такая выборка? кто определил, что это ошибочные подвижки в бд? Имхо, задача в такой постановке, не имеет решения. Даже если есть полный лог изменений, то это не спасает, ибо неправильными могуть быть 3-я, 10-я,37-я...N-я запись. Так, что ручками-ручками.
...
Рейтинг: 0 / 0
28.09.2006, 23:53
    #34020561
Anton Demidov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
error76Внимание вопрос! Как системе выбрать из массива 100 записей, те самые 50? какой критерий ошибочности? согласно чему может быть сделана такая выборка? кто определил, что это ошибочные подвижки в бд? Имхо, задача в такой постановке, не имеет решения. Все поняли? Раз сам error76 не знает, какая запись является ошибочной, то никто более по определению этого знать не может.
"Туши свет, сливай масло." (с)
...
Рейтинг: 0 / 0
29.09.2006, 00:15
    #34020573
Зайцев Фёдор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Anton Demidovто никто более по определению этого знать не может.Мудрая мать-олениха знает. Возможно...
...
Рейтинг: 0 / 0
29.09.2006, 08:45
    #34020799
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Зайцев Фёдор
Мудрая мать-олениха знает. Возможно...

Значит она и должна вводить данные. А будет вводить неправильные (про
которые знает что они неправильные) - расстрелять за саботаж.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.09.2006, 10:47
    #34021210
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
ВоффкаВся структура системы у меня продумана, вот только велика вероятность того что то, что изменения были ошибочны, может всплыть примерно через месяц, и то в этом случае делвть? неужели кроме логирования ничего нет? вроди вполне очевидная и распространенная проблема..

Возможен такой вариант. К критичным таблицам создаешь дубли - исторические таблицы и триггера на UPDATE / DELETE к основным. При любой операции UPDATE / DELETE предыдущая версия данных переносится в историческую таблицу. Заодно фиксируется, когда и кто делал. При обнаружении ошибки облегчается возврат старых данных, ну и разборки также.
...
Рейтинг: 0 / 0
29.09.2006, 12:29
    #34021717
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
ВоффкаВся структура системы у меня продумана, вот только велика вероятность того что то, что изменения были ошибочны, может всплыть примерно через месяц, и то в этом случае делвть? неужели кроме логирования ничего нет? вроди вполне очевидная и распространенная проблема..А кто определит, что данные - ошибочные? На основании каких критериев? Какие действия нужно предпринять? Каков максимальный срок обнаружения ошибки?
Задача не формализована, посему и проблема очень не очевидная, и совсем не распространенная (при правильном проектировании системы).

Перечитайте пост ASCRUS-а выше.

Пример:
на склад привезли 20 деталей. их внесли в БД.
сейлзы увидели приход 20 деталей и продали 15 шт.
через месяц после продажи оказалось что все 20 деталей внесены ошибочно.

Внимение вопрос: что и каким образом должна делать система?
...
Рейтинг: 0 / 0
29.09.2006, 12:31
    #34021739
andsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Для MS SQL Server:

Запускается Log Explorer, ищется транзакция которая внесла неправильные данные. Кликаем правой кнопкой мыши, Undo transaction. Если всю транзакцию отказтывать не надо - последовательно идем по части транзакций и говорим undo operation.

Работает такой подход только если стоит Full recovery model и транзакция еще не удалена из лога транзакций, либо есть бекапы лога транзакций с неправильной транзакцией.
...
Рейтинг: 0 / 0
29.09.2006, 18:31
    #34023364
Воффка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Ну ошибочность операции определяет сам оператор, а сделать так чтобы все данные всегда вводились безошибочно невозможно - здесь и усталость, и другие человеческте факторы. В конце концов, информация может вводиться по какому-либо приказу начальства, а потом этот приказ отменили и надо вернуть все как было. Да и мало ли какие ситуации могут быть. Вот хранение запроса на изменение и запроса на отмену изменений это самое оно =)
...
Рейтинг: 0 / 0
29.09.2006, 18:45
    #34023402
Воффка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
VoDA[quot Воффка]проблема очень не очевидная, и совсем не распространенная (при правильном проектировании системы)
Интересно, как можно избежать возникновения необходимости отмены изменений или удаления в любых случаях. Неужели с базой данных должны всегда работать супервнимательные операторы, которые никогда не делают ошибок? Это ведь смотря что за база данных. Согласен, такая необходимость не появляется каждый день, но иногда бывает, и тогда оказывается очень нехорошо если нет возможности отменить изменения.
Внимание пример:
Вводили мы данные, устали и по ошибке в нескольких местах втюкнули не то что надо. А через неделю во время работы натыкаешься на эту ошибку. А старые данные, которые были изменены, уже никак и не узнаешь.. А был бы лог можно было бы найти в нем тот самый запрос на изменение и отменить его
VoDAПример:
на склад привезли 20 деталей. их внесли в БД.
сейлзы увидели приход 20 деталей и продали 15 шт.
через месяц после продажи оказалось что все 20 деталей внесены ошибочно.

Внимение вопрос: что и каким образом должна делать система?
Если вы читали внимательно мой пост, то там имеется в виду отмена ИЗМЕНЕНИЙ записей а не их ВВОДА
...
Рейтинг: 0 / 0
29.09.2006, 18:49
    #34023405
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
ВоффкаВся структура системы у меня продумана, вот только велика вероятность того что то, что изменения были ошибочны, может всплыть примерно через месяц, и то в этом случае делвть? неужели кроме логирования ничего нет? вроди вполне очевидная и распространенная проблема..
Дык вот значит не всё еще продумано если возникают вопросы как делать исправления. СУБД же не может определить какие данные ошибочные, и программист не может. Значит ввод ошибочных данных - это штатная ситуация, которую надо предусмотреть(с возможностью исправления конечно)
...
Рейтинг: 0 / 0
29.09.2006, 19:07
    #34023430
!!!
!!!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
1. Логировать все изменения таблиц, в которые возможен "ошибочное" изменение или удаление данных(удаление - читай, измененение простановкой признака "неактуальна", физических удалений быть не должно и это следует реализовать на уровне БД).
2. Определить, что некоторая запись была изменена или удалена ошибочно.
3. Восстановить по логам актуальное состояние записи до ошибочного изменения
4. Восстановить состояние записей прочих таблиц, на которые повлияло ошибочное изменение.
5. Наслаждаться результатом

Наиболее сложный здесь п.4

Постулат: В грамотно спроектированной и реализованной ситсеме подобные ситуации не возникают.
Определение: Грамотно спроектированная система не удовлетворяет хотелки юзеров, а обеспечивает руководство достоверной информацией
...
Рейтинг: 0 / 0
29.09.2006, 21:11
    #34023539
Воффка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
SergSuper ВоффкаВся структура системы у меня продумана, вот только велика вероятность того что то, что изменения были ошибочны, может всплыть примерно через месяц, и то в этом случае делвть? неужели кроме логирования ничего нет? вроди вполне очевидная и распространенная проблема..
Дык вот значит не всё еще продумано если возникают вопросы как делать исправления. СУБД же не может определить какие данные ошибочные, и программист не может. Значит ввод ошибочных данных - это штатная ситуация, которую надо предусмотреть(с возможностью исправления конечно)
Не надо пожалуйста придираться к словам! Я и спрашиваю - как и где удобней сделать возможными эти исправления. А раз это не вопрос СУБД, значит и структура моя никаких нареканий не заслуживает
...
Рейтинг: 0 / 0
29.09.2006, 21:16
    #34023543
Воффка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
!!!1. Логировать все изменения таблиц, в которые возможен "ошибочное" изменение или удаление данных(удаление - читай, измененение простановкой признака "неактуальна", физических удалений быть не должно и это следует реализовать на уровне БД).
2. Определить, что некоторая запись была изменена или удалена ошибочно.
3. Восстановить по логам актуальное состояние записи до ошибочного изменения
4. Восстановить состояние записей прочих таблиц, на которые повлияло ошибочное изменение.
5. Наслаждаться результатом

С логом все довольно топорно.. Я вот спрашиваю, в какой СУБД это и сделать проще. А то это логирование, восстановление, это ж стока ресурсов жрет, даже больше чем сама операция на изменение
...
Рейтинг: 0 / 0
30.09.2006, 09:49
    #34023794
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
ВоффкаС логом все довольно топорно.. Я вот спрашиваю, в какой СУБД это и сделать проще. А то это логирование, восстановление, это ж стока ресурсов жрет, даже больше чем сама операция на изменение
ТЗ своей задачи озвучьте пожалуйста, какая конкретно задача, для кого и в рамках каких условий требуется бороться с юзерами, которые сознательно портят информацию и не неся никакой ответственности хотят, чтобы программа автоматически откатывала БД с поддержкой ссылочной целостностью на правильное состояние. Абстрактное обсуждение непонятно чего вряд ли Вам тут поможет
...
Рейтинг: 0 / 0
30.09.2006, 10:10
    #34023799
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Не знаю на сколько подойдет,
В Oracle можно выполнять запросы на момент в прошлом.
...
Рейтинг: 0 / 0
30.09.2006, 15:48
    #34024040
Воффка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
ASCRUSТЗ своей задачи озвучьте пожалуйста, какая конкретно задача, для кого и в рамках каких условий требуется бороться с юзерами, которые сознательно портят информацию и не неся никакой ответственности хотят, чтобы программа автоматически откатывала БД с поддержкой ссылочной целостностью на правильное состояние. Абстрактное обсуждение непонятно чего вряд ли Вам тут поможет
Мне хотелось бы получить впринципе ответ на сабжевый вопрос... Чтобы можно это было использовать в любой базе данных, как где надо бороться с юзерами (например с информацией свободного ввода, общественная такая БД) так и в бд где некоторые поля записей часто изменяются, например номер реестра цен на этот товар, где по невнимательности персоналом может быть допущена ошибка, или же было признано неправильным ранее считавшееся верным решение и надо некоторые данные вернуть к первоначальному виду.
Тоесть есть ли альтернатива полному логу изменений?
...
Рейтинг: 0 / 0
02.10.2006, 06:24
    #34024915
sparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Воффка У меня вот такая задачка: например, в базу данных несколько пользователей вводили ошибочные изменения, удаляли и изменяли важные записи.
Ошибка в подходе. Всегда можно так спроектировать систему, что "важные записи" - никогда не исправляются и не удаляются, только вставляются и выбираются. Для этого, упрощенно говоря, в первичный ключ "важных" таблиц добавляется "дата начала действия" и все запросы учитывают эту дату (как правило, используется максимальная). Для эмуляции удаления необходимо поле "состояние", которое можно трактовать шире, чем признак удаления. Это конечно усложняет - удорожает систему и уменьшает быстродействие, но взамен имеется полный лог модификаций "важных" данных и появляется возможность реализовать операции UNDO - REDO о которых, по моему скромному мнению, толкует автор.

ps. а СУБД при этом может быть любая
...
Рейтинг: 0 / 0
02.10.2006, 06:37
    #34024920
FatalQ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
ВоффкаМне хотелось бы получить впринципе ответ на сабжевый вопрос... Чтобы можно это было использовать в любой базе данных
Это реализуется в виде надстроек над СУБД - Wiki-движки, Системы Контроля Версий. Там сохраняются все изменения.
...
Рейтинг: 0 / 0
20.10.2006, 02:47
    #34068274
Friendus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая СУБД может делать выборочную отмену изменений?
Используй понятие транзакций.
Можно спроектировать БД так, чтобы все изменения в ней отражались в таблицах транзакций.
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какая СУБД может делать выборочную отмену изменений? / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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