2011-10-24 15 views
0

私はSQL Server 2008 R2です。一部の製品では季節の値がのデータベース構造を現在開発中です。SQL Serverで季節データベース値のアーカイブを処理する方法

季節ことで、私はそれらの値が顧客使用の観点から、特定の日付の後に有用ではないだろうということを意味します。しかし、これらの値は統計結果のために内部のものによって使用されます。

販売ウェブサイトでは、商品検索用の機能を追加し、私の目的の1つはこの検索をできるだけ最適化することです。 しかし、データベーステーブルの中でより多くの行、この検索は遅くなります。したがって、未使用の値をアーカイブすることを検討します。

SQL Serverのジョブで自動アーカイブを自動的に処理できます。問題はない。しかし、私はどのようにそれらの値をアーカイブする必要がありますか分からない。

私が思いつくことができる最良の方法は、同じデータベース内に同じ列で別のテーブルを作成してそこに置くことです。

例:

私のメインテーブル名がProductPricesあり、そこに主キーは、このデータベースに 定義されています。次に、別のテーブル ProdutcPrices_archiveを作成しました。このテーブルのプライマリキーフィールドは 、 ProdutPricesプライマリキー値以外はProductPricesテーブルと同じカラムを作成しました。私はそれが有用であるとは思わない その値(私は正しいと思いますか?)。内部使用のために

、私はUNIONと一緒 を2つのテーブルの値を置くことを検討(正しい方法ということですか?)

このデータベースは、長時間使用するためのものであり、最適な構造で設計する必要があります。私はここで長期的に何かを逃すかどうか分からない。

アドバイスをいただければ幸いです。

+0

"しかし、データベーステーブルの中の行が多いほど、この検索は遅くなるでしょう" - おそらく必ずしもそうではありません。あなたが記述するデザインは、テーブルへのすべてのアクセスが "製品"への外部キーを経由することを示唆しています。この場合、同じテーブルにさらに多くのデータを挿入することで、速度の低下に気づくことはほとんどありません。 パフォーマンスの問題があることを証明できるまで、このシナリオの最適化を開始することはありません。実際に予想されるよりも10倍多くのテストデータをデータベースに取り込み、測定したいと思います。 –

+0

自動アーカイブプロセスを確認するには、以下のリンクをクリックしてください。 http://stackoverflow.com/questions/18908903/auto-maintain-archive-purge-purge-on-source-table-in-sql-server –

答えて

4

私は2つのオプションのいずれかが最初に

  • 使用partitioningは、現在のワーキングセットとアーカイブデータへの単一のテーブルを分離するために検討したいです。

  • を実装するために、ValidTo列をvalidFormを追加アーカイブ・テーブルを使用する必要はありませんtype 2 SCD
    ValidToは、データの現在のセットを取得するためにNULL ISために次に、インデックス付きビューを追加

私はwouldn 1つのデータベースですべてのデータを「オンライン」にする必要がある場合は、2つのテーブルがあります。

これは、すべてのデータを含む完全に別個のデータベースである3番目のオプションにつながります。 「現在の」データだけがライブに残ります。

+0

答えに感謝します。これらの2つのオプションの例を挙げてください。最初のリンクは多くのことをカバーしていますが、私はあなたがそれをどうやって行うのか本当に感謝しています。 – tugberk

+1

@tugberk:それについてMSDNにはたくさんの例があります。基本的に、日付に基づいて区切り関数を使用します。http://msdn.microsoft.com/en-us/library/ms187802.aspx – gbn

+0

私はそれを実装する前に良い研究が必要だと思う。あなたが提供したMSDNの記事をチェックします。別の記事参照がある場合は、ここにリンクを投稿することができれば幸いです。 – tugberk

1

GBNは、いくつかの良いアプローチを立ち上げる

インデックス付きビューオプションが最も簡単です(Mike_Walshの答え@として説明)と(NOEXPANDヒントで)標準版で動作します。私は、あなたのための "適切な"長期的な答えがt3rdオプションだと思う。

あなたのデータの2つのビジネスユースケースを持っているように聞こえる -

1)リアルタイムオンライン・トランザクション処理(OLTP)。これはPOSトランザクション、在庫管理、迅速な「今日の領収書はどのように見えましたか、在庫はどのように問題がありますか?質問をしたり、ビジネスを日々運営しています。ここでは、操作を実行するために必要なデータが必要で、データベースを更新/挿入/などに最適化する必要があります。

2.)分析型質問/報告。これは、月間の月数、年を越えた年数、移動平均を調べています。これは、戦略的なものであり、あなたの歴史の完全なイメージを見ているようにあなたが求める質問です。クリスマスの季節のアイテムがこの年にどのようになったのかを見たいと思うかもしれません。期間は5年前です。ここではOLTPよりも多くのデータを含むデータベースが必要です。あなたはできるだけ歴史を捨てたいと思っていますし、あなたは質問を答えるためにデータベースを最適化したいと思っています。おそらくもっと非正規化されています。特定の時間に物事を見る能力が必要なので、gbnで言及されているタイプ2のSCDがここで役立ちます。

レポートデータベースを作成する必要があるように聞こえます。あなたはそれをデータウェアハウスと呼ぶことができますが、その言葉は最近人を怖がらせます。あなたがそれを適切に計画するなら、6年と6百万ドルを費やす必要はありません;-)

これは間違いなく長期的な答えですが、あなたが時間を過ごして幸せになれます。ディメンション・モデリングの概念を理解し、データ・ウェアハウスとその用語について考える良い本はThe Data Warehouse Toolkitです。