2012-03-20 8 views
4

私はjava.util.BitSetという配列を持っていますが、私のデータベースには永続化したいのですが、それを行うには何が最善の方法か分かりません。 正確には、私が保存したいすべてのエントリに対してx*y true or false値を得ました。私はtought java.util.BitSetは、試してみるのは良い呼び出しですが、私は実際にどのように私はデータベースに格納することができます知っていない。データベースにBitSetの配列を格納する最も良い方法は?

私は、休止状態(注釈付き)のMySQLデータベースを使用しています。

これは私が私のマップを初期化する方法である:

Bitset[] map = new BitSet[x]; 
for (int i = 0; i < x; i++) { 
    map[i] = new BitSet(y); 
} 

アップデート:

あり、このデータセットには関係がなく、問題は、私はこれらの「2次元配列」のトンを持っているということですワンピースは360×180サイズです。

また、画像を作成しようとしましたが、モノクロのpbmファイルは簡単に作成できます。しかし、まだデータはデータベースに保存されておらず、保存された "イメージ"ファイルを処理するたびに残念だと思うし、ちょっと遅いです。

+0

どのようなクエリを実行しますか?あなたは今までどのようにi番目のビットを取得する気になりますか?それから私の返事が働く。すべてを一度にしたいのであれば、おそらく全体のブロブをデータベースに入れる必要があるでしょう。 – Adrian

+0

私はすべてのものを一緒にしたいと思っています。 ] ポジション。あなたの方法が私に適しているかどうかはわかりません。 しかし、もちろん、あなたの方法とmybeについて考えていても大丈夫です:)コメントをいただきありがとうございます! – Sorex

+0

あなたが探しているデータベースの速度に応じて、ビットを別々の方法で保存することができます(すべて一括して別々のビットクエリに最適化してください)。これは読書には最適です。多くの書き込みがある場合は、一貫性の問題にぶつかります。私の返事を編集させてください。私はちょうど何かを考えた – Adrian

答えて

2

あなたのデータベースには、intの列(またはそれと同等のもの)を含めることができます。

2列あり、各列が32ビットであると仮定した場合、 行1列1 32ビット、次に1列2列、次に32行、次に 行2列1に移動し、等々。

これらのビット間には何らかの関係がありますか? それはちょうど大きなダンプですか?

注:この技術を使用して、データをパック/圧縮して、必要なものと正確に一致しない可能性があります。

編集:私は生のブロブを格納し、あなたが生のブロブを持っている別のエンティティ(新しいテーブル以上の列) に格納することで修正ビットを追跡すると思ってい
、マッピングBitIndex:BitNewValueです。
このためのより適切なフレームワークは、map reduceです。 しかし、多くのビットが変更されると、このような管理が大きな頭痛になることがあります。

+0

私の質問は、いくつかの追加情報、コメントありがとう! – Sorex

関連する問題