2016-07-26 11 views
2

複数の列を持つデータベースがあるとします。各列には多くの場合類似した値が多数あります。データベースはどのように冗長値を扱うのですか?

たとえば、「Description」という名前の列を持つことができます。値は「測定の説明です」とすることができます。この説明は、この列で最大1000000回発生する可能性があります。

私の質問はこのデータベースの設計を最適化する方法ではなく、データベースがそのような冗長な値をどのように処理するかです。これらの冗長な値は、(データベースの合計サイズに関して)完璧な設計と同じくらい効果的に格納されていますか?もしそうなら、値はどのように圧縮されますか?

答えて

2

唯一正しい答えは、データベースと構成によって異なります。このための銀の弾丸がないので。データベースによっては、各列の値を1回だけ格納する(一部の列ストアなど)がありますが、技術的に行う必要はありません。

一部のデータベースでは、DBMSに最適化を提案させることができます。そのような場合、文字列を参照するIDに文字列を縮小する既存の値のみを保持するENUMフィールドを提案する可能性があります。この「最適化」は、例えば、ENUMフィールドを適合させるためにフィールド記述に新しい値を追加する場合などの価格になります。

実際のユースケースに応じて、これらの最適化は何の価値もないか、データが頻繁に変更される(挿入や更新など)ショーストッパーですらあります。 dbmsは、実際にクエリを処理するよりも一意/重複を管理するために多くの時間を費やします。

圧縮の問題については、私が推測する設定とデータベースシステムによっても異なりますが、フィールドの種類によっても異なります。テキストデータを圧縮することができ、インデックスされていないテキストフィールドの場合、単純な圧縮アルゴリズムを使用する場合にはほとんど問題がないはずです。どのアルゴリズムがdbmsと構成に依存するのでしょうか?

具体的になっていなければ、それ以上の具体的な答えはありません。

+0

ありがとうございます。つまり、私の場合は追加の設定を適用する必要があります... – Ohumeronen

関連する問題