Начиная с версии 4.6.182 скрипт maint_prices.py
удаляет устаревшие переоценки и дополнительные цены.
Утилита maint
Для исключения бесконтрольного увеличения размеров логов и данных используется "подрезка данных". "Подрезка данных" подразумевает ограничение количества записей в базе данных и ограничение количества хранимых файлов журналов путем удаления устаревших данных и ротации (циклического переименования) лог-файлов. Выполнение данных регламентных процедур возложено на утилиту maint
.
Утилита maint
входит в состав пакета artix-maint-mysql
.
Параметры ротации и архивирования логов задаются в файле /linuxcash/cash/conf/maint.json
. Настройки разбиты на следующие разделы:
shiftly
определяет правила ротации данных после закрытия смены;weekly
управляет удалением устаревших архивов и директорий;manual
необходим для удаления устаревшей информации из базы данных;prices
необходим для удаления устаревших переоценок из базы данных,custom
определяет правила ротации логов для интернет-магазина.
Выполнение регламентных процедур может быть осуществлено с двумя классами объектов objectname
:
directory
– директория;file
– файл.
Утилита maint
позволяет выполнять с объектами directory
следующие действия:
delete
– удаление;copy
– копирование;rename
– переименование;compress
– сжатие (используется архиватор zip);move
– перемещение.
Для объектов file
доступны только процедуры копирования (copy
) и переименования (rename
).
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
path | строковый | Исходный каталог, в котором расположен объект directory | ||
mask | строковый | Маска, по которой выполняется выбор имен объектов | ||
name | строковый | Абсолютный путь и префикс имени объекта file | ||
filter | строковый | Суффикс имени объекта file | Список объектов для воздействия строится по правилу: ‘name’*’filter’ . | |
transform | строковый | Правило переименования объектов, которые перемещаются, переименовываются или сжимаются. При переименовании используются переменные:
Параметр не должен содержать расширение файла. | ||
destination | строковый | Целевая директория, в которую происходит перемещение, копирование или сжатие объектов | ||
rangetype | строковый |
| Правило подбора объектов. Возможны значения:
Порядок сортировки: по времени создания объекта. | Используется для выбора смен в связке с параметром rangecount . |
rangecount | целочисленный | целое число большее нуля | Ограничение количества объектов, над которыми выполняются манипуляции |
{ "objectname": "directory", "path": "/linuxcash/logs/cashlogs/*", "rangetype": "exceptlast", "rangecount": 8, "action": "delete" }
Перенос и архивация данных после закрытия смены
- Логи из директории
/linuxcash/logs/current
архивируются в/linuxcash/logs/archive/logs/
, а также помещаются в/linuxcash/logs/cashlogs/
. Файловая база данных для сервиса
softwarefn
из директории/linuxcash/cash/data/softwarefn/
архивируется в/linuxcash/cash/data/archive/softwarefn/
.
Удаление устаревших данных на кассе
Журналы событий за 8 последних смен размещаются в директории /linuxcash/logs/cashlogs/
, данные для 30 последних смен архивируются и переносятся в директорию /linuxcash/cash/data/backup/
. Данные базы данных для сервиса softwarefn
остаются в директории /linuxcash/cash/data/archive/softwarefn/
в количестве 30 архивов. Остальные данные считаются устаревшими и удаляются.
Правила удаления устаревших данных выполняются планировщиком 1 раз в 3 часа в соответствии с настройками раздела weekly
.
Удаление устаревших данных из БД
Удаление устаревших смен
Удаление устаревших данных из БД Documents
производится дискретно по сменам. Удаление каждой смены выполняется через заданный интервал времени.
Задача выполняется планировщиком ежедневно в соответствии с правилами, заданными в разделе manual
.
Количество смен, информация о которых считается актуальной, определяется параметром shiftCount
. Данные более ранних смен считаются устаревшими и удаляются. Так как в базе данных может храниться информация с нескольких касс, то объем устаревших данных определяется для каждой кассы отдельно.
Удаление устаревших смен осуществляется с определенным временным интервалом, задаваемым параметром timeout
. Определение интервала времени между удалением смен позволяет равномерно сбалансировать нагрузку на кассу.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
shiftCount | целочисленный | целое число большее нуля | Количество актуальных смен | |
timeout | целочисленный | целое число большее нуля | Интервал времени между удалением смен | Указывается в секундах |
"manual": { "shiftCount": 20, "timeout": 240 }
Для удаления устаревших смен используется скрипт /linuxcash/cash/bin/maint_db.py
. Запуск процесса удаления переоценок выполняется планировщиком раз в сутки. Результат работы скрипта записывается в файл /linuxcash/logs/current/maint_db.log.
Удаление устаревших переоценок и дополнительных цен
При подрезке переоценок и дополнительных цен невозможна загрузка справочника с переоценками и дополнительными ценами. Загрузка справочников будет осуществлена только после завершения подрезки данных.
Данные о переоценках, в отличие от других справочников, накапливаются в базе данных. Уникальность записи в таблице переоценок определяется штрих-кодом товара и моментом времени, с которого начинает действовать цена. С течением времени для товара накапливается большое количество цен, многие из которых перестают быть актуальными.
Удаление устаревшей информации выполняется в два этапа. На первом этапе собирается информация о последних актуальных ценах по каждому штрих-коду и формируется задание для подсистемы обмена данными. На втором – подсистема обмена данными выполняет удаление информации.
Параметры удаления устаревших переоценок задаются в файле /linuxcash/cash/conf/maint.json
в разделе "prices"
.
Количество записей в блоке на удаление определяется параметром pricesCount
. Для снижения нагрузки на кассу во время выполнения регламентных процедур задано значение 500 записей.
Задержка между циклами подбора информации определяется параметром timeout
. По умолчанию предусмотрена задержка 240 секунд.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
pricesCount | целочисленный | целое число большее нуля | Количество удаляемых записей | |
timeout | целочисленный | целое число большее нуля | Интервал времени между удалением записей | Указывается в секундах |
"prices": { "timeout": 240, "pricesCount": 500 }
Для подбора устаревших переоценок и дополнительных цен используется скрипт /linuxcash/cash/bin/maint_prices.py
. Запуск процесса удаления переоценок и дополнительных цен выполняется планировщиком 1 раз в неделю. Результат работы скрипта записывается в файл /linuxcash/logs/current/maint_prices.log
.
Удаление переоценок осуществляется через очередь File-Queue, параметры fileQueueRoot = /linuxcash/cash/data/queues
и queueChunkSize = 25000
.
Перенос и архивация логов для интернет-магазина
Логи из директории /linuxcash/logs/current
архивируются в /linuxcash/logs/archive/logs/
и переименовываются согласно правилам, заданным в разделе "custom
".
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
dateformat | строковый | Формат даты и времени для наименования архива с логами интернет-магазина | По умолчанию " |
"custom": [ { "objectname": "directory", "path": "/linuxcash/logs/current/", "rangetype": "last", "rangecount": 1, "action": "compress", "destination": "/linuxcash/logs/archive/logs", "transform": "l-%(currentdatetime)s", "dateformat": "%Y-%m-%d %H:%M:%S" }, { "objectname": "directory", "path": "/linuxcash/logs/current/*", "action": "delete" } ]