2011-07-10 8 views
1

私はそこに何百万ものレコードを持つデータベースを持っています。最高の可逆データベース圧縮技術です

テーブルは、2つの項目1]名2]ロケーション

を有する異なる名前を持つが、同じ場所は非常に場所属性に適用することができる任意の圧縮技術が存在する多くのレコードがありますか?

サポートされているデータベース名を使用して、様々な損失の少ない圧縮手法を提案することができます。

+0

[データベースの正規化](http://en.wikipedia.org/wiki/Database_normalization)はどうですか? – hammar

+0

なぜデータを圧縮しますか?あなたは実際に宇宙問題を抱えているのですか、あるいはサイズを早めに最適化しようとしていますか?成功すればどうなるか、データベースの場所をどのように照会するかを検討する必要があります。いずれにしても、ロケーションテーブルを用意して、代わりに参照を保存することは可能でしょうか?おそらく(ただし、チェックする必要があります)、int型の参照は、再利用される場所がたくさんある場合は、合計でより少ないスペースで済むでしょう。 –

+0

宿題のように見えます。 – Bytemain

答えて

4

Normalise your databaseLOCATIONSテーブルを用意し、最初のテーブルに外部キーを与えます。

65,535未満の別個の場所?元のテーブルのレコードあたり2バイトです。あなたが私に尋ねるとかなり良い圧縮。また、インデックス作成と比較を高速化します。

データはコードよりも重要です。まずデータを取得します。 デフォルトで可能な限り標準化する。デノマリズムは、(特定の、測定された、完全に帰属された)パフォーマンス問題または何らかの大きな原因を発見した後にのみ起こります。

+0

私のDBを標準化するためのクエリを書いてください – Vivek

+0

これはクエリではなく、最初にデータベースを作成する方法です。おそらく、「INSERT INTO locations SELECT FROM ...」(正確な構文を忘れています)、「UPDATEアドレスSET location_id =(SELECT id FROM locations ...」のような、移行に関連するクエリがいくつかあります。 – spraff

+0

@sam:テーブルにlat/lngペアを追加し、空間インデックスを使用することができます。 – Bytemain

0

空間インデックスを探したいとします。 siは2dの複雑さを1dの複雑さに減少させる。ヒートマップとツリーマップにsiが使用されています。それは四分木のように見えます。

+0

ハハハハッハーは、最初にあなたが完全にそのポイントを逃したと思っていました。もし場所が住所のような文字列なら私の答えを読んでください - 場所が緯度/経度または何かであれば、データを離散化する必要があります – spraff

+0

すみませんが、離散化で何を意味するかを詳しく説明できますか?離散的な関数の例?離散的な関数の空間インデックスですか?私は悪い日です – Bytemain

+0

はい、それは 'x'と' y'が連続的な値かもしれませんが、宇宙を半分に分割して"(x1、y1)は左側、(x2、y2)右の場合は、ポイントを区別するための1ビットの離散値があります。他の例としては、[ベクトル量子化](http://www.gamasutra.com/view/feature/3090/image_compression_with_vector_.php)、オクトリーアドレッシングなどがあります。リレーショナルデータベースはこれをネイティブに処理しませんが、BSPのパス"通常の整数として。 – spraff

関連する問題