Шифрование и секретность в Linux

         

А Типы расширенных кодировок



Приложение А. Типы расширенных кодировок

В табл. A.1 перечислены расширенные кодировки, поддерживаемые PostgreSQL версии 7.1.x. Эти типы кодировок доступны только в том случае, если при конфигурировании PostgreSQL был задан ключ --enable_multibyte (см. главу 2). Если расширенная кодировка не нужна, укажите тип SQL_ASCII.



Б Ключи командной строки postgres



Приложение Б. Ключи командной строки postgres

Программа postgres и является исполнителем, непосредственно обрабатывающим команды SQL. Обычно она не запускается напрямую, а вызывается через многопользовательский процесс postmaster. Впрочем, основные ключи этой программы все же желательно знать, поскольку к ним возможны косвенные обращения при помощи ключа -о программы postmaster.

Ниже приведено описание синтаксиса командной строки postgres.

postgres [ -А { 0 | 1 } 3 [ -В буферы ] [ -с имя=значение ]

[ -d уровень_отладки ] [ -D каталог_данных ] [ -е ] [ -Е ]

[ -f { s | i | n | m | h } ] [ -F ] [ -i ] [ -L ] [ -N ]

[ -о имя_файла ] [ -0 ] [ -P ] [ -s | -t { pa | pi | ex } ]

[ -S память ] [ -W интервал ] база_данных

postgres [ -A { 0 ] 1 } ] [ -В буферы ] [ -с имя=значение ]

[ -d уровень_отладки ] [ -0 каталог_данных ] [ -е ]

[ -f { s | i | n | m | h } ] [ -F ] [ -1 ]

[ -L ] [ -о имя_файла ] [ -0 ] [ -p база_данных ] [ -P ]

[ -s -t { pa | pi | ex } ] [ -S память ]

[ -v версия ] [ -W интервал ]

-A { 0 | 1 }. Флаг проверки отладочных директив на стадии выполнения. Позволяет выполнять отладку, если соответствующий ключ был указан во время компиляции. Ключ -А используется только опытными программистами, работающими над самим пакетом PostgreSQL. -В буферы. Количество дисковых буферов в общей памяти, выделяемых для использования postmaster. По умолчанию — 64.

Примечание 1
Примечание 1

Значение ключа -В должно быть по крайней мере вдвое больше значения, передаваемого с ключом -N.

- с имя=значение. Произвольные параметры времени выполнения. Ключ позволяет переопределить любой параметр конфигурации, находящийся в файле postgresql.conf (в каталоге данных кластера). -d уровень отладки. Объем отладочного вывода, регистрируемого серверным процессом. По умолчанию — 0. Чем больше число, тем подробнее вывод. Обычно значений до 4 оказывается вполне достаточно, хотя в этом случае журнал может занимать очень много места.

Примечание 2
Примечание 2

Если стандартные потоки вывода и ошибок не были перенаправлены от postmaster в файл (на уровне командного интерпретатора или в pg_ctl при помощи ключа -l), вся отладочная информация выводится на управляющем терминале процесса postmaster.

- D каталог. Каталог данных кластера. Если каталог не задан, postmaster использует либо значение переменной среды PGDATA, либо вложенный каталог /data каталога, указанного в переменной POSTGRESHOME. Если вторая переменная также не существует, используется стандартный каталог, заданный на стадии компиляции (например, /usr/local/pgsql/data). -е. Выбор европейского формата даты. PostgreSQL считает, что в датах вида -Е. Режим вывода эха для передаваемых команд (например, в терминальном сеансе или в журнале на сервере). -f { s | i | n m h }. Запрет некоторых методов перебора и объединения. За ключом указываются следующие параметры: s — запрет последовательного перебора; i— запрет перебора по индексу; n — запрет вложенных циклов; т — запрет слияний; h — запрет хэширующих объединений. - F. Запрет fsync. Ключ повышает быстродействие, по одновременно растет риск порчи данных при внезапных сбоях оборудования или операционной системы. Хорошенько подумайте, прежде чем устанавливать этот флаг! -i. Запрет выполнения запросов (PostgreSQL ограничивается выводом плана). -l. Запрет блокировки. При наличии этого ключа в PostgreSQL исчезает возможность блокировки таблиц. -N. Ключ -N запрещает использование символа новой строки в качестве разделителя команд. -0. Ключ -0 разрешает модификацию системных таблиц. -Р. база_данных. Ключ postmaster, означающий, что экземпляр postgres был запущен процессом postmaster, подключившимся к базе данных. При наличии ключа postgres принимает другие решения при операциях с памятью и файловыми дескрипторами. - s. При установке этого ключа PostgreSQL после каждого запроса выводит статистику (время выполнения запросов и т. д.), используемую при хронометраже и выборе количества буферов (ключ -В). -S память. Объем памяти, выделяемой для внутренних операции сортировки и хэширования. При исчерпании выделенной памяти PostgreSQL переходит на использование временных файлов на жестком диске. Объем памяти задается в килобайтах и по умолчанию равен 512. В сложных командах могут одновременно выполняться несколько операций сортировки пли хэширования; каждой операции выделяется блок памяти заданного размера, после заполнения которого используются временные файлы. -t { pa pi | ex }. Режим хронометража, относящийся к одному из основных компонентов postgres. За ключом -t указывается признак компонента: ра — хронометраж модуля лексического разбора; рl — хронометраж планировщика; е — хронометраж исполнительного модуля.

