Informixとは? わかりやすく解説

Informix 関数

導入

Informix (IDS) 7.x, SE 7.x, Universal Server (IUS) 9.x ,IDS 2000 用の Informix ドライバは、informix 拡張機能用ディレクトリの "ifx.ec" および "php3_ifx.h" に実装されています。 IDS 7.x のサポートは BYTE および TEXT カラムを完全にサポートしており、 完成度はかなり高いです。 IUS 9.x のサポートは部分的に完成しています。つまり、 新しいデータ型はサポートされていますが、SLOB および CLOB のサポートについてはまだ作業中です。
注意: この拡張モジュールは » PECL レポジトリに移動 されており、以下のバージョン以降 PHP にバンドルされなくなっています。 PHP 5.2.1.

要件

設定に関する注意: PHP Informix ドライバをコンパイルするには、ESQL/C が必要です。 7.2x 以降のバージョンに付属する ESQL/C は問題なく使用できます。 現在では、ESQL/C は Informix クライアント SDK に含まれています。
"configure" スクリプトを実行する前に、必ず "INFORMIXDIR" 変数を 設定し、PATH に $INFORMIXDIR/bin を設定しておいてください。

インストール手順

このモジュールで定義した関数を使用可能とするには、configure に --with_informix[=DIR] を指定して PHP インタプリタをコンパイルする必要があります。ただし、DIR は Informix のベースインストールディレクトリで、デフォルトはありません。

実行時設定

php.ini の設定により動作が変化します。
注意: Informix 用環境変数 INFORMIXDIR および INFORMIXSERVER が PHP ifx ドライバで利用可能であり、INFORMIX のバイナリがあるディレクトリに パスが通っていることを確認してください。テストを始める前に phpinfo() と書いたスクリプトを実行し、 これを確認してください。 phpinfo() があるスクリプトは、これらの環境変数の 一覧を出力します。これは、CGI 版の PHP および Apache mod_php で 共に行われます。これらの環境変数は Apache のスタートアップスクリプトで 設定する必要があります。
また、Informix 共有ライブラリがローダーで利用可能である必要があります (LD_LINBRARY_PATH または ld.so.conf/ldconfig を確認してください)。
BLOB (TEXT および BYTE カラム)の使用に関する注意 : 通常、BLOB は BLOB ID により指定されます。 select クエリは、BYTE および TEXT カラム毎に "blob id" を返します。 ("ifx_blobinfile(0);" により) メモリー上で BLOB を得ることを選択した場合、 "string_var = ifx_get_blob($blob_id);" で内容を得ることができます。 BLOB カラムの内容をファイルに取得したい場合、 "ifx_blobinfile(1);" を使用してください。 "ifx_get_blob($blob_id);" によりファイル名を得ることができます。 BLOB の内容を得る際には、通常のファイル入出力を行ってください。
insert/update クエリーに関しては、 "ifx_create_blob();" により自分で "blob id" を作成する必要があります。 その後、blob id を配列に代入し、 クエリー文字列の中の blob カラムを疑問符 (?) で置換します。 updates/inserts の場合、ifx_update_blob() で blob の内容を設定するのが便利でしょう。
BLOB カラムの動作は、設定用変数で変更することができます。 これらの変数は、実行時にも設定可能です。
設定変数 : ifx.textasvarchar
設定変数 : ifx.byteasvarchar
ランタイム関数 :
ifx_textasvarchar(0) : TEXT カラムを有する select クエリーに blob id を使用する
ifx_byteasvarchar(0) : BYTE カラムを有する select クエリーに blob id を使用する
ifx_textasvarchar(1) : TEXT カラムを VARCHAR カラムとして返します。 このため、select クエリにおいて blob id を使用する必要はありません。
ifx_byteasvarchar(1) : BYTE カラムを VARCHAR カラムとして返します。 このため、select クエリにおいて blob id を使用する必要はありません。
設定変数 : ifx.blobinfile
ランタイム関数 :
ifx_blobinfile_mode(0) : メモリに BYTE カラムを返し、blob id によりその内容を取り出す
ifx_blobinfile_mode(1) : メモリに BYTE カラムを返し、blob id によりそのファイル名を取り出す
ifx_text/byteasvarchar を 1 に設定した場合、 通常の(しかしやや長い) VARCHAR フィールドのように select クエリーで TEXT や BYTE カラムを使用することが可能です。 全ての文字列は、PHP で "数えられる" ので、これにより、 "バイナリ・セーフ"が維持されます。 これを正しく処理するのはあなた次第です。 返されるデータには何でも含むことができますが、その内容について 責任を負うことになります。
ifx_blobinfile を 1 に設定した場合、blob の内容を得るために ifx_get_blob(..) により返されたファイル名を使用してください。 この場合、行を取得する際に「Informix により作成された テンポラリファイルを削除する」責任があります。 取得された新規の行は、BYTE カラム毎に新規のテンポラリファイルを 作成します。
テンポラリファイルの位置は、環境変数 "blobdir" により設定することが できます。デフォルトは、"." (カレントディレクトリ)です。 putenv(blobdir="tmpblob"); のようにすることにより、誤って残って しまったテンポラリファイルを削除することが容易になります (テンポラリファイルの名前は "blb" で始まります)。
自動的に "char" (SQLCHAR および SQLNCHAR) データを取り去る: これは、次の設定変数により設定することが可能です。
ifx.charasvarchar : 最後尾のスペースを何らかの削除処理を行わずに 自動的に取り去る場合に 1 に設定します。
NULL 値: 設定変数 ifx.nullformat (およびランタイム関数 ifx_nullformat()) を TRUE に設定した場合、文字列 "NULL" として NULL カラムを返します。FALSE に設定した場合は 空文字列を返します。これにより、NULL カラムと空のカラムを識別することが 可能となります。
表 141. Informix 設定オプション
名前デフォルト変更の可否変更履歴
ifx.allow_persistent"1"PHP_INI_SYSTEM 
ifx.max_persistent"-1"PHP_INI_SYSTEM 
ifx.max_links"-1"PHP_INI_SYSTEM 
ifx.default_hostNULLPHP_INI_SYSTEM 
ifx.default_userNULLPHP_INI_SYSTEM 
ifx.default_passwordNULLPHP_INI_SYSTEM 
ifx.blobinfile"1"PHP_INI_ALL 
ifx.textasvarchar"0"PHP_INI_ALL 
ifx.byteasvarchar"0"PHP_INI_ALL 
ifx.charasvarchar"0"PHP_INI_ALL 
ifx.nullformat"0"PHP_INI_ALL 

PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
ifx.allow_persistent boolean
持続的な Informix 接続を可能とするかどうか。
ifx.max_persistent integer
プロセス毎の持続的 Informix 接続の最大数。
ifx.max_links integer
持続的接続を含むプロセス毎の Informix 接続の最大数。
ifx.default_host string
ifx_connect() または ifx_pconnect() において、ホストが指定されない 場合のデフォルトのホスト。 セーフモード では適用されません。
ifx.default_user string
ifx_connect() または ifx_pconnect() において、 ユーザが指定されない場合のデフォルトのユーザ。 セーフモード では適用されません。
ifx.default_password string
ifx_connect() または ifx_pconnect() において、 パスワードが指定されない場合のデフォルトのパスワード。 セーフモード では適用されません。
ifx.blobinfile boolean
blob カラムをファイルに返したい場合には TRUE を指定します。 メモリ内に返したい場合には FALSE を指定します。 ifx_blobinfile_mode() により、実行時にこの設定を 上書きすることができます。
ifx.textasvarchar boolean
select 文において TEXT カラムを通常の文字列として返したい場合は TRUE を指定し、blob id パラメータを使用したい場合は FALSE を指定します。 ifx_textasvarchar() により、実行時にこの設定を 上書きすることができます。
ifx.byteasvarchar boolean
select 文において BYTE カラムを通常の文字列として返したい場合は TRUE を指定し、blob id パラメータを使用したい場合は FALSE を指定します。 ifx_byteasvarchar() により、実行時にこの設定を 上書きすることができます。
ifx.charasvarchar boolean
取得時に CHAR カラムから末尾の空白を取り除きたい場合に TRUE を指定してください。
ifx.nullformat boolean
リテラル文字列 "NULL" として NULL カラムを返したい場合に TRUE、 空の文字列として返したい場合は FALSE を指定してください。 ifx_nullformat() により、実行時にこの設定を 上書きすることができます。

リソース型


定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
IFX_SCROLL (integer)
IFX_HOLD (integer)
IFX_LO_RDONLY (integer)
IFX_LO_WRONLY (integer)
IFX_LO_APPEND (integer)
IFX_LO_RDWR (integer)
IFX_LO_BUFFER (integer)
IFX_LO_NOBUFFER (integer)

目次

ifx_affected_rows — クエリで変更された行の数を得る
ifx_blobinfile_mode — 全ての select クエリに関するデフォルトの BLOB モードを設定する
ifx_byteasvarchar — デフォルトのバイトモードを設定する
ifx_close — Informix 接続を閉じる
ifx_connect — Informix サーバへの接続をオープンする
ifx_copy_blob — 指定した BLOB オブジェクトを二重化する
ifx_create_blob — BLOB オブジェクトを作成する
ifx_create_char — 文字オブジェクトを作成する
ifx_do — 事前に準備された SQL 文を実行する
ifx_error — 直近の Informix コールのエラーコードを返す
ifx_errormsg — 直近の Informix コールのエラーメッセージを返す
ifx_fetch_row — 行を連想配列として取得する
ifx_fieldproperties — SQL フィールドプロパティのリスト
ifx_fieldtypes — Informix SQL フィールドのリスト
ifx_free_blob — BLOB オブジェクトを削除する
ifx_free_char — 文字オブジェクトを削除する
ifx_free_result — クエリに関するリソースを解放する
ifx_get_blob — BLOB オブジェクトの内容を返す
ifx_get_char — 文字オブジェクトの内容を返す
ifx_getsqlca — クエリ実行後、sqlca.sqlerrd[0..5] の値を得る
ifx_htmltbl_result — クエリ結果の全行を HTML テーブルにフォーマットする
ifx_nullformat — 取得する行のデフォルトの返り値を設定する
ifx_num_fields — クエリのカラム数を返す
ifx_num_rows — クエリから既に取得された行の数を数える
ifx_pconnect — 持続的 Informix 接続をオープンする
ifx_prepare — SQL 文を実行用に準備する
ifx_query — Informix クエリを送信する
ifx_textasvarchar — デフォルトのテキストモードを設定する
ifx_update_blob — BLOB オブジェクトの内容を更新する
ifx_update_char — 文字オブジェクトの内容を更新する
ifxus_close_slob — SLOB オブジェクトを削除する
ifxus_create_slob — SLOB オブジェクトを作成し、オープンする
ifxus_free_slob — SLOB オブジェクトを削除する
ifxus_open_slob — SLOB オブジェクトをオープンする
ifxus_read_slob — SLOB オブジェクトから n バイト読みこむ
ifxus_seek_slob — 現在のファイル位置またはシーク位置を返す
ifxus_tell_slob — 現在のファイルまたはシーク位置を返す
ifxus_write_slob — SLOB オブジェクトに文字列を書きこむ

Informix 関数 (PDO_INFORMIX)

導入

PDO_INFORMIX は、PHP から Informix データベースへのアクセスを可能にするための PHP Data Objects (PDO) インターフェース を実装したドライバです。

インストール手順

PDO_INFORMIX 拡張モジュールをビルドするには、PHP と同じシステムに Informix Client SDK 2.81 UC1 以降がインストールされている必要があります。 Informix Client SDK は、» IBM Informix Support Site で入手できます。
PDO_INFORMIX は » PECL 拡張モジュールです。 そのため、PDO_INFORMIX 拡張モジュールをインストールするには 章 7. PECL 拡張モジュールのインストール の手順に従います。 Informix Client SDK ヘッダファイルおよびライブラリの場所を指定するため、 次のように configure コマンドを実行します。

   bash$ ./configure --with-pdo-informix=/path/to/SDK[,shared]

  
configure コマンドのデフォルトは、 環境変数 INFORMIXDIR の値となります。

スクロール可能なカーソル

PDO_INFORMIX は、スクロール可能なカーソルをサポートしています。 しかし、デフォルトでは有効になっていません。 スクロール可能なカーソルのサポートを有効にするには、 odbc.ini での対応する ODBC 接続設定で ENABLESCROLLABLECURSORS=1 を設定するか、 DSN 接続文字列に EnableScrollableCursors=1 句を指定しなければなりません。

目次

PDO_INFORMIX DSN — Informix データベースに接続する

Informix

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/04/19 09:15 UTC 版)

インフォミックス
Informix Corporation
ロゴ
種類 株式会社
設立 1980年
廃止 2001年
業種 ソフトウェア
テンプレートを表示

Informix Corporation(インフォミックス コーポレーション)は、かつてアメリカ合衆国にあったソフトウェア企業である。関係データベース管理システム (RDBMS) 製品群Informixを開発したが、経営不振により2001年にIBMに買収された[1]

歴史

1980年: 草創期

ロジャー・シップル(Roger Sippl)とローラ・キング(Laura King)は、S-100バスコンピュータメーカーであるクロメンコに勤務していた。そこで報告書作成ソフトウェアのための ISAM技術に基づいた小型の関係データベースの開発に従事した。

シップルとキングは1980年にクロメンコ社を辞め、Relational Database Systems (RDS)を設立した。最初の製品Marathonは彼らがクロメンコで開発したシステムの16ビット版であり、ザイログの初期のマイクロプロセッサ向けのUNIX (Onyx) 上で動作した。

彼らは成長しつつある関係データベース管理システム (RDBMS) 市場に注目し、1981年にInformix (INFORMation on unIX)をリリースした。これには独自の言語 Informer が含まれていた。また、データを抽出して読みやすい報告書を作成するサブシステムACEも付属していた。画面入力フォーム作成ツールPERFORMもあり、ユーザーが対話的にデータベースとやりとりすることができた。この製品の最終バージョンは3.30で、1986年にリリースされた。

1985年、新たなSQLベースのクエリエンジンがINFORMIX-SQL (ISQL) バージョン1.10の一部としてリリースされた。もちろんACEとPERFORMのSQL対応版も含まれている。ISQLと以前のInformixの最大の違いは、データベースアクセスコードをクライアントコードと完全に分離した点である。これがクライアント・サーバ型のデータベースシステムへの布石となった。

1980年代前半を通してInformixは市場で優位に立つことはなかったが、1980年代中ごろにはUNIXとSQLの組合せが人気となり、情勢が変わってきた。1986年には株式公開にこぎつけ、社名をInformix Softwareに変更した。当時の製品はINFORMIX-SQLバージョン2.00と INFORMIX-4GL 1.00であり、どちらもデータベースエンジンと開発ツールを含んでいる(I4GLはプログラマ向け、ISQLは非プログラマ向け)。

その後も新製品のリリースが続き、新たなクエリエンジンを使ったINFORMIX-Turboがリリースされた。TurboはISAMよりマルチユーザー性能が優れたRSAM技術を使っている。1989年、バージョン4.00製品がリリースされ、TurboはINFORMIX-OnLineと改称(オンライン状態でユーザーが使用中にデータベースバックアップが可能)、従来のC-ISAMベースのサーバ機能(ISQLとI4GL)はツール群と分離され、INFORMIX-SE (Standard Engine) と改称された。Informix OnLineのバージョン5.00は1990年末にリリースされた。これには2相コミットストアドプロシージャによる分散トランザクション機能が含まれている。

1988年: Innovative Software 買収

1988年、InformixはDOSおよびUNIX向けのオフィスソフトのメーカーInnovative Softwareを買収した。特にWingZというMacintosh表計算ソフトが有名であった。

WingZは高度なGUIで巨大な表が使え、HyperScript と呼ばれるHyperCard風の言語でプログラミング可能であった。最初のリリースは好評で、Microsoft Excelに次ぐ2位のシェアを獲得した。1990年、WingZは主にUNIX系OS向けにいくつかのプラットフォームに移植され始めた。このころ、多くの金融機関は大型の金融モデルを計算するためにパーソナルコンピュータよりも強力なシステムを必要としており、UNIXワークステーションがその目的で使われ始めたのであった。そのため、ある期間WingZはこのニッチ市場で成功を収めた。

しかし、サーバ向けでないソフトウェア市場に対する全体的な理解不足から、開発やマーケティングのリソースが不足するようになった。1990年代初めWingZは競争力を失い、Informixはこれを1995年に売却した。また、ライセンスはクラリスに売却され、そこからGUIを改良してClaris Resolveが生まれた。

1994年: 動的スケーラブルアーキテクチャ

オフィスソフトで失敗し、Informixは再度データベースサーバ市場に注力するようになった。1994年、シークエント・コンピュータとの協業でInformixはバージョン6.00データベースサーバをリリースした。その目玉となった機能が動的スケーラブルアーキテクチャ (DSA) である。

DSAは製品のエンジン中核部を大幅に刷新し、垂直および水平の並行性をサポートするもので、シークエントが得意とした対称型マルチプロセッシング向きのマルチスレッド型コアを採用していた。この動きにサン・マイクロシステムズヒューレット・パッカードも追随した。これにより業界でもトップレベルのスケーラビリティを備え、OLTPにもデータウェアハウスにも対応可能となった。

現在はInformix Dynamic Server (IDS) として知られるこの製品は 1994年にバージョン7がリリースされた。当時、ちょうどUNIXでは対称型マルチプロセッシングが一般化しつつあった。バージョン7は当時の競合他社製品より進んでおり、性能ベンチマークでも常に勝っていた。その結果、Informixは1997年までにサイベースを押しのけ、業界2位となったのである。

バージョン7の成功により、Informixは中核部分の設計を2段階とし、従来からの延長をXMP (eXtended Multi Processing)、より大型のシステム向けをXPS (eXtended Parallel Server) として、バージョン8をリリースした。XPSはデータウェアハウスやクラスター上のデータベースを指向している。

1995年: Illustra 買収

1995年、Informixはオブジェクト関係データベース (ORD) に着目し、Illustraを買収した。Illustraはマイケル・ストーンブレーカーPostgres開発チームが作ったもので、データベースとオブジェクトを関連付ける各種機能を備え、多くのプロジェクトでプログラミングにかかる時間を劇的に改善できる機能が備わっていた。IllustraにはDataBladesと呼ばれる新たなデータ型をサーバに導入できる機能があった。これらの機能がSQLが時系列データやマルチメディアデータを扱う際の問題への解決策を与えた。Informixはこれらの機能を7.x OnLine製品に取り入れ、Informix Universal Server (IUS) と名づけた(また、通常バージョン9と呼ばれている)。

V8 (XPS) と V9 (IUS) は1996年にリリースされ、Informixは3大データベース企業(他はオラクルサイベース)の中でいち早くオブジェクト関係データベースをサポートすることとなった。特にDataBladesは注目され、人気となり、即座に各プラットフォームに移植されていった。他社はこの動きにあわてた。オラクルは追加パッケージとして時系列サポートを1997年に行い、サイベースはサードパーティーに解決策を求めた。

1997年: 経営問題

技術的には成功したものの、マーケティングと企業運営での失敗が影を落とした。1997年4月1日、Informixは収益が予測より1億ドル少ないことを公表した。この時点がInformixの成長の最高点だった。技術的には進化を続けたものの、1997年のCEO解任に端を発した経営陣のごたごたにより、会社は勢いを失っていった。

2001年: その他の買収

2000年、Informixに起きた出来事はもはや技術革新の話ではなかった。3月、Informixは、それまでも何度も合併を繰り返してきたArdent Softwareを買収した。これにより、多次元型エンジンUniVerseとUniDataが製品系列に加わった。他にもInformix以外のエンジンとしてデータウェアハウス向けのRed Brick、Javaで書かれたCloudscapeなどもあった。

6月、Ardentの前CEO James D. FoyがInformixのCEOに就任し、彼はInformixを買収の対象として魅力的になるよう改編していった。大きな変更として、全てのデータベースエンジン技術とアプリケーションおよびツールを分離した。

2001年、IBMはInformixを買収し、そのデータベース技術とブランドと将来の開発計画と10万を超える顧客ベースを入手した。アプリケーションおよびツールは買収には含まれず、Ascential Softwareという会社になった。

2005年5月、IBMはAscential Softwareの買収も完了した。

2002年: 経営問題の余波

2002年11月、1997年に解任された元CEOフィリップ・ホワイトは連邦大陪審に起訴され、セキュリティ、メール詐欺など8つの訴因で告発された。13ヵ月後、司法取引により米国証券取引委員会への偽の報告書提出の罪を認めた。

2004年5月、司法省はホワイトが2ヶ月間連邦刑務所に収監されたことを発表した。また、罰金は1万ドルで、2年間保護観察下におかれ、300時間の公共サービス従事が義務付けられた。この発表では、これらが株主が被った損害を考慮した罰ではないことを強調した。

Informixでヨーロッパを任されていたWalter Königsederも同様に起訴されたが、ドイツ在住であったため、引渡しが行われなかった。

2005年11月、Informixと フィル・ホワイトの事の顛末を記した本が出版された。

参考文献

  1. 記事のアーカイブ HP's Secret Software Weapon出典



固有名詞の分類


英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「Informix」の関連用語

Informixのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Informixのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2026 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのInformix (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS