2016-05-28 4 views
1

データベースの外部にあるBLOBをファイルに保存したいのですが、ランダムなBLOBのデータであり、ファイルに直接リンクされていません。ブロブは単なる生のデータであるので、私はちょうどそのようなfileLinkという列か何かを含めることはできませんデータベース外のBLOBデータを管理するためのJavaフレームワーク

id 
name 
comments 
... 

だから例えば私は、次の列を持つDataと呼ばれるテーブルを持っています。私はしかし、データベースの外にそれを保存したい。 3.datというファイルを作成したいと思っています.3はその行エントリのID番号です。この設定で唯一のことは、IDがフラットなフォルダ構造であり、OSファイルの問題があるため、メインフォルダがすぐに多数のファイルを持つようになることです。また、データがグループ化されたり構造化されたりすることはありません。

ブロブを保存して管理できるようにするJavaフレームワークまたはライブラリがありますか?MyBlobAPI.saveBlob(id, data);のような処理をしてからMyBlobAPI.getBlob(id)などを実行できますか?言い換えれば、すべてのファイルIOが私のために処理される場所ですか?

+0

多くのアプリは、このように機能します。なぜ具体的にこれが欲しいのですか? –

+0

データファイルを別のサーバーに保存して、必要に応じて呼び出すことができ、格納方法や管理方法、同期の問題などを気にする必要はありません。 –

答えて

0

私は、ホームロールソリューションはあなたのテーブルにfileLinkカラムのようなものを含み、あなたのapiは最初の保存時にファイルを作成し、更新時にそのファイルを書き込むと思います。

これを行うコードベースについてはわかりません。 javaのためのメモリファイルシステムを提供する束があります。しかし、Javaオブジェクトをファイルに書き込んだり読み込んだりするのは、ほんの数行のコードです。

あなたはファイルシステムの制限を自分で処理する必要があります。あなたがbtrfsやzfsのような現代的なファイルシステムの限界を打ち砕くことは疑いがありますが。 FAT32はディレクトリごとに65Kファイルに制限されています。しかし、最後の世代のファイルシステムでさえ、ディレクトリあたり40億個のファイルをサポートしています。

したがって、2つの機能を持つクラスを作成してください。オブジェクトをファイルにシリアル化するもの。その名前に固有のキーが与えられています。また、そのキーでオブジェクトを逆シリアル化する別の方法もあります。最新のファイルシステムを使用している場合は、リソースが不足することはありません。

+0

ブロブを使用しない理由は、 blobは大きすぎるので、大量のblobデータをデータベースに格納することは決して良い考えではありません。理由は何百万行があればどうなりますか? 100万個のファイルを1つのディレクトリに保存する必要はありません; –

+0

データベースを使用してブロブを保存するのは簡単です。http://programmers.stackexchange.com/questions/150669/is-it- a-bad-practice-to-store-large-files-10-mb-in-aデータベース –

+0

別のStackoverflowの回答の提案はデータベースにブロブを格納するのが悪いです:http://stackoverflow.com/questions/3748/ #3756 –

1

説明したようにBLOBを実装する適切なデータベースを使用し、JDBCを使用します。あなたは実際に別のAPIではなく特定の実装を探しています。ブロブの効果的な保管を担当するのはDBまでです。

+0

blobをデータベースに保存するのは必ずしも良いことではありません:http://stackoverflow.com/questions/3748/storing-images-in-db-yea -or-nay#3756 –

+0

DBはファイルをファイルとして保存する場合があります。 Oracleにはこのためのプラグインがあります。特定のディレクトリ構造を使用してファイルシステムパスを使用してBLOBにアクセスすることができます。 –

0

これまでの枠組みはありません。私が見つけた最も近いものはHadoop's HDFSでした。

以下の答えに従ってBLOBをデータベースに入れるだけのアドバイスは必ずしも得策ではありません。時にはそれは良いことであり、時にはそうではありません。本当にあなたの状況に依存します。ここではそのような議論にはいくつかのリンクです:

私はいくつかの追加本当に良いのリンクを見つけたが、私はぶっきらぼうにそれらを思い出すことができません。特にStackOverFlowに1つありましたが、見つけられません。あなたがリンクを知っていると信じている場合は、それが正しいものであることを確認できるようにコメントに追加してください。

関連する問題