なぜ、重複するデータがあちこちに蔓延するのか、および、その対策 データベースコンサルタントのノウハウちょい見せ

Oracle RDBMSなどのオラクル製品や各種インフラ技術(OS、ストレージ、ネットワーク)といった話題を取り上げます。著者は小田圭二、「門外不出のOracle現場ワザ」、「絵で見てわかるOracleの仕組み」、「絵で見てわかるOS/ストレージ/ネットワーク」などの著作もあります

ホーム > スポンサー広告 > なぜ、重複するデータがあちこちに蔓延するのか、および、その対策ホーム > アーキテクチャ > なぜ、重複するデータがあちこちに蔓延するのか、および、その対策

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

なぜ、重複するデータがあちこちに蔓延するのか、および、その対策

複数のシステムを持つ会社が増えてきました。当然、データベースも複数存在します。そのデータベース同士を比較すると、重複するデータを持っていることが多くありませんか?

システムをまたがっている場合でも、可能であれば、データの重複は避けるべきです。理由は、メンテナンスとデータの整合性の向上です。たとえば、5つのシステムに別々にデータをもっていると、データメンテナンスが5回になります。また、あるシステムと別のシステムでデータの整合性が合わなくなり、計算が合わなくなることもあります。

「データを1つにする」と簡単に書いていますが、実はいくつかの実現レベルが存在します。一番、イメージしやすいのは、物理的に1つのデータをどこかのデータベースに持たせることです。利用時には、そのデータベースにアクセスすることになります。統合データベースを作るプロジェクトなどが目指す姿です。現実には、複数の業務が同じデータ(たとえば会員ID)を使うことが多いため、統合データベースが無い場合は位置の透過性を実現するDBMSの機能(他のDBのデータを自分のものに見せることができる)を使うことになります。Oracleであればデータベースリンク、DBMSによってはフェデレーションなどと呼ぶ機能のこともあります。
統合データベースの注意点は、可用性がシビアになることでしょう。業務が相乗りすることになるため、止められなくなります。
位置の透過性の注意点は、ひきづられることと、性能でしょう。透過的とは言え、実際には他のDBMSにアクセスするわけで、他のDBが障害になると自分のDBまで影響を受けてしまいます。性能の影響は顕著で、どうしてもネットワーク越しとなり、格段に遅くなることが多いです。意識しないと大変なことになります。

「データを1つにする」のもう1つの実現レベルが、「定義を合わせる」ことです。データディクショナリ(Oracleのデータディクショナリではないですよ)というデータの辞書を作り、各システムで定義(各データの意味)を合わせることです。たとえば、会員IDを1つとっても、桁数は何桁なのか、0詰めするのか、退会した人を含むのか、退会した人を含む場合は過去どれくらい含むのか、どの業務にとっての会員IDなのか(一部の業務とは関係の無い会員IDというのも存在します)などなど、いろいろな定義の違いが存在します(上記は全て実体験に基づいています)。システムをまたがってデータが重複していても、こういった定義が同一であるだけで、ずいぶん扱いやすくなります。実際問題、このレベルの「データを1つにする」ことが最善であることも多いです。

データのオーナーのシステムが決まっていないケースもあります。どっちのシステムのデータを正とすればいいんだっけ?という疑問が浮かぶようであれば、それはデータのオーナーが決まっていないことを意味します。必ずオーナーのデータを更新して、それがコピー側に反映されるようにしましょう。

「データを1つにする」の最後の1つの実現レベルが、「定義を合わせ、かつ、データは多重持ちしつつ、自動的に連携する」ものです。MDM(マスターデータマネージメント)やHubなどと呼ぶようですが、データ連携の基盤や製品を使って、自動的に連携させる方法です。各システムに実データが置いてあるため、性能も良好ですし、自動的に連携するのでメンテナンスも比較的容易です。難を言うと、導入が大変なことでしょうか。システムが増えると、このような仕組みが必要になってきます。

ちょっと見方を変えてみます。なぜ、データの重複が増えるのでしょうか? まず、各システムが個別最適になっていることが挙げられます。SIerがシステムを作る場合、そのシステムに必要なデータ項目は洗い出しますが、それが他のシステム(特に他のSIerが作ったシステム)と被るかどうか、連携をとるべきかどうか、などは考えません。すると、会員IDのような、どのシステムでも使われるようなデータ項目は、各システムごとに持たれてしまいます。

「どの業務をどのシステムが担当するのか」が整理されていないこともデータの重複を増やす原因の1つです。なんとなく、つぎはぎで開発して、不格好になっているシステムが多いです。きちんとデータの区切りごとにシステム分割すれば、重複は最小限になります。概念データモデリングを行い、会社の持つデータを明らかにし、どのシステムがどのデータを持つべきかを考えて、システム分割する方法です。これは情シス側が行うべきデータモデリングと言えます。理由は、「システム横断的に実施すること(SIer1社ではないこと)」「SIerに対して、このデータ範囲をシステム化してくれといった、SIerマネジメント/チェックのために使えること」です。

まとめると
・物理的に1つに統合するのも手
・データディクショナリなどを使って、定義を共通化するのも手
・データ連携の基盤を作るのも手
・同じデータが重複して存在する場合でも、データのオーナー(正)は決めよう
・概念データモデリングなどを用いて、システム分割を考え、重複を抑えよう
です。

データの重複を抑えるのは、簡単ではありませんが、コントロールされていない重複データの増殖はボディーブローのように現場の手足を縛っていきます。「データをきれいにする」ことにもこだわりましょう!
スポンサーサイト
[ 2008/12/26 15:26 ] アーキテクチャ | TB(0) | CM(0)
コメントの投稿













管理者にだけ表示を許可する
プロフィール

odakeiji

Author:odakeiji
小田圭二 日本オラクルのテクノロジーソリューションコンサルティング統括本部においてデータベースのコンサルタントをしている。今までのキャリアでは、社内教育部隊で、データベースやOS、ネットワークを教える経験を5年ほど積んだり、コンサル部門で主にDB(インフラ含む)のコンサルを10年程度経験した。また、コンサルタントとして、主に大規模ミッションクリティカルシステムを担当。社内では”火消し”とも呼ばれ、システムトラブルの火消しをいくつも担当していたこともある。
ポリシーは、「OracleもOS上で動くアプリケーションにすぎない。だから、OS、ストレージ、ネットワークを学ぶべき。アーキテクチャから考えろ」。
スキル面の興味は、アーキテクチャ、DBA、インフラ技術、教育、コンサル手法など。
本ブログのポリシーは「週に1回、DBAやインフラ担当者の役に立つ記事を書きたい」です(守れるだけ、守りたい・・・・)
なお、本ブログにおいて示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。ご了承ください。

私の主な著書の紹介です。もしよかったら、お役立てください。他にもオライリーなどがあります

●「絵で見てわかるOS/ストレージ/ネットワーク データベースはこう使っている」小田圭二 著
私のポリシーである”DBMSもOSの動くアプリケーションに過ぎない”に基づいて、OSとDBMSの関係、ストレージとDBMSの関係、ネットワークとDBMSの関係、を解説した珍しい書籍です。DBを学んでひと段落したら、DB使いもインフラ全体を意識しなければなりませんが、そのような人にお勧めです。企業ユーザー向けのIT本としては、2008年度翔泳社No1だとか(最後は出版社談)。

●「絵で見てわかるOracleの仕組み」 小田圭二 著
教育に携わる者としての私の思い「丸暗記するな。アーキテクチャを知るべき。絵で説明すべき」を具体化した、Oracleの入門書です。Oracle初心者向きですが、Oracleの基礎となる部分の動きを解説しているため、バージョンに依存せずに何年先でも使えます。逆に、本書の内容を理解せずに、ひたすら丸暗記すると応用力が身につきません。この本を読むだけで何かできるようになるわけではありませんが、アーキテクチャを身につけて、本当の技術力を身につける第一歩として欲しいと思っています。

●「44のアンチパターンに学ぶDBシステム」 小田圭二 著
本書は、企業のDBシステムの設計/構築から運用管理、プロジェクト管理までの各フェーズにおけるトラブル(失敗)事例について、アンチパターン(べからず集)とその回避策/防止策として解説するものです。チェックリストとして使っていただいても構いません。分かっていてもアンチパターンは避けられないことも多いものです(政治とか)。そういう方には、同じ仲間は多いのだなと再認識していただくための一服の清涼剤としていただければと思います。

●「門外不出のOracle現場ワザ」 小田圭二 他 著
一番最初に出た本です。結構とがった内容を扱っています。
・パフォーマンス分析の考え方(私の担当)
・性能テストや障害テストの仕方、設計の注意点(主に私が執筆)
・コストベースオプティマイザ(10gベース)のアーキテクチャ
・コネクションプーリング
最新のOracleの内容は含んでいませんが、今でも性能の考え方やオプティマイザの考え方は使えるはずです。オプティマイザをここまで解説している本を私は知りません。

●「続・門外不出のOracle現場ワザ」 小田圭二 他 著
「続」の名前の通り、次に出た本です。ちょっと尖り過ぎたかもしれません^^; でも本当に使う内容を選んだつもりです。一流になりたい・他の人と差をつけたい人にお勧めでしょうか。
・性能の良いSQLの書き方
・文字化けの仕組み
・障害(特に性能やハング)の分析・対応方法(私が執筆)
・障害をリアルタイムに分析・対処する方法(私が執筆)
・オプティマイザの使い方ノウハウ
・アップグレードのノウハウ

●「データベース」小田圭二 他 著
私にしては堅い本です。なんせ、共同執筆者が大御所の國友義久先生です。階層型DBMS、ネットワーク型DBMS、リレーショナル型DBMS、XMLDBMS、OO(オブジェクト指向)DBMS、DBMSの持つ機能、DBMSのセキュリティ、データベースの著作権、監査、モデリング、正規化といった内容を網羅しており、深い記述は無いものの、DB技術全体を抑えるのに向いている一冊です。ある程度技術力がついたエンジニアの方が、DB全体を振り返りたい(勉強したい)というときの最初の1冊としてお勧めです。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。