пятница, 2 октября 2009 г.

Некоторые системные таблицы в базе данных DocsVision

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

dvsys_instances - в таблице хранятся записи о всех карточках в системе
поля:
InstanceID - идентификатор карточки
CardTypeID - идентификатор типа карточки
Description - дайджест
SDID  - сылка на дескриптор безопасности в dvsys_security
Deleted - признак, является ли карточка помещенной в корзину
Template - признак, что карточка является шаблоном
TopicIndex - порядок в теме обработки

dvsys_instances_read - информация о прочтенных пользователем карточках
InstanceID - идентификатор карточки
UserID - идентификатор пользователя из таблицы dvsys_users

dvsys_links - информация о ссылках
SourceCardID - идентификатор карточки, которая ссылается
DestinationCardID - идентификатор карточки, на которую ссылкаются
Type - тип ссылки: 1- слабая, 2 - сильная

dvsys_log - таблица, хранящая журнал навигатора.

dvsys_sessions - таблица, хранящая информацию обо всех сессиях. Удаление строки из этой таблицы, то же самое что и отключение пользователя.

dvsys_users - информация обо всех пользователях, которые хоть раз открывали навигатор.

8 комментариев:

  1. Михаил, а вы не могли бы немного рассказать о системном поле Timestamp, SysRowTimestamp? Что оно в себе содержит? И можно ли его использовать, например, в sql-запросе, если надо будет получить дату создани записи?
    Или у него другое назначение?

    ОтветитьУдалить
  2. Данные поля содержат отметку, позволяющую идентифицировать изменение записи. Например, при часть данных кешируется на клиенте во время работы. При обращении пользователя к данным карточки, делается проверка на актуальность данных в кеше на клиенте (для определения нужно ли их переполучать заново). И актуальность определяется полем Timestamp. Возможно, есть еще применения, о которых я не знаю. Это поле никак не применимо для выборок через SQL запросы. По крайней мере, я его ни разу не использовал.

    ОтветитьУдалить
  3. Спасибо, понятно.
    Получается, что дата создания строки (RowData) нигде не хранится и никак её не получить?

    ОтветитьУдалить
  4. Произвольной нельзя. Можно, только в случае если RowData имеет поле Дата / Время. Как например, запись в журнале бизнес-процесса

    ОтветитьУдалить
  5. Ну, можно ведь поискать в табличке dvsys_log.

    ОтветитьУдалить
  6. Лог же периодически очищается, так что dvsys_log как источник информации тут не подходит, к сожалению.

    ОтветитьУдалить
  7. А что хранится в таблице dvsys_log_backup? Можно ее транкейтнуть? А то она очень сильно разрослась.

    ОтветитьУдалить