1

ユーザーが PDF または Microsoft PowerPoint ドキュメントを「アップロード」できるようにする機能をアプリケーションに実装しようとしています。これにより、アプリケーションはビューアーで他のユーザーが利用できるようにします (そのため、「ダウンロード」することはありません)。 「名前を付けて保存..」の意味で)。

データベース列に任意のバイナリ情報を保存および取得する方法は既に知っていますが、これはアプリケーションの一般的に使用される機能であるため、ソリューションが非常に大きなデータベース テーブルにつながるのではないかと心配しています (顧客の 1 人が配置したいと考えているため)。 PowerPoint ドキュメントのビデオ)。

Oracle で「ディレクトリ」オブジェクトを作成する方法があることは知っていますが、この機能を使用して、データベース サーバーの別の場所に保存されているバイナリ ファイルを格納および取得する方法はありますか?

それとも、データベースのサイズについて過度に偏執的ですか?

(完全を期すために、アプリケーションは、Oracle 10g への CoreLab / DevArt OraDirect.Net ドライバーを使用する .Net WinForms です)

4

6 に答える 6

5

いくつかのオプション:BLOB列を、独自のストレージ特性を持つ独自のテーブルスペースに配置できます。ID列によって他のテーブルにリンクされた独自のテーブルにBLOBを格納できます。どちらの場合でも、提案したように、列をBFILEとして定義できます。これは、実際のファイルがデータベースの外部のディレクトリに保存されることを意味します。懸念されるのは、BFILE LOBがトランザクションに参加せず、データベースの残りの部分で回復できないことです。

これはすべて、23ページから始まるOracle10gR2SQLリファレンスの第2章で説明されています。

于 2008-09-15T13:42:06.293 に答える
1

それはあなたが非常に大きいと考えるものに依存すると思います。

それは実際にはユースケースに依存します。ドキュメントがめったにアクセスされない場合は、データベースに配置することで問題ありません(たとえば、データベースを使用して「無料」のバックアップを取得できるという利点があります)。

これらが何度もヒットするファイルである場合は、それらをディスクに直接配置して場所を保存するか、(帯域幅が非常に広い場合は)MogileFSのようなものを調べる方がよい場合があります。

誰もあなたにこれに対して「はい」または「いいえ」の答えを与えることはできません。

于 2008-09-15T13:44:03.810 に答える
1

通常のLOB列タイプを使用して、そのフィールドのストレージパラメータを設定し、別のテーブルスペースに配置することができます。大量のデータがスローされるのを処理できるテーブルスペースをどこかに作成すると、影響を最小限に抑えることができます。

ディスク使用量について真剣に妄想するために、テーブルスペースをそのようにマークすることによってさらに圧縮することができます。次のようなもの:

CREATE TABLESPACE binary_data1 DATAFILE some_san_location DEFAULT COMPRESS STORAGE(...)

于 2008-09-15T13:45:30.280 に答える
1

私の経験では、添付ファイルのファイル名を含む単純なVARCHAR2フィールドの方が、より優れた簡単なソリューションです。ファイルシステムのサイズは、データベースのサイズよりも管理がはるかに簡単です。

于 2008-09-15T13:45:54.507 に答える
1

データは、DB の内部であろうと、(サーバー) アクセス可能なファイル パスへのリンクを保存するだけであろうと、どこかに存在する必要があります。

過去に単純な LOB フィールドを使用したことがありますが、うまく機能しているように見えました。データを DB 内に保持すれば、少なくともバックアップの煩わしさを抑えることができます。バックアップするデータが大量にあるかもしれませんが、復元すると、すべてのデータがそこにあることになります。バイナリを分割すると、バックアップ対象に注意しないと、DB が破損したり、データが失われたりする可能性があります。

于 2008-09-15T13:49:48.427 に答える
1

リンクまたはリンクの構築に使用できる ID のみを保存する理由の 1 つは、通常 Oracle DB に使用するストレージがかなり高価であることです。大きなファイルが多数ある場合は、通常、それらを安価なディスク アレイに配置する方がはるかに費用対効果が高くなります。

于 2008-09-15T14:20:25.920 に答える