TDBISAMSession
DBISAMが扱えるセッションのタイプは以下の通りです
- ローカルセッション
- リモートセッション
- LAN接続
- WAN接続(Internetなど)
TDBISAMSessionの位置付けについては概観のセクションで説明した通りです。ここでは、セッションを開く方法について説明します
ローカルセッションを開く
ローカルセッションの場合、TDBISAMSessionコンポーネントで設定すべきプロパティはあまりありません。最小限、以下のプロパティをセットすれば十分でしょう。
TDBISAMSession
property SessionName:TDBISAMDatabase/TDBISAMTable/TDBISAMQueryから参照される名称です
property PrivateDir:DBISAMがテンポラリファイルを書き出すディレクトリ。このプロパティが指定されていない場合、DBISAMはアプリケーションのカレントディレクトリに作業ファイルを書き出します。ファイルサーバによるデータベース共有を行う場合に、作業ディレクトリは必ずローカルマシンのディレクトリになるように設定してください。作業ディレクトリとして、ファイルサーバ上の共有ディレクトリが使われてしまうと、当然のこととながら性能が悪化し、また、作業ファイルの名前が重複した場合には予期せぬエラーが発生します。
property Active:このプロパティをTRUEにすると、セッションの接続が行われます。リモートセッションの場合はサーバに接続してユーザ認証が行われます
procedure Open:Active := Trueと同じ効果です
リモートセッションを開く (C/S版でなくても(一応)使えます)
SessionTypeプロパティを stRemoteにセットすることで、リモートのデータベースサーバに接続できるようになります。標準(Sigle-Tier)版にも、同時接続ユーザ数が5に限定されたDBISAM Serverがバンドルされており、自由に配布して使用することができます。C/S版を購入することで、接続ユーザ数の上限がなくなります。
TDBISAMSession
property SessionType:stLocal / stRemote で、セッションがローカルかリモートかを指定します
property RemoteType:rtLAN / rtInternet で、回線の性質を指定します。rtInternetを指定すると、パケットの往来回数が少なくなるように通信が最適化され、データ圧縮や、タイムアウト時間の調節がなされます。インタネットやWAN回線越しにサーバにアクセスする際に、RemoteTypeがrtLANのままだと、全く耐えがたいパフォーマンスになりますので、注意してください。10Mbps未満の回線ではrtInternetがよいかと思われます。
property RemoteAddress/RemoteHost:接続するサーバのIPアドレス/ホスト名を指定します。RemoteAddressとRemoteHostが両方設定された場合は、RemoteHostが優先されます。(もちろん、どちらか一方が設定されるのが普通です)
property RemotePort:接続先サービスのポート番号を指定します。通常デフォルト12001でよいでしょう。サーバの起動パラメータでポートを変えた場合にはその値を設定してください
property RemoteService:ポート番号の代わりにサービス名を与えて、WindowsのSERVICESファイルの定義を参照させることもできます。ポート番号とサービス名の両方が指定された場合はサービス名が優先されます。こちらは設定せず、RemotePortプロパティで設定する方が普通でしょう。
property RemoteUser:ログインユーザ名を指定します。大文字小文字は区別されません
property RemotePassword:パスワードを設定します。大文字小文字は区別があるので、CAPS Lockキーに注意。
(インストールした状態のDBISAM Server には、(ユーザ名, パスワード) = (Admin, DBAdmin) という管理者ユーザが登録されています)
property ForceBufferFlush:boolean:データをディスクに書き出すシステムコールを呼ぶ都度、OSのバッファをフラッシュして、確実にディスクに書き込むように設定します。性能は悪化しますが安全性が増します。(後述)
property OnStartUp: TNotifyEvent:セッションがOpenされる直前に起動されるイベントです。クエリーをOpenすることによって自動的にセッションが開かれるような場合に、このイベントの中でレジストリからログインユーザ名やパスワードを読み出して、セッションのプロパティをセットするなどの使い方が可能です。なお、OnStartUpイベントの中からセッションをOpenしたりActive:=Trueとしたりすると、無限ループになってしまうので気をつけてください。