Размер прироста базы данных зависит от структуры принимаемых исследований. Исследования, содержащие множество DICOM-объектов (напр., исследования CT/MR с устаревшими одиночными кадрами CT/MR), коррелируют с большим числом записей в базе данных и, следовательно, с большим приростом базы данных на одно исследование — но с меньшим приростом базы данных на один архивируемый DICOM-объект — по сравнению с исследованиями с малым числом DICOM-объектов (напр., исследования DX).
При очистке (purge) записей базы данных для отдельных DICOM-объектов уменьшение размера БД больше для исследований, содержащих много DICOM-объектов. Очистка записей базы данных опирается на метаданные объектов отдельных серий и требует, чтобы эти метаданные хранились в системе хранения, внешней по отношению к базе данных.
Отправьте представительный набор исследований в тестовую установку архива и оцените размер базы данных до и после очистки записей для отдельных DICOM-объектов.
Установите Docker-версию архива согласно Run minimum set of archive services on a single host.
Определите начальный размер базы данных
Вызовите psql — интерактивный терминал PostgreSQL
в контейнере базы данных, подключившись к базе данных архива:
bash
$ docker exec -it db-container-name psql pacsdb pacs
psql (10.0)
Type "help" for help.
Выведите размер базы данных архива:
console
pacsdb=# \l+ pacsdb
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description
--------+----------+----------+------------+------------+-------------------+-------+------------+-------------
pacsdb | postgres | UTF8 | en_US.utf8 | en_US.utf8 | | 10 MB | pg_default |
(1 row)
Отправьте представительный набор исследований в архив
Напр.:
bash
$ storescu -c DCM4CHEE@localhost:11112 ~/testdata/MESA-storage-A_11_5_0
$ storescu -c DCM4CHEE@localhost:11112 ~/testdata/MESA-storage-B_10_11_0
```console
pacsdb=# select count(*) from patient;
count
62
(1 row)
console
pacsdb=# select count(*) from study;
count
68
(1 row)
console
pacsdb=# select count(*) from series;
count
118
(1 row)
console
pacsdb=# select count(*) from instance;
count
1462 (1 row) ```
Выполните сборку мусора в базе данных и выведите размер
console
pacsdb=# vacuum full;
VACUUM
pacsdb=# \l+ pacsdb
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description
--------+----------+----------+------------+------------+-------------------+-------+------------+-------------
pacsdb | postgres | UTF8 | en_US.utf8 | en_US.utf8 | | 13 MB | pg_default |
(1 row)
Разница с начальным размером базы данных и есть фактический прирост размера базы данных за счёт сохранённых
исследований. Напр.: 13 MB - 10 MB = 3 MB.
Создайте объекты метаданных для отдельных серий
Клонируйте дочерний Storage Descriptor fs1 у Archive Device:

Измените Storage ID и Storage URI у клонированного Storage Descriptor на series-metadata и
file:///storage/series-metadata/:

Установите атрибуты Archive Device Series Metadata Storage ID в series-metadata и
Update Series Metadata Polling Interval в 1 минуту:

Запустите создание Series Metadata командой
console
pacsdb=# update series set metadata_update_time=current_timestamp;
UPDATE 118
Проверьте, что создание метаданных для всех серий завершено, командой ```console pacsdb=# select count(*) from series where metadata_update_time is not null; count
0
(1 row) ```
Проверьте размер созданных файлов метаданных
console
$ du -s --si /var/local/dcm4chee-arc/storage/series-metadata
3,3M /var/local/dcm4chee-arc/storage/series-metadata
Очистите записи Instance
Установите атрибут Archive Device Purge Instance Records Polling Interval в 1 минуту:

Запустите очистку записей instance командой
console
pacsdb=# update series set inst_purge_time=current_timestamp;
UPDATE 118
Проверьте, что очистка записей instance завершена, командой
```console
pacsdb=# select count(*) from instance;
count
0
(1 row) ```
Выполните сборку мусора в базе данных и выведите размер
console
pacsdb=# vacuum full;
VACUUM
pacsdb=# \l+ pacsdb
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description
--------+----------+----------+------------+------------+-------------------+-------+------------+-------------
pacsdb | postgres | UTF8 | en_US.utf8 | en_US.utf8 | | 11 MB | pg_default |
(1 row)
Таким образом, очистка записей instance уменьшила прирост базы данных за счёт сохранённых исследований до
11 MB - 10 MB = 1 MB.