この章の内容は次のとおりです。
Oracle Databaseは一般に、CAD、医療イメージ、請求書イメージ、ドキュメントなど、広範なデータベース・アプリケーションと密接に関連するファイルの格納のために使用されています。アプリケーションでは、データベースへのファイルの格納に、SQL標準データ型のBLOB(およびCLOB)が使用されます。Oracle Databaseでは、従来のファイルシステムよりはるかに優れたセキュリティ、可用性、堅牢性、トランザクションおよびスケーラビリティが提供されます。ファイルがデータベースに格納されると、Data Guardを使用したファイルのバックアップ、障害リカバリ・サイトへの同期化が実行され、データベースのリレーショナル・データとともにリカバリされます。このように、データベースにファイルを格納すると、多くのアプリケーションが効果的なオプションとなります。
Oracle Database 11gでは、Oracle SecureFiles LOBが導入されました。SecureFiles LOBでは、従来のファイルシステムのパフォーマンスに匹敵する高いパフォーマンスのファイル・ストレージが可能です。また、SecureFiles LOBを使用すると、ファイルの圧縮、重複除外および暗号化の拡張機能がサポートされます。SecureFiles LOBでは、BLOB(およびCLOB)への下位互換性が維持され、BLOBに対して記述されたアプリケーションは、前述の機能を含めてSecureFiles LOBに対しても透過的に動作します。
データベース・ファイルシステム(DBFS)は、ファイルを格納するデータベースの利点と、リレーショナル・データを効率的に管理するデータベースの強度を活用して、データベースに格納されたファイルに対する標準のファイルシステム・インタフェースを実装します。このインタフェースを使用すると、BLOBおよびCLOBプログラム・インタフェースを使用するよう特に記述されたプログラムに制限されずに、データベースにファイルを格納できるようになります。これで、ファイルに対して動作する任意のオペレーティング・システム(OS)プログラムを使用して、データベース内のファイルに透過的にアクセスできるようになります。たとえば、ETL(抽出、変換およびロード)ツールは、ステージング・ファイルを透過的にデータベースに格納します。
Oracle Database File System(DBFS)により、データベース表に格納されるファイルおよびディレクトリの上部に、標準ファイルシステム・インタフェースが作成されます。DBFSは、ローカル・ファイルシステムに類似した共有ネットワーク・ファイルシステムを提供する点で、NFSに似ています。NFSと同様、サーバー・コンポーネントおよびクライアント・コンポーネントがあります。
DBFSでは、サーバーはOracle Databaseです。ファイルは、SecureFiles LOBとしてデータベース表に格納されます。PL/SQLプロシージャのセットにより、作成、オープン、読取り、書込みおよびリスト・ディレクトリなどのファイルシステム・アクセスのプリミティブが実装されます。データベース内のファイルシステムの実装は、DBFSコンテンツ・ストアと呼ばれます。DBFSコンテンツ・ストアにより、すべてのデータベース・ユーザーは、クライアントによってマウント可能な1つ以上のファイルシステムを作成できます。それぞれのファイルシステムには、ファイルシステム・コンテンツを保持する専用の表があります。
DBFSコンテンツAPIは、Oracle RDBMSのPL/SQLインタフェースで、DBFSのコアにあります。これには、ユーザー定義ストレージなどの様々なタイプのストレージのサポートを可能にするプログラム・インタフェースが含まれています。
DBFS SecureFilesストアは、ファイルシステム・データを格納するためのSecureFiles LOB列を含む表を利用するDBFSコンテンツ・ストアです。POSIXに類似する機能が実装されます。
DBFS階層ストアは、Oracle Recovery Manager(RMAN)でサポートされている任意のテープ・ストレージ単位やクラウド・ストレージ・システムへのファイルの書込みが可能なDBFSコンテンツ・ストアです。現在のところ、サポートされているクラウド・ストレージ・システムはAmazon S3のみです。
また、DBFSには、各ファイルシステム・クライアント・マシンで実行されるdbfs_clientというクライアント・コンポーネントがあります。dbfs_clientは、ネットワーク上のすべてのホストで、データベースからまたデータベースに、ファイルを簡単にコピーできるようにするコマンド・インタフェースを提供します。これにより、シェル・ユーティリティのlsとrcpに類似した方法で、listやcopyなどの単純なファイルシステム・コマンドが実装されます。コマンド・インタフェースにより、DBFSのOSマウントを必要とせずに、データベースへの直接接続が作成されます。
Linuxの場合、dbfs_clientには、FUSE(File System in User Space)カーネル・モジュールを利用するマウント・インタフェースがあります。このインタフェースは、データベースに格納されたファイルへの透過的なアクセスを提供し、Linuxカーネルへの変更を必要としない、ファイルシステム・マウント・ポイントを実装します。FUSEカーネル・モジュールからの標準のファイルシステム・コールを受けて、それをDBFSコンテンツ・ストア内のPL/SQLプロシージャに対するOCIコールに変換します。
また、DBFSストア内のファイルは、PL/SQLインタフェースを介して直接データベース・アプリケーションでアクセスできます。PL/SQLインタフェースにより、データベース・トランザクションと読取り一貫性が、リレーショナルおよびファイル・データをまたいで可能になります。
DBFSでは、DBFSリンクを使用して既存の表から他のストレージにSecureFilesを移行できます。SecureFiles LOB DBFSリンクの詳細は、「SecureFiles LOBおよびDBFS用のPL/SQLパッケージ」を参照してください。