Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отслеживание изменений в базе [D6, Firebird 2.0]


Страницы:   1 2

Sirus ©   (2007-11-03 08:31:00) 

Привет Мастера!
Есть вопрос: Как можно реализовать отслеживание изменений в базе данных? Отслеживаться должны изменение, удаление и вставка записи в базу данных. При этом нужно еще хранить код пользователя проделавшего эти изменения.

Есть какие-нить соображения или наработки, поделитесь опытом.


Anatoly Podgoretsky   (2007-11-06 19:25:00) [21]

> Desdechado  (06.11.2007 17:59:14)  [14]

Не знаю про Firebird, но на MSSQL нет проблем, и не тольно в другой БД, но и на другой сервер, на другой машине.


Anatoly Podgoretsky   (2007-11-06 19:23:00) [22]

> stud  (06.11.2007 15:52:10)  [10]

Боятся :-)


Anatoly Podgoretsky   (2007-11-06 19:22:00) [23]

> PEAKTOP  (06.11.2007 14:51:07)  [7]

Для информации, у меня запись на диск происходит весьма редко, раз в две минуты, а сервер постоянно пашет.


Anatoly Podgoretsky   (2007-11-06 19:21:00) [24]

> Sergey13  (06.11.2007 14:38:06)  [6]

> А в чем по твоему заключается работа пользователей в БД? По моему как раз в воде, редактировании и удалении записей.

В типовой, рядовой базе на это уходит менее одного процента, основные затраты идут на запросы, в которых ничего подобного не делается, есть конечно базы, к которым почти не делается запросов, а идут в основном добавления, но такие базы не типовые.


Anatoly Podgoretsky   (2007-11-06 19:19:00) [25]

> stud  (06.11.2007 14:27:05)  [5]

Объем равен = количество изменений одной записи + дополнительная информация по записи.
Десять раз отредактируешь одну запись получишь 10 копий со служебной информацией, а без служебной информации лог мало чего стоит.


Desdechado   (2007-11-06 17:59:00) [26]

> можно хранить это г**но вообще в отдельной БД
В EXTERNAL TABLE - да, в отдельной БД - на уровне триггеров никак.


PEAKTOP   (2007-11-06 16:14:00) [27]

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

Правильной дорогой идете, товарищь !

А еще можно хранить это г**но вообще в отдельной БД. Благо, ЖарПтица не накладывает ограничения на подключения.


Sergey13   (2007-11-06 16:04:00) [28]

> [10] stud ©   (06.11.07 15:52)
> редактирование, удаление это уже побочный эффект связанный
> с некачественной "основной" работой.

Странно ты рассуждаешь. Если 1 юзер ввел новую запись и заполнил в ней 3 (из допустим 20) поля. Юзер 2 ввел свои данные - заполнил (отредактировал) еще 5 полей. Юзер 3 ... и т.д.
Тебя может удивит но иногда это все гуляет по кругу.

Я не говорю что логирование всегда плохо и что это вообще плохо. Я говорю, что это накладно, и посему делать это надо ОПРАВДАНО.


clickmaker   (2007-11-06 15:55:00) [29]


> правило количество исправлений и удалений после разбора
> сокращается, иногда очень значительно

по закону сохранения энергии, оно увеличивается в других конторах, куда ушли уволенные после разбора сотрудники )


stud   (2007-11-06 15:52:00) [30]

Sergey13 ©   (06.11.07 14:38) [6]
А в чем по твоему заключается работа пользователей в БД? По моему как раз в воде, редактировании и удалении записей.


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

Desdechado ©   (06.11.07 15:12) [9]
Такие данные единственно могут понадобиться для "разбора полетов", если кто-то что-то испортил и не признается.


и кстати как правило количество исправлений и удалений после разбора сокращается, иногда очень значительно)))


Desdechado   (2007-11-06 15:12:00) [31]

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


Sergey13   (2007-11-06 15:06:00) [32]

> [7] PEAKTOP ©   (06.11.07 14:51)

Тормоза не гарантированы и на "бюджетном" железе. Просто надо понимать, что запись "каждого чиха" требует ресурсов, а они из воздуха не берутся и святым духом не питаются.

Кроме того (опять же из опыта) надо сначала найти человека, который этими данными будет реальнопользоваться. Делать это только ради "чтоб було" смысла никакого.


PEAKTOP   (2007-11-06 14:51:00) [33]

>Sergey13 ©   (06.11.07 09:57) [3]
> Соответственно и производительность будет ... ну ты понял.


А ежели мы на железо денег не пожалеем, то можно и каждый чих в логи писать.

Тестировалось на Intel Core2duo / 4096DDR2 / RAID10 на SATA 160ГБ.

>Sirus   (03.11.07 08:31) [0]

А есть ли у твоих заказчиков таке железо ?


Sergey13   (2007-11-06 14:38:00) [34]

> [5] stud ©   (06.11.07 14:27)
> ну это если пользователи только и занимаются что исправлением
> только что введенных данных.

А в чем по твоему заключается работа пользователей в БД? По моему как раз в воде, редактировании и удалении записей.

> при грамотной работе пользователей))) объем не такой уж
> и большой
Это типа поставить им ZUMA и отдыхать? 8-)


stud   (2007-11-06 14:27:00) [35]

Sergey13 ©   (06.11.07 9:57) [3]
Ибо объем лога будет на порядки выше объема данных и расти будет очень быстро.


ну это если пользователи только и занимаются что исправлением только что введенных данных. при грамотной работе пользователей))) объем не такой уж и большой


clickmaker   (2007-11-06 12:31:00) [36]


> Sirus   (03.11.07 08:31)

не пускать юзера прямо в базу. А изменение, удаление и вставку записи выполнять либо черех ХП, либо через запросы, в которых уж можно протоколить все, что угодно


Sergey13   (2007-11-06 09:57:00) [37]

> [0] Sirus   (03.11.07 08:31)

> Есть какие-нить соображения или наработки, поделитесь опытом.

Про тригеры уже сказали.
Но по моему опыту есть соображение, что делать такой логинг стоит ОЧЕНЬ осторожно и после тщательного думания на тему "А оно мне вообще надо?". Ибо объем лога будет на порядки выше объема данных и расти будет очень быстро. Соответственно и производительность будет ... ну ты понял.


atruhin   (2007-11-03 11:05:00) [38]

В IB Expert пункт меню "Инструменты\Менеджер протоколов данных", выбираешь что логировать,
он сам создаст нужные тригера и таблицы.


Reindeer Moss Eater   (2007-11-03 10:08:00) [39]

Триггеры


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо