ファイル共有型 データベース・システム

一つのアプリケーションプログラム中にすべての機能を持ちますが、データベースファイルを、ファイルサーバ上の共有ディレクトリ上に置いて、ネットワーク上に分散する複数のPC(端末)から、複数のユーザによる同時アクセスを受け付けるものです。
メリット
- 同時に複数のPCから複数のユーザが一つのデータベースにアクセスできる
 - デスクトップ型データベースから比較的簡単に移行できるため、手っ取り早く、マルチユーザのデータベースアプリケーションを構築できる
 - ファイルサーバは、とにかく電源を入れっぱなしにしておき、時々バックアップを取ればよいだけで、管理の手間がかからない
 - ファイルサーバのディスクを定期的にバックアップすればよく、データのバックアップ運用が楽
 - 開発者にとっては、デスクトップデータベースに似た要領で開発できる
 
デメリット
- データベースアプリケーションと、ファイルサーバの間の通信量がかなり大きく、ネットワーク回線がボトルネックとなるため、同時に実データの読み書きを行うユーザ数が増えると、システム性能が劇的に低下する
 - そのため、数十人~百数十人程度のクライアント数が限界
 - 複数のユーザが使用するアプリケーションのバージョンをそろえなければならず、アプリケーション配布の手間が発生する
 - 多数のユーザ端末のどこかで障害が発生すると、それが引き金となって全システムがダウンしたり、最悪の場合、一部または全部のデータが破壊されたり、修復を要する状態に陥る危険がある
 
コメント
デスクトップデータベース並みの手軽さで、マルチユーザ・データベース・システムを実現できるのがこの形式です。安上がりに開発できることに加え、後に紹介するクライアント・サーバ型のシステムと比べると、とにかく障害さえ起こらなければ管理の手間がかからないのが魅力です。システムが特定の部門のユーザのみに利用されるなど、将来的にも比較的閉じた環境で利用されることがわかっている場合には、適切なアーキテクチャです。
しかしながら、システム規模が大きくなるにつれて、このアーキテクチャは急速に限界を露呈してきますしてきます。将来的に事業拡張によってユーザ人員が複数の拠点に散らばることが分かっている場合には、目先の手軽さと安い構築コストに惑わされないようにしたいものです。
なぜネットワーク回線がボトルネックになるのか
クライアントアプリケーションは、OSのファイル共有サービスを通じてデータベースにアクセスします。OSのファイルシステムは、ファイルを単なるデータの塊として扱うだけだり、アプリケーションからの「どのファイルの、先頭から何バイト目の位置から、何バイト分を下さい」という要求を処理しているに過ぎません。したがって、データベースを検索するに際して、アプリケーションプログラムはデータベースファイルの一定の領域をしらみつぶしにスキャンせねばなりません。目的のデータが見つからない場合にも、データを探す過程でかなりのデータ通信が発生してしまいます。(通常は、インッデックスページをスキャンしてから、必要に応じてデータページをスキャンします)
なぜファイルサーバ型のデータベース・システムは障害に弱いのか
厳密にいって、データベースが破壊されたり、おかしな状態になってしまう確率は、どのようなアーキテクチャを取ろうともゼロにはできません。あるプロセスがデータベースファイルを更新している際中に、そのプロセスが強制終了させられたり、そのプロセスが動いているマシンの電源が突然の停電や、事故によって切断されるような場合には、データベースファイルの安全を完全に保証することは難しいのです。
クライアントPCには通常、業務用データベース・アプリケーションのほかにも、ExcelやWordなど他のアプリケーションもインストールされていて、日常の文書作成などの作業に使われていることが多いことも問題です。なぜなら、これらの他のアプリケーションのバグによって、PC全体が凍りついたり、OSが不安定な状態に陥ってしまう可能性があるからです。予期せぬマシンのリセットは、時として悲惨な結果を生みます。
多数のクライアントマシンが接続されているシステムの場合、どこかのマシンで障害が起きる確率に、クライアントの台数が掛け合わさって、その分全体としての障害の確率が高くなってしまうのです。特に、Delphi開発者の皆さんがよく使う BDE/Paradoxは、環境設定が難しく、障害にも実に弱いので、はっきり言ってお勧めできません。
想定されるアプリケーションと、実装例
| 中規模事業所・部門レベルシステム向けのデータベースシステム (Accessによるマルチユーザ・システムの注意点)  | 
|
|---|---|
| ユーザ数 | 数人~百人程度 | 
| ネットワーク | LAN | 
| DBMS | MS-Access | 
| クライアント | Accessのフォームおよびレポート機能を利用 | 
| 開発環境 | Access VBA | 
| ライセンスコスト | ユーザ数の分のAccessライセンス 数万円/ユーザ | 
| システム構築コスト | 数十万円~二・三百万円ぐらい? | 
ユーザの中にシステム構築スキルのある人がいて、その人が開発者である場合には、比較的手軽に構築でき、使っていく過程で少しづつカスタマイズしていくことで、使いやすいシステムになるでしょう。ただし、VBAプログラム+Accessオブジェクトの集合体は、保守しにくいものになる恐れがあるため、アプリケーション機能が複雑になるにつれて、他の誰にもメンテナンスできないものになってしまうかも知れません。
また、すべてのユーザの端末にAccessがインストールされているということは、セキュリティの設定を誤ると、誰にでもデータベースアプリケーションの設計や、アプリケーションデータ自体を操作できてしまうことを意味するので、慎重なセキュリティ設定が必要です。
最後にお金の話です。あなたの会社が、すでにOffice Professionalのライセンスを大量に購入してしまったのであればよいのですが、一つのライセンスで何人ものユーザが使っているとすれば、それは違法状態なのです。そして、合法的に使うことを考えると、Accessのライセンスはかなり高価です。
| 中規模事業所・部門レベルシステム向けのデータベースシステム | |
|---|---|
| ユーザ数 | 数人~百人程度 | 
| ネットワーク | LAN | 
| DBMS | DBISAM | 
| クライアント | Delphiで作成 | 
| 開発環境 | Borland Delphi | 
| ライセンスコスト | Delphi Professional が6万円代 + DBISAMが約3万円 | 
| システム配布コスト | 無料 | 
弊社お勧めのソリューションです。DBISAMはDelphiアプリケーションにデータベース機能を付加するコンポーネントであり、開発者ライセンスを購入することで、SQLデータベース機能をビルトインしたアプリケーションを手軽に構築し、無制限に配布することが可能です。
ファイル共有型のアプリケーションの作成は、デスクトップ型のアプリケーションと同様に行え、アプリケーション実行時の環境設定も容易です。
アプリケーションユーザ向けのインタフェースは、開発者・管理者向けのインタフェースと完全に切り離して作成・配布することになるため、データベースの安全も守られます。
(※手前味噌ですが、DBISAMについてはこちらをご覧下さい)
