この章の内容は次のとおりです。
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は、DBFSのコアに位置するOracle RDBMSのPL/SQLインタフェースです。ユーザー定義記憶域を含む異なるタイプの記憶域をサポートできるプログラム・インタフェースを含みます。
DBFS SecureFilesストアは、ファイルシステム・データを格納するためのSecureFiles LOB列を含む表を利用するDBFSコンテンツ・ストアです。POSIXに類似した機能を実装します。
DBFS階層ストアは、Oracle Recovery Manager(RMAN)でサポートされている任意のテープ・ストレージ単位やクラウド・ストレージ・システムへのファイルの書込みが可能なDBFSコンテンツ・ストアです。現在のところ、サポートされているクラウド・ストレージ・システムはAmazon S3のみです。
DBFSには、dbfs_client
と呼ばれる各ファイルシステム・クライアント・マシンで実行されるクライアント・コンポーネントがあります。dbfs_client
は、コマンド・インタフェースを提供し、ネットワーク上の任意のホストからデータベースとの間で簡単にファイルをコピーできます。これは、シェル・ユーティリティls
およびrcp
と類似する方法で、リストやコピーなどの簡単なファイルシステム・コマンドを実装します。コマンド・インタフェースにより、DBFSのOSマウントを必要とせずにデータベースへの直接接続が確立されます。
Linuxの場合、dbfs_client
には、データベースに格納されたファイルへの透過的なアクセスを使用してファイルシステムのマウント・ポイントを実装するFUSE
(Filesystem 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パッケージ」を参照してください。