← Навигация по документации

Задача

Размер прироста базы данных зависит от структуры принимаемых исследований. Исследования, содержащие множество DICOM-объектов (напр., исследования CT/MR с устаревшими одиночными кадрами CT/MR), коррелируют с большим числом записей в базе данных и, следовательно, с большим приростом базы данных на одно исследование — но с меньшим приростом базы данных на один архивируемый DICOM-объект — по сравнению с исследованиями с малым числом DICOM-объектов (напр., исследования DX).

При очистке (purge) записей базы данных для отдельных DICOM-объектов уменьшение размера БД больше для исследований, содержащих много DICOM-объектов. Очистка записей базы данных опирается на метаданные объектов отдельных серий и требует, чтобы эти метаданные хранились в системе хранения, внешней по отношению к базе данных.

Решение

Отправьте представительный набор исследований в тестовую установку архива и оцените размер базы данных до и после очистки записей для отдельных DICOM-объектов.

Инструкции

  1. Установите Docker-версию архива согласно Run minimum set of archive services on a single host.

  2. Определите начальный размер базы данных

    Вызовите 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)

  3. Отправьте представительный набор исследований в архив

    Напр.: 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) ```

  4. Выполните сборку мусора в базе данных и выведите размер

    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.

  5. Создайте объекты метаданных для отдельных серий

    Клонируйте дочерний 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

  6. Очистите записи 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) ```

  7. Выполните сборку мусора в базе данных и выведите размер

    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.