Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

RDB全盛ですが

いまや、事務アプリにRDBは必須になってます。生産状態管理アプリでもデータ保持にRDBが使われています。
XMLが取って代わるかのように言われた時期もありますが、XML_Fileの更新は煩雑感があり見かけません。
RDBが万全だから使われているのではなく、他に代替がないから、使わざるを得ない面もあります。
過去に頂いたコメントに「RDBは時間軸がなく一面性しかない」というのがありました。
それは、しばしば感じます。
例: 得意先マスター
   Code   氏名     住所
(1)  A001   鴻池艶子   東京府東京市蒲田1-1 ;  昭和10年当時
(2)  A001   住友艶子   東京府東京市蒲田3-4 ;  昭和15年:婚姻による改姓
(3)  A001   住友艶子   東京都大田区蒲田3-4 ;  昭和18年特別区制度による表示変更

有る特定の人のデータですが、婚姻や地域制度の変更により、氏名・住所欄が変わります。システム上のCODEはA001であり、取引上は同一顧客に変わりません。
単純な顧客マスター引用だと (1)=>(2) に変更した時点で、(1)は抹消されます。 (2)=>(3) の時点で(2)は抹消され(3)が残ります。
昭和10年から 今まで毎年、この人の取引データが残っていたとします。
昭和16年の取引状況を再発行したととき、顧客住所は、(3)で表示されることになります。

少し気の利いたマスターなら
     Code   氏名     住所  有効期間(From) 有効期間(To)
の項目を保持していて、
  (1),(2),(3)のデータを保持していて、再発行当時の住所で印刷することを可能にしているのもあります。
しかし、構造的矛盾として、 (2)の時の請求書発送漏れがあり、(3)の住所に再発行したいケースには対応出来ません。
これは、運用ルールの問題かも知れませんが。
個々のアプリで対応することになります。
RDBに時間軸が無いと感じる所です。

 業務の仕組みを処理するのが情報処理ですが、今や処理はプログラム言語で解決する時代ではなく、RDBやF/Wに委譲する部分も多くあります。
データテーブルなどのスキーマや制約で処理している部分も増加しています。

特定のキーのデータに有効期間が必要な場合は、少なくありません。しかし、RDBの機能としてはありません。
〒番号表も現在有効な住所に対して更新がなされるので、市区町村合併で消滅した地域名には無力です。

私は、項目単位の変更履歴を取る仕組みを実装しています。
多重化やOLAP機能などの機能強化は喜ばしいのですが、業務的に現場で必須的に作られる仕組み(変更ログや更新履歴、更新日、更新者等)は標準機能で保持してもいいのでは?
と思うのです。

(P.S) 更新日、更新者は個別アプリ的性格が強いので無理っぽいですが、変更履歴や有効期間型はF/W化可能な気がします。

 

投稿日時 : 2009年6月27日 0:59

Feedback

# re: RDB全盛ですが 2009/06/27 8:31 Pasie.

>変更履歴
 REDO解析?
>有効期間型
 フラッシュバック問い合わせ?

>構造的矛盾として、 (2)の時の請求書発送漏れがあり、(3)の住所に再発行したいケースには対応出来ません。
 請求書内の住所には(2)を印字して、宛名シールには(3)を印字すればいいのでは? 意味が違うのかな…


 全体的に主張がどこにあるか読みにくいのですが、特にこれがわからない。
> RDBは時間軸がなく一面性しかない
 RDBでなければ、あるいは他のシステムであれば時間軸があるものがあるのでしょうか?
 そもそも'時間軸'の意味/意図がわからない。時間概念がほしいなら、本文中にもあるように保持できるわけですよね?木構造や再帰構造が表現しにくいといわれるなら理解はしやすいのですが…
 結局のところ「ログを自動でとってよ」ってことでしょうか。それはRDBやXMLとは別の世界のことであると思うわけですが…(そういうアクセスメソッドを作ればよいだけではないかと。作っているかとは思いますが)

>東京市
 ところで直近の平成大合併や昭和大合併を排して東京市を持ってきた理由を小一時間説明してほしいところ…^^;

# re: RDB全盛ですが 2009/06/27 10:06 Ognac

>東京市を持ってきた理由を小一時間説明してほしいところ…^^;
小一時間はむずかしいなぁ。小一分で。
 合併で町名や市名が消えるのは、よくあり私も経験しているのですが、府名と市がなくなって、いきなり区が市と同格になったのは、東京特別区だけですので、この手の話をするときは、東京市を例に例えています。

>RDBでなければ、あるいは他のシステムであれば時間軸があるものがあるのでしょうか?
>REDO解析?
(RDB以外も含めて私の知っている範囲では)既成F/W製品には、ありませんね。ないので、「あってもいいのでは」と思いました。

(再掲) (2) A001 住友艶子 東京府東京市蒲田3-4 ; 昭和15年:婚姻による改姓
昭和16年の請求書を昭和20年に再発行するとき、
(3) A001 住友艶子 東京都大田区蒲田3-4 ; 昭和18年特別区制度による表示変更
請求書の再発行は、原紙内容再発行という意味が多いです。(私の関わった範囲ですが)

A:過去履歴蓄積しておいて、過去に遡って昭和16年当時の顧客マスター行を再現して、印刷する
B:有効期間項目を持つ顧客マスターを設計しておいて、一つの顧客コードに対して複数行保持するようにして、該当する行を戻す。

過去データを多用する場合 (A)は煩雑すぎるので (B)形式を採用しています。

いずれにしてもアプリ側で対応することになります。ロジックはパターン化できていますが、コード量は増えます。

このように、過去の特定時刻のマスター行を引用する、業務要件は多くあるが、その都度、アプリ側で定型処理を施すことになります。
定型処理を施すのならF/W化しよう...となります。
過去行取得(履歴復元等)は、RDBの機能(F/W)として備わっていてもよいのでは..と思った次第です。
「テーブル毎に個別処理を書くのは面倒臭い。」というのが根底なんですが。
通じましたでしょうか。

# re: RDB全盛ですが 2009/06/27 20:30 れい

> 業務的に現場で必須的に作られる仕組み(変更ログや更新履歴、更新日、更新者等)は標準機能で保持してもいいのでは?

私もそうして欲しいと思うんですが、それをするためには考えなければいけないことが山のようにあって…。
DBの理論をいくつか調べてみたりもしたのですが、「過去」の扱いについて、きちんと研究されてるものは見つかりませんでした。

テーブルの生成とか参照とか、「メタ」な情報を更新しないことにすればある程度は過去情報を簡単に扱えると思っています。
しかし、SQLはメタ情報を簡単に扱えます。
非メタとメタ、メタメタの区別が曖昧です。

その辺に問題があるのではないかと考えていますが、それ以上深く調査・研究する気力がありません。
だって、DBなんて使う必要が無いんだもん。

# Flashback Data Archive 2009/06/27 21:49 DHJJ [Hatsune's Journal Japan] blog

Flashback Data Archive

# re: RDB全盛ですが 2009/06/28 1:06 Ognac

>フラッシュバック問い合わせ?

Oracle 11にそんな機能が!!
Oracle11の知識がごっそり抜けていた..もとい...未学習でした。
 でも、これって固有RDB機能なんですよね。
SQL Serverにも類似実装されるのだろうか。

# re: RDB全盛ですが 2009/06/28 1:07 Ognac

>だって、DBなんて使う必要が無いんだもん。
うらやましい...でもRDBがなければ商売にならないし。

# re: RDB全盛ですが 2009/06/28 18:40 はつね

>>フラッシュバック問い合わせ?
>Oracle 11にそんな機能が!!

フラッシュバック問い合わせはOracle 10gからあります。
でもフラッシュバック問い合わせでは、Ognacさんが書かれている事の実現は難しいかも(短期間の保存なので)。
その部分を拡張強化したのがFlashback Data Archiveで、こちらはOracle 11gからの実装になっています。

# re: RDB全盛ですが 2009/06/28 22:52 Pasie.

 究極なのは、発行した請求書とかのイメージをそのままスキャンして履歴に残すことなんだろうと思うけど。blobあたりで。

# re: RDB全盛ですが 2009/06/29 18:01 まりり

過去の請求書を印刷するなんて要件があるなら、印刷用の請求書ってのをマスターを取り込んだ形で持たせたらいいのに、と思います。
商品マスタに価格があるような場合、こういう作りしませんか?

あと、単に履歴が欲しいだけならトリガー使うと楽かもしれませんね。

# re: RDB全盛ですが 2009/06/29 19:11 Ognac

確かに、アプリで対応することになりますね。
トリガーも、テーブル事に定義しなくてはならないし。
F/W側でカバーすれば、アプリは楽できそうな気がしたもので。

# re: RDB全盛ですが 2009/07/06 0:56 Pasie.

やはりうちからはトラックバックは通らないなあ…

# re: RDB全盛ですが 2009/07/06 22:21 Ognac

Pasie.さんの トラックバック
http://ooltcloud.at.webry..info/200907/article_3.html
連動しないので手動(..を.に置換して下さい)

# ???????????????????????? (oracle??????) « ?????????????????? 2012/10/07 12:28 Pingback/TrackBack

???????????????????????? (oracle??????) « ??????????????????

#  ???????????????????????? (oracle??????) | ?????????????????? 2012/10/22 23:05 Pingback/TrackBack

???????????????????????? (oracle??????) | ??????????????????

# DgxJtxvBqKhBdJWh 2021/07/03 2:41 https://amzn.to/365xyVY

No problem, and further more if you want update alerts from this site at that time you have to subscribe for it, it will be a better for you Jackson. Have a lovely day!

タイトル
名前
Url
コメント