понедельник, 18 марта 2019 г.

MiniM. Форматы файлов экспорта глобалов

MiniM Database Server поддерживает экспорт и импорт данных глобалов в переносимых форматах. Таких форматов 4:
  • Cache Stream
  • MSM Stream
  • Cache Variable Length
  • MSM Variable Length
Данные глобалов могут быть экспортированы консольной утилитой
d ^%GO
а также MiniM Control Center и MiniM Routine Editor. Консольная утилита ^%GO экспортирует в файл указанный относительно сервера MiniM а утилиты MiniM Control Center и MiniM Routine Editor в файл указанный относительно клиентского компьютера.

Форматы данных ориентированы на сохранение последовательности пар - имя глобала с индексами и значение этого имени и отличаются отдельными деталями такого сохранения в файл. Имя глобала с индексами сохраняется в виду, возвращаемом функцией $query, данные сохраняются с их строковом представлении. При необходимости значения индексов обрамляются двойными кавычками и если в значении индекса есть двойная кавычка, то она удваивается.

Потоковые форматы (Stream) сохраняются в виде пар строк - строка с именем глобала и строка с данными. Поэтому для использования потоковых форматов данные не должны содержать непечатных символов, в частности символы перевода строки.

Форматы переменной длины для имени глобала и значения глобала добавляют перед каждым значением два байта длины, поэтому в форматы переменной длины возможно сохранение произвольных данных.

Форматы сохранения глобалов также содержат строки - терминаторы экспорта одного глобала и терминаторы экспорта всего файла, а также заголовки. Различия форматов лишь в деталях таких записей.

Cache Stream

Файл считается текстовым и терминатором одной строки считается символ перевода строки. Первые две строки содержат заголовок. Содержание заголовка не влияет на содержание данных и может быть проигнорировано программами, но две строки должны быть обязательно. Обычно в них пишут учетную информацию - какая програма проводила экспорт, когда, и возможно, комментарий оператора.

После заголовка идут одна за другой подряд пары имя глобала с индексами и его значение.

После всех пар в конце файла записывается терминатор файла в виде двух пустых строк. Терминаторы экспорта глобалов не записываются.

Дальнейшее содержание файла после терминаторов файла, если оно есть, игнорируется.

MSM Stream

Формат также считается текстовым и первые две строки содержат необязательный заголовок. Первые две строки обязательны.

После заголовка идут одна за другой подряд пары имя глобала с индексами и его значение.

После экспорта одного глобала ставится терминатор экспорта глобала в виде двух строк
*
*
Терминатор экспорта глобала ставится если индексы по текущему экспортируемому имени глобала закончились. После терминатора экспорта глобала может следовать экспорт другого глобала, с другим именем. Каждый глобал должен завершаться терминатором экспорта глобала.

После терминатора экспорта последнего глобала ставится терминатор экспорта файла в виде двух строк
**
**
Дальнейшее содержание файла после терминаторов файла, если оно есть, игнорируется.

Cache Variable Length & MSM Variable Length

Форматы экспорта переменной длины по своей структуре в точности повторяют потоковые форматы. Форматы отличаются по представлению строки. Если потоковые форматы используют признак окончания записи как символ перевода строки, то форматы переменной длины используют префикс каждой записи. Префикс записи содержит длину и кодируется как бинарное двухбайтное число с очередностью байт в порядке процессора Интел. Для формирования префикса MiniM Database Server использует функцию $zwc(length).

Префиксы длины используются для каждой записи - для первых двух строк заголовка, для имени глобала, для значения глобала, для терминаторов экспорта глобала для формата MSM и для терминаторов экспорта файла экспорта.

Дальнейшее содержание файла после терминаторов файла, если оно есть, игнорируется.

Поскольку форматы экспорта глобалов фиксированы и документированы, такие файлы могут быть записаны самыми разными программами, в том числе из состава других реализаций MUMPS или третьими производителями. Форматы экспорта глобалов могут быть использованы не только для импорта в MiniM Database Server, но и для переноса данных глобалов между разными реализациями MUMPS.

Комментариев нет:

Отправить комментарий