バックエンドインターフェイス(BKI) ファイルは特別な言語で書かれていて、 "bootstrap"モードといわれる、すでに存在しているデータベースシステムを 使用せずにデータベース機能を実行する特別なモードで実行されている Postgresのバックエンドに働きかけます。 したがって、BKI ファイルはデータベースシステムを 初めて作成するときに使用します。(つまりそれ以外の時にはあまり有効ではありません。)
initdbは新しいデータベースクラスタを作成する際に BKIファイルを使用します。initbdで 使われるインプットファイルはgenbki.shというソースツリー内にある 特別にフォーマットされたCのヘッダーファイルを基に Postgresを構築/インストールする際に作成されます。 作成されたグローバルカタログのBKIファイルはglobal.bkiと呼ばれます。 また、template1 データベースに格納されたカタログで、他に作成されたデータベースに 複製されたものはtemplate1.bkiと呼ばれ、 インストールツリーのshareというサブディレクトリに 通常インストールされます。
関連情報はinitdbのドキュメントでもご覧になれます。
このセクションではPostgresのバックエンドが どのようにしてBKI ファイルを解釈するのかを説明します。 例としてglobal.bkiファイルがお手元にあると、この説明文は 一層理解し易くなると思われます。また、バックエンドがどのように連係されているかを 理解するためにinitdbのソースコードをご覧になることも お勧めいたします。
BKI インプットはコマンドのシーケンスから成っています。 コマンドはいくつものトークンから構成されていて、コマンドのシンタックスに 依存しています。トークンは通常スペースで分離されていますが、 曖昧性がなければその必要性はありません。特別なコマンドセパレーターは ありません。したがって、次のコマンドに統語論的に属せないトークンは 新たなコマンドとなります。(通常、分かりやすくするために、新しいコマンドは 新しい行に書きます。) トークンはある一定のキーワードや特別な文字 (カッコ、カンマなど)、数字、二重引用符で囲われた文字列などが 使用できます。
#から始まる行は無視されます。