Начиная с версии 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"
}
]