Примечание 3
Примечание 3

Ключи -t и -s являются взаимоисключающими.

-W интервал. Интервал ожидания. При установке этого ключа PostgreSQL перед запуском делает паузу заданной продолжительности (в секундах), в течение которой программист подключает отладчик.

Г Внутренние переменные psql



Приложение Г. Внутренние переменные psql

Клиент psql использует несколько специальных системных переменных, управляющих различными аспектами работы программы. Особого внимания заслуживают переменные PROMPT1, PROMPT2 и PROMPT3, в которых хранится информация о конфигурации приглашений программы. Во время работы программы значения этих переменных задаются и уничтожаются командами \set и \unset. Ниже перечислены все специальные переменные psql.

DBNAME. Имя базы данных, к которой в настоящий момент подключен клиент psql. Значение переменной задается при подключении к базе данных при запуске клиента или при подключении в процессе текущей работы. ECHO. Переменная управляет выводом на экран при выполнении команд, содержащихся в файле. Чтобы все команды выводились на экран по мере чтения из файла, присвойте этой переменной значение all. Чтобы на экран выводились все запросы, передаваемые серверному процессу, присвойте переменной значение queries. ECHO_HIDDEN. Если эта переменная равна true, клиент psql выводит на экран все запросы, используемые управляющими командами. Вывод происходит перед отправкой запросов серверу. Чтобы запросы управляющих команд только выводились на экран без выполнения, присвойте переменной ECHO_HIDDEN значение поехес. ENCODING. В переменной хранится информация о расширенной кодировке, используемой базой данных. Для использования расширенных кодировок необходимо указать соответствующий ключ при компиляции PostgreSQL. Если это не сделано, переменная содержит константу SQL_ASCII. HISTCONTROL. Переменная определяет режим управления буфером истории psql. Если присвоить ей значение ignorespace, в истории игнорируются все строки, начинающиеся с пробелов. Если переменная равна ignoredups, в истории игнорируются все записи, совпадающие с предыдущими записями. При значении ignoreboth игнорируются как строки с пробелами, так и дубликаты. HISTSIZE. Переменная задает длину буфера истории. По умолчанию длина буфера равна 500 строкам. HOST. Хостовое имя сервера базы данных, к которому клиент подключен в настоящий момент. Значение переменной задается при подключении к базе данных при запуске клиента или при подключении в процессе текущей работы. IGNOREEOF. Переменная управляет обработкой символов EOF в psql. В обычной ситуации при получении символа EOF приложение завершается. Чаще всего этот символ генерируется нажатием клавиш Ctrl+D. Присваивая этому ключу любое нечисловое значение, вы сообщаете psql, что символ EOF следует игнорировать до 10 повторений. Также можно присвоить этой переменной числовое значение; в этом случае psql игнорирует указанное количество символов EOF. LASTOID. Последний идентификатор объекта (OID), заданный командой INSERT или функцией lo_import(}. L0_TRANSACTION. Операция, выполняемая psql при работе с большими объектами. Допустимые значения перечислены ниже. rollback. При попытке выполнения операции с большим объектом (или при импортировании больших объектов) транзакция автоматически откатывается. По соображениям эффективности операции с большими объектами обычно выполняются в отдельных транзакциях, поэтому переменная L0_TRANSACTION по умолчанию равна rol Iback. commit. Клиент psql автоматически фиксирует транзакцию, начатую перед операцией с большим объектом. nothing. Клиент psql выполняет операцию с большим объектом в текущей транзакции. ON_ERROR_STOP. Если этой переменной присвоено значение (любое), то при возникновении ошибок (например, ошибок синтаксиса SQL или неправильного использования управляющих команд) сценарий автоматически завершается. По умолчанию после возникновения ошибки psql продолжает выполнение сценария. PORT. Номер порта, к которому подключен клиент. Значение переменной задается при подключении к базе данных при запуске клиента или при подключении в процессе текущей работы. PROMPT1, PROMPT2, PROMPTS. Переменные содержат символьные строки, описывающие структуру приглашений psql. Присваивая им новые значения, можно изменить вид приглашений в программе. За дополнительной информацией о па-стройке приглашений обращайтесь к главе 6. SINGLELINE. Если этой переменной присвоено значение (любое), psql выполняет введенные команды SQL при переходе на следующую строку, не требуя специальных завершителей — точки с запятой (;) или \g. Режим также устанавливается ключом командной строки -S. SINGLESTEP. Если этой переменной присвоено значение (любое), перед выполнением каждой команды psql запрашивает подтверждение. USER. В переменной хранится имя пользователя PostgreSQL, указанное при подключении к базе данных.

В Двоичный формат команды COPY



Приложение В. Двоичный формат команды COPY

Выходные данные команды COPY могут сохраняться не только в текстовом, но и в двоичном формате PostgreSQL. С файлами, сохраненными в двоичном формате, невозможно работать в обычных текстовых редакторах.



А 1 Типы расширенных кодировок



Таблица А.1. Типы расширенных кодировок

Константа

Код

Описание

SQL_ASCII

0

Простой формат ASCII

EUC_JP

1

Японская расширенная кодировка Unix

EUC_CN

2

Китайская расширенная кодировка Unix

EUC_KR

3

Корейская расширенная кодировка Unix

EUC_TW

4

Тайваньская расширенная кодировка Unix

UNICODE

5

Юникод UTF-8

MULEJNTERNAL

6

Внутренний тип Mule

LATIN1

7

ISO 8859-1 (английский язык, с поддержкой некоторых европейских языков)

LATIN2

8

ISO 8859-2 (английский язык, с поддержкой некоторых европейских языков)

LATIN3

9

ISO 8859-3 (английский язык, с поддержкой некоторых европейских языков)

LATIN4

10

ISO 8859-4 (английский язык, с поддержкой некоторых европейских языков)

LATINS

11

ISO 8859-5 (английский язык, с поддержкой некоторых европейских языков)

KOI8

12

KOI8-R

WIN

13

Windows CP1251

ALT

14

Windows CP866



Заголовок



Заголовок

Заголовок двоичного файла PostgreSQL состоит из фиксированного набора полей общей длиной 24 байта и расширенного заголовка переменной длины. Ниже перечислены фиксированные поля заголовка.

Сигнатура. 12-байтовая последовательность символов PGBCOPY\n\377\r\n\0. Сигнатура используется для идентификации файлов, искаженных при пересылке. Она изменяется при потере значений NULL, нарушении контроля четности, воздействии фильтров преобразования новой строки и потере старших битов. Определитель порядка байтов. 4-байтовая целочисленная константа (0x01020304), при помощи которой предотвращается перестановка байтов в процессе чтения двоичных файлов. Флаги. 4-байтовое целое число, содержащее информацию о формате файла. Поле состоит из набора флагов, а его биты нумеруются с 0 (младший бит) до 31 (старший бит). Для сохранения совместимости биты 0-15 зарезервированы, а в битах 16-31 хранятся флаги. В PostgreSQL 7.1.x определен только бит 16: если бит 16 равен 1, в файле сохраняются идентификаторы объектов; о если бит 16 равен 0, идентификаторы объектов в файл не включаются. Поле длины расширенного заголовка. 4-битовое целое поле, содержащее длину оставшейся части заголовка в байтах (без учета длины самого поля). В предыдущих версиях это поле было равно 0, и за ним непосредственно следовали данные первой записи.

Записи



Записи

Записи в двоичном файле начинаются с 16-разрядного целого количества полей (одинакового для каждой записи). Затем следует 16-разрядное целое поле typlen, после чего — поля данных. Допустимые значения поля typlen перечислены ниже.

0. NULL; поле не содержит данных. >0. Тип данных фиксированной длины. За словом typlen следует указанное количество байтов данных. -1. Тип данных varlena. Следующие четыре байта составляют заголовок varlena, определяющий общую длину значения (вместе с длиной заголовка). <—1. Зарезервировано для использования в будущем.

Чтобы приложение, читающее этот формат, могло легко проверить целостность двоичных данных, со всеми полями, отличными от NULL, ассоциируется значение typlen, которое может сравниваться с полем typlen приемного поля перед попытками вставки или обновления данных в PostgreSQL.

Некоторые параметры форматирования остались нереализованными; такое решение было принято для лучшей переносимости двоичных файлов. Следует упомянуть о невозможности хранения дополнительных данных между полями (например, посредством дополнения при выравнивании), а также об отсутствии различий между типами данных по способу передачи (по ссылке и по значению).

Если в двоичный файл PostgreSQL включаются идентификаторы объектов (OID), они следуют сразу же после поля-счетчика. При подсчете полей значения OID не учитываются.



Завершение



Завершение

Двоичные файлы PostgreSQL завершаются простым 16-разрядным целым числом -1, за которым следует конец файла. Значение легко отличается от начального 16-разрядного счетчика полей, и это обстоятельство упрощает синхронизацию данных в приложениях.