こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

DWHの処理能力について

どのように質問すれば、良いのか自体あまりわかっていないのですが、
今後システムの仕事をすることになり、現在、DWHの導入を検討しております。

DWHの導入を考えているのですが、インポートしたいテーブル数が500超えてしまい、「500は多すぎる、これでは処理時間に1日かかってしまう。」と言われてしまいました。
元のシステムでオラクルのDBを使用しており、そのデータをDWH用のオラクルDBに写し、DWHにデータを入れるようにしようと考えております。


出来れば、3時間から4時間くらいで、インポートしたい(エンドユーザーがデータを確認できるように)のですが、一般的に、DWHへのインポートできるテーブル数はどのくらいなのでしょうか?また、500くらいのテーブルを希望の時間でインポートしたい場合にやりようはないのでしょうか。

分かる方いらっしゃいいましたら、ご教授ください。

投稿日時 - 2013-02-09 09:16:40

QNo.7935802

困ってます

質問者が選んだベストアンサー

ANo.1です。
>基幹DBに顧客などのマスタテーブルや売上などのトランテーブルの数が約800あり、これらのデータを>毎日DWH用のDBへ差分更新します。

マスタは無視して、売上などのトランテーブルがいくつあるのでしょうか?
これが数百あるなら分けたほうがいいというのが、前の回答の趣旨。

「xx別売上テーブルみたいな中間ワークテーブル」といっていたのが、
「DWH側のDBにビューを約500作成し」に相当します。
500も必要でしょうか?
(ついついいくつも作ってしまうのがビューだったりします。)
例えば、課別月別売上ビューと部別月別売上ビューを別々に作ってしまったりとか。
(課別月別売上ビューがあれば部別月別に売上リストを出すのは結構早い。)

昔やった仕事で、縦軸、横軸の組み合わせ150個程の検索を、12個の中間ワークファイル
(ビューと思ってください)で実現したことがあります。
・・・ビューは、出力が遅ければ追加するという考え方で作っていくのも有りと思っています。
(もちろん、1伝票毎のトランザクションから出力させると遅いにきまっていますので、
 最も細かい単位でのビューは作る前提のほうがいいですが。)


「ドクタサム」がよくわからないのであまりアドバイスはできないのですが、
ビューといっているけど実データを別に格納していて毎日更新する必要があるという前提と
考えられますので、効率よく更新する方法はあると思われます。
例えば、日別取引先別売上ビューがあるなら、月別課別売上ビューは、元データから更新する
のではなく、日別取引先別売上ビューから更新するとか(前提として1取引先1課とする)。

あと、差分更新は、ちょくちょく、値があわなくなることがあります。
(あってはいけないのですが、バグやsqlを直接実行して削除したため、マイナスデータが
作れなかったとかいったイリーガルなオペレーションからおきることがあるので。)
例えば当月分を月末に全件再計算するとかしたほうが安全です。
毎日当月分を再計算するってほうがベターとは思いますが、処理時間とのバーターです。


>本来、基幹で作成しなければならなかった帳票などもDWHから出るようにしたいため
プルーフリストとか入力内容を確認する帳票は、基幹で出すようにしてください。
基幹で正しいデータにしてからデータを受け取らないと、取り消しデータとか山のように
データを受け渡ししなければいけないことになります。
## ま、お分かりと思いますので余計なお世話なんですが。

## とりあえず、こんなところで。
## 後は個別にどんなデータとどんなビューがあって・・・
## と1件ずつ掘り下げていく必要があるのですが、
## QAサイトではそれもなかなか難しそうですね。

投稿日時 - 2013-02-16 01:03:30

お礼

Siegruneさん 重ね重ねご回答ありがとうございます。

トランテーブルは600くらいありますので、サーバは分けた方がよさそうですね。
また、ビューの必要性についても再度考えてみるようにしてみます。

いろいろ参考になりました。有難うございます。

投稿日時 - 2013-02-16 12:40:34

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

>インポートしたいテーブル数が500超えてしまい
ってキューブの数が500って言う意味ですか?
⇒もしそうなら、サーバを分けるべきでしょうというしかないです。
例えば、売上データ用DWHと経費データ用DWH・・・とかいった感じ。
そうじゃなくって、マスタデータとトランザクションデータが合わせて500という意味なら
やりようはあります。
というか、500テーブルを毎日全件入れるのですか?
マスタ類は差分をいれるように設計できませんか?

例えば、売上データのDWHなら、データは売上データの1種。
但し、xx別売上テーブルみたいな中間ワークテーブルがないと検索速度が遅いので
つくっていますということなら、作成用のバッチを実行する。(またはこれもインポートすればよい)
マスタ類は、依存関係がなければ並行処理できるのだから、同時に格納する。
サーバはマルチコアのサーバを用意しておけば、並行処理してくれるはず・・・。
とか何らかの対策をできるはずです。

投稿日時 - 2013-02-15 01:35:29

お礼

Siegruneさん ご回答ありがとうございます。

キューブというものがどういうものかあまりわかってしませんが、

基幹DBに顧客などのマスタテーブルや売上などのトランテーブルの数が約800あり、これらのデータを毎日DWH用のDBへ差分更新します。
また、DWH側のDBにビューを約500作成し、これらのビューもテーブルと一緒に多次元データベース差分更新をかけることになっています。
『500は多すぎる』といった部分は多次元データベースに更新かけるこのビューの数のようです。

サーバはXoen?といったCPUになり、ドクタサムといったものになります。

基本的に昨日までの内容に基づいた実績をDWHで確認し、本来、基幹で作成しなければならなかった帳票などもDWHから出るようにしたいため、毎日基幹のデータを更新する必要があります。

希望の要件を満たすためには複数のサーバに分けて処理する必要があるということでしょうか?

投稿日時 - 2013-02-15 18:44:08

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-