4

たとえば、いくつかのデータサンプルを処理する必要がありますN。サンプルは類似したデータを表していますが、起源は異なります。たとえば、さまざまなショップでの注文の履歴。したがって、すべてのサンプルの構造は同じです。データを操作するには、いくつかの可能性があります。

  1. Nサンプルごとに1つずつ、同一のスキーマを持つデータベースを使用する

  2. 1つのデータベースを使用しますがN、テーブルのセットを使用します。たとえば、User_1、...、User_N; Product_1、...、Product_N、Order_1、...、Order_Nなど。

  3. User、Product、Orderの1つのテーブルセットを持つ1つのデータベースを使用しますが、各テーブルにサンプルインデックスを表すヘルパー列を追加します。明らかに、この列はインデックスである必要があります。

すべてのクエリが単純になるため、最後のバリアントが最も使いやすいようです。2番目のケースでは、テーブル名をパラメーターとしてクエリ(ストアドプロシージャ)に送信する必要があります(可能ですか?)。

では、どちらの方法でアドバイスしますか?パフォーマンスは非常に重要です。

4

3 に答える 3

5

ステップ1.データウェアハウジングに関する本を入手します-それがあなたがしていることだからです。

ステップ2.データをファクト($、重みなどの測定可能なもの)とディメンション(製品名、注文番号、ユーザー名などの測定不可能な属性)に分割します。

ステップ3.ファクトのディメンションで囲まれたファクトテーブル(注文アイテムなど)を作成します。注文アイテムの製品、注文アイテムの顧客、注文アイテムの注文番号、注文アイテムの日付など。これは、単一のデータベース内の1つのファクトテーブルと複数のディメンションテーブルになります。それぞれの「起源」または「源」は、基本的な事実の単なる次元です。

ステップ4.非常に単純な「SELECTSUM()GROUP BY」クエリを使用して、データを要約および分析します。

これは、ビジネスを行うための最高のパフォーマンス、最もスケーラブルな方法です。詳細については、ラルフキンボールのデータウェアハウスツールキットの本を購入してください。

同じ構造のN個のデータベースを構築しないでください。1つをTEST用に、もう1つをPRODUCTION用にビルドしますが、 Nはビルドしないでください。

同じ構造のN個のテーブルを作成しないでください。それが鍵の目的です。

于 2010-01-22T18:19:39.737 に答える
2

これが一例です。この例のファクトテーブルの各行には、注文から1つのラインアイテムがあります。このOrderIDフィールドを使用して、特定の注文からすべてのアイテムを検索できます。

sales_model_03

于 2010-01-23T13:50:45.380 に答える
1

データベースを分離すると、テーブルが小さくなります。これは通常、パフォーマンスが高くなります。別のデータベースにアクセスする必要がある場合は、MicrosoftSQLServerで可能です。別のサーバー上のデータベースにアクセスする必要がある場合は、それも可能です。

これは、データがどの程度強く相関しているかによって異なります。

于 2010-01-22T18:21:10.923 に答える