Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Аудит: одна таблица на все или таблицы аудита для каждой таблицы? / 6 сообщений из 6, страница 1 из 1
02.04.2013, 17:07
    #38209648
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аудит: одна таблица на все или таблицы аудита для каждой таблицы?
Стоит задача вести выборочный аудит по таблицам и пользователем

Есть 2 варианта:
1 - ведем аудит в одной общей таблице {дата, сущность:текст, пользователь:uid, id-записи:id, изменения: текст} - в поле "изменения" кладутся значения измененной записи. id-записи - в некоторых БД (к примеру PostgreSQL) можно иметь уникальный для всей базы id записи любой таблицы
2 - ведем для каждой таблицы таблицу аудита = полной копии структуры исходной таблицы + поля {дата, пользователь:uid}

1й вариант удобен - потому что одна таблица и все выборки можно делать на ней, но неудобно что измененные поля хранятся в текстовом виде (или в виде JSON для PostgreSQL) и манипуляция с ними крайне не эфективна
2й вариант хорош тем что все измененные поля представлены в "родном" виде и сними можно сразу работать - к примеру выполнить Undo, но проблема возникает с количеством и поддержкой таких таблиц - их надо периодически чистить (а если поддерживать секционирование + оверхед на создание и манипуляции) + выборка по юзеру что он изменил потребует включения в запрос все таблицы аудита

Какой из вариантов по вашему мнению все же наиболее подходящий для практики?
...
Рейтинг: 0 / 0
02.04.2013, 18:35
    #38209832
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аудит: одна таблица на все или таблицы аудита для каждой таблицы?
Я бы выбрал второй вариант: divide et impera.
Первый вариант легко реализуется вьюхой с union all. Производительность подобных запросов беспокоить вас не должна, не так часто это делается.
...
Рейтинг: 0 / 0
02.04.2013, 18:39
    #38209841
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аудит: одна таблица на все или таблицы аудита для каждой таблицы?
sp,

Прежде всего надо решить, в чем будет заключаться "практика". Какие запросы будут идти к системе аудита, с какой интенсивностью? Какой объем данных предполагается держать в рабочих таблицах? Предполагается ли сброс в архивы, и обращение к ним? Немаловажный вопрос также - динамика наполнения самих таблиц аудита. Может, в какую-то таблицу у вас тысяча юзеров в секунду сканерами штрих-кодов что-то вливают, так что общая таблица аудита станет "бутылочным горлышком" ?

А вообще, мой хрустальный шар подсказывает, что Вы склонитесь к первому варианту. "Неудобство" тектового представления борется один раз соответствующей библиотечной прослойкой. "Неэффективность" манипуляций не будет иметь значения, в связи с разовым характером "разборов полетов" и запросов к системе аудита.
...
Рейтинг: 0 / 0
02.04.2013, 20:30
    #38210010
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аудит: одна таблица на все или таблицы аудита для каждой таблицы?
Cane Cat Fisher,

Я вот задумался, что если в одну таблицу будет идти большое количество обновлений а в другие - редко, то запрос по одной таблице будет медленным в силу ее общего большого размера, в то время если запрос будет идти к одной конкретной таблице - это будет гораздо быстрее
...
Рейтинг: 0 / 0
02.04.2013, 20:34
    #38210014
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аудит: одна таблица на все или таблицы аудита для каждой таблицы?
хотя в Postgres можно создать одну секционированную таблицу, в которой прописать функцию перенаправляющую вставку данных и выборку в секцию соотносящуюся с таблицей данных...
...
Рейтинг: 0 / 0
02.04.2013, 20:50
    #38210028
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аудит: одна таблица на все или таблицы аудита для каждой таблицы?
осталось определиться между: текстовое представление записи или отдельная колонка под поле
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Аудит: одна таблица на все или таблицы аудита для каждой таблицы? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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