1

レポート用にデータベーステーブルを作成したいのですが、レポートシステムをトランザクションシステムから分離しているためです。

次のようなテーブルを作成します

  • .report_company_id_12_unique_views(ユースケース1)
  • .report_company_id_18_unique_views
  • .report_adserver_id_22_unique_counts(ユースケース2)
  • .report_adserver_id_44_unique_counts...など

50以上のレポートのユースケースがあり、ほとんどのテーブルは200行以下を保持し、すべてが一意であるため、すべてのユースケースを異なる方法で処理する必要があります。

しかし、私はこれらの目的のために約8000のテーブルを持っています。

8.000テーブルはそれほどクールに聞こえませんが、高速アクセスのためにレポートデータベースを使用したいと思います。

これはdbがデータストア専用に設計されていることです....テーブルに主キーがない場合でも....すべての目的は読み取り専用であり、n*百万行のテーブルから抽出されたデータにアクセスします。レポート用の実際のデータベース。テーブルを作成し、データを挿入し、次のスケジュールでデータを削除して再度挿入します。

私の質問は、このスケジュールされたタスクにどのツールを使用する必要があるかです。

  • 1.SQLエージェント(カーソルを書き込む必要がある場合は、処理中のすべてを実行します)
  • 2.Windowsタスクライブラリ。コードを呼び出して、プロセス外のクラスに処理を任せることができます。
  • 3。???? (他の選択肢)

-nosqlソリューションは受け入れられません。:(

満たすための私の要件

  • 1.デバッグが簡単(比較的)
  • 2.拡張しやすい(比較的)
  • 3.展開が簡単(絶対に)
4

2 に答える 2

0

あなたの質問に対する簡単な答えは、SQLServerエージェントを使用することです。SQL Serverと統合されており、タスクを実行するために必要な基本機能を提供します。他のソフトウェアを使用する理由は(あなたの質問から)ありません。

とはいえ、特に(私の意見では)エラー処理と通知に関して、いくつかの欠点があります。

各テーブルを作成するプロセスについては説明しません。ビューから選択するのと同じくらい簡単な場合は、レポートテーブルを設定し、そのテーブルをループして最終レポートを作成できます。

コメントと同様に、8,000のテーブルはデータモデルに問題があることを示唆していると思います。同様のレポートを1つのテーブル(50と言います。これは50のテーブルを提案します)に結合し、他のメカニズムを使用して各会社/サーバーのレポートを分離できる必要があります。たとえば、「テーブル」に直接アクセスしている場合は、テーブルを急増させるのではなく、ユーザー定義のテーブル関数またはビューを使用します。

于 2013-03-25T13:49:35.760 に答える
0

抗科学

私は同意します。これに対する最初の応答は、「8000テーブルを使用しないようにリファクタリングする」必要があります。主キーを使用して、読み取り専用の高速アクセスを実行できます。この種のテーブルの肥大化は必要ありません。基本的なKey-Valueストアであるこのようなことを行う場合は、NoSQLの代替案を検討してください。–antinescience17時間前

于 2013-03-26T06:16:51.080 に答える