Caché Perl バインディング
Caché Perl バインディングは、Perl アプリケーション内で Caché オブジェクトを直接操作する簡単な方法を提供します。Caché Perl バインディングを使用することで、Perl プログラムで、Caché 上のデータベースへの接続の確立、データベース内のオブジェクトの作成とオープン、オブジェクト・プロパティの操作、オブジェクトの保存、オブジェクト上のメソッドの実行、クエリの実行などが可能になります。Caché のすべてのデータ型がサポートされています。
Perl バインディングは、並行処理やトランザクション制御に加えて、オブジェクト・データベースの永続性を完全にサポートします。また、高度なデータ・キャッシング・スキーマも装備されており、Caché サーバと Perl アプリケーションが別マシンにある場合のネットワーク・トラフィックを最小限に抑えることができます。
このドキュメントは、Perl および標準の Perl モジュールの基礎を理解しているユーザのために作成されたものです。Caché には、Perl インタープリタや開発環境は含まれていません。
Perl バインディング・アーキテクチャ
Caché Perl バインディングを使用すると、Perl アプリケーションは Caché サーバ上のオブジェクトと相互運用できます。Perl バインディングには、以下のコンポーネントが含まれます。
-
Intersys::PERLBIND モジュール — Caché データベースに格納されているオブジェクトに対する透過的な接続を、Perl アプリケーションに提供する Perl C 拡張です。
-
Caché オブジェクト・サーバ — Perl クライアントと Caché データベース・サーバ間の通信を管理する高性能なサーバ・プロセスです 通信には標準のネットワーク・プロトコル (TCP/IP) が使用され、Caché がサポートする任意のプラットフォーム上で動作できます。Caché オブジェクト・サーバは、Perl、Python、C++、Java、JDBC、ODBC などの、あらゆる Caché 言語バインディングによって使用されます。
基本機能は以下のとおりです。
-
Caché 内で 1 つ以上のクラスを定義します。これらのクラスは、Caché データベースに格納される永続オブジェクト、または、Caché サーバで動作する一時的なオブジェクトです。
-
実行時、Perl アプリケーションは Caché サーバに接続します。その後、Caché サーバ内に格納されているオブジェクトのインスタンスにアクセスできます。Caché は、すべての通信とクライアント側のデータ・キャッシングを自動的に管理します。実行時のアーキテクチャは以下のとおりです。
-
Caché データベース・サーバ (複数可)。
-
Perl インタープリタ ("Perl クライアント要件" を参照してください)。
-
Perl アプリケーション。実行時、Perl アプリケーションは、オブジェクト接続インタフェースまたは標準 ODBC インタフェースのいずれかを使用して、Caché に接続します。Perl アプリケーションと Caché サーバ間のすべての通信は、TCP/IP プロトコルを使用します。
-
クイックスタート
ここでは、Perl バインディングの中核となる基本的な機能をいくつか紹介します。
-
接続の確立とデータベースの取得
$url = "localhost[1972]:Samples" $conn = Intersys::PERLBIND::Connection->new($url,"_SYSTEM","SYS",0); $database = Intersys::PERLBIND::Database->new($conn);
$database は、$url で指定されたネームスペースへの論理接続です。
-
既存のオブジェクトを開く
$person = $database->openid("Sample.Person","1", -1, -1);
$person は、Caché サーバ上の Sample.Person オブジェクトへの論理接続です。
-
新規オブジェクトの作成
$person = $database->create_new("Sample.Person",undef);
-
プロパティの設定と取得
$person->set("Name","Adler, Mortimer"); $name = $person->get("Name");
-
メソッドの実行
$answer = $person->Addition(17,20);
-
オブジェクトの保存
$person->run_obj_method("%Save")
-
保存されているオブジェクトの ID の取得
$id = $person->run_obj_method("%Id")
-
クエリの実行
$query = $database->alloc_query(); $query->prepare("SELECT * FROM SAMPLE.PERSON WHERE ID=?",$sqlcode); $query->set_par(1,2); $query->execute($sqlcode); while (@data_row = $query->fetch($sqlcode)) { $colnum = 1; foreach $col (@data_row) { $col_name = $query->col_name($colnum); print "column name = $col_name, data=$col\n"; $colnum++; } }
インストールと構成
標準の Caché インストールでは、Caché Perl バインディングに必要なすべてのファイルが <cachesys>/dev/perl に配置されます(ご使用のシステムの <cachesys> の場所については、"Caché インストール・ガイド" の "Caché の既定のインストール・ディレクトリ" を参照してください)。以下のインストール手順の完了後は、任意の Perl サンプル・プログラムが実行可能になります。
Perl クライアント要件
Caché は、 Intersys::PERLBIND モジュールにより、クライアント側の Perl をサポートします。このモジュールは、Caché サーバとの通信に必要な接続機能とキャッシング機能を実装します。
このモジュールを使用するには、以下の環境が必要です。
-
Perl バージョン 5.10 — ActiveState ディストリビューション (www.activestate.comOpens in a new tab) のみをサポートします。
-
C++ コンパイラ — Windows では、Visual Studio 2008 または 2010 を使用します (詳細は、ActiveState サイトの "Windows Compilers for Perl ModulesOpens in a new tab" を参照してください)。UNIX® では GCC を使用します。
-
PATH には <cachesys>\bin ディレクトリを含める必要があります(ご使用のシステムの <cachesys> の場所については、"Caché インストール・ガイド" の "Caché の既定のインストール・ディレクトリ" を参照してください)。
-
C コンパイルとリンクをサポートする環境変数を設定します (例えば、Windows では VSVARS32.BAT を呼び出します)。この手順を実行しないと、make の段階でエラーが報告されます。
UNIX® インストール
-
PATH および LD_LIBRARY_PATH (または OSX 上の DYLD_LIBRARY_PATH) に <cachesys>/bin が含まれていることを確認します。ご使用のシステムの <cachesys> の場所については、"Caché インストール・ガイド" の "Caché の既定のインストール・ディレクトリ" を参照してください。
以下はその例です。
export PATH=/usr/cachesys/bin:$PATH export LD_LIBRARY_PATH=/usr/cachesys/bin:$LD_LIBRARY_PATH
-
Makefile.PL を実行します (<cachesys>/dev/perl にあります)。<cachesys> の場所は引数として指定できます。以下はその例です。
perl Makefile.PL /usr/cachesys
引数なしで実行すると、<cachesys> の場所を入力するよう要求されます。
-
パスに <cachesys>/bin があることを確認したら、以下を実行します。
make
-
make がエラーなしで実行されたら、以下を実行してテストします。
make test
-
make test に成功したら、以下を実行します。
make install
Windows 環境でのインストール
-
<cachesys>\bin が PATH にあることを確認します。(ご使用のシステムの <cachesys> の場所については、"Caché インストール・ガイド" の "Caché の既定のインストール・ディレクトリ" を参照してください)。
-
Makefile.PL を実行します (<cachesys>\dev\perl にあります)。<cachesys> の場所は引数として指定できます。以下はその例です。
perl Makefile.PL C:\Intersystems\Cache
引数なしで実行すると、<cachesys> の場所を入力するよう要求されます。
-
パスに <cachesys>\bin があることを確認したら、以下を実行します。
nmake
-
nmake がエラーなしで実行されたら、以下を実行してテストします。
nmake test
-
nmake test に成功したら、以下を実行します。
nmake install
Caché サーバ構成
Caché サーバで Perl クライアントを使用するのに、特別な構成はほとんど必要ありません。Caché が提供する Perl サンプル・プログラムは、Caché を既定でインストールすると、変更を加えなくても動作します。このセクションでは、Perl に関連するサーバ設定とそれらの変更方法について説明しています。
Caché サーバに接続するすべての Perl クライアントには、以下の情報が必要です。
-
サーバ IP アドレス、ポート番号、および Caché ネームスペースを指定する URL
-
ユーザ名およびパスワード。
既定では、Perl サンプル・プログラムは、以下の接続情報を使用します。
-
接続文字列 : "localhost[1972]:Samples"
-
ユーザ名 : "_SYSTEM"
-
パスワード : "SYS"
問題が発生した場合は、以下の点を確認してください。
-
Caché サーバがインストール済みで稼動していることを確認します。
-
Caché サーバを実行しているマシンの IP アドレスを確認します。Perl サンプル・プログラムでは "localhost" が使用されます。サンプル・プログラムで別のシステムを既定とする場合は、コード内の接続文字列を変更する必要があります。
-
待ち受け状態になっている Caché サーバの TCP/IP ポート番号を確認します。Perl サンプル・プログラムは "1972" を使用します。サンプル・プログラムで別のポートを既定とする場合は、サンプル・コード内で番号を変更する必要があります。
-
接続を確立する際に、有効なユーザ名とパスワードを使用していることを確認します(ユーザ名とパスワードは、管理ポータルを使用して管理できます)。Perl サンプル・プログラムは、管理者のユーザ名 "_SYSTEM" と既定のパスワード "SYS" または "sys" を使用します。通常、サーバのインストール後に既定のパスワードを変更します。サンプル・プログラムで異なるユーザ名とパスワードを既定にする場合は、サンプル・コードを変更する必要があります。
-
接続 URL に有効な Caché ネームスペースが記述されていることを確認してください。ネームスペースは、プログラムで使用するクラスとデータを含む必要があります。Perl サンプルは、Caché で事前にインストールされている SAMPLES ネームスペースに接続します。
サンプル・プログラム
Caché には、Caché Perl バインディングの使用法を示すサンプル・プログラム・セットが用意されています。これらのサンプルは、Caché をインストールした場所の <cachesys>/dev/perl/samples/ サブディレクトリにあります。(ご使用のシステムの <cachesys> の場所については、"Caché インストール・ガイド" の "Caché の既定のインストール・ディレクトリ" を参照してください)。これらは、Java バインディング・サンプルと同じ要領で名前と番号が付けられ、実装されています。
以下は、そのサンプル・プログラムです。
-
CPTest2.pl — Sample.PersonOpens in a new tab のインスタンスのプロパティを取得および設定します。
-
CPTest3.pl — 埋め込みオブジェクト Sample.Person.Home のプロパティを取得します。
-
CPTest4.pl — 埋め込みオブジェクト Sample.Person.Home を更新します。
-
CPTest5.pl — データ型コレクションを処理します。
-
CPTest6.pl — ByName クエリの結果セットを処理します。
-
CPTest7.pl — ダイナミック SQL クエリの結果セットを処理します。
-
CPTest8.pl — employee サブクラスおよび company/employee リレーションシップを処理します。
これらすべてのアプリケーションは、 SAMPLES ネームスペースの Sample パッケージにあるクラスを使用します (Atelier でアクセス可能)。 Sample パッケージを以前に使用したことがない場合は、このパッケージを Atelier で開いて、正しくコンパイルされることを確認してください。
サンプル・プログラムはさまざまなスイッチによって制御されます。これらのスイッチは、プログラムへの引数としてコマンド行に入力できます。引数を入力しない場合は既定値が使用されます。
例えば、CPTest2.pl には、以下のオプション引数を指定できます。
-
-user — ログイン時に使用するユーザ名 (既定値は "_SYSTEM")。
-
-password — 使用するパスワード (既定値は "SYS")。
-
-host — 接続先のホスト・コンピュータ (既定値は "localhost")。
-
-port — 使用するポート (既定値は "1972")。
-user 引数は以下のように指定します。
perl CPTest2.pl -user _MYUSERNAME
CPTest7.pl サンプルは、SQL クエリに渡される -query 引数を受け入れます。
perl CPTest7.pl -query A
このクエリは、文字 "A" で始まる名前を含むすべての Sample.Person レコードを列挙します。