無精で短気で傲慢なプログラマ

UNIX や web やプログラムの技術的なことを中心に。

DoCoMo の料金システムは偉い

わたしがすごいなーと思うシステムは NTT DoCoMo の料金システムである。

2005年度 第2四半期データ によると、DoCoMo だけで 5,000万契約ある。

月に一度請求書を送るとすると、5,000万通の請求書を送付しなければ
ならない。もし RDBMS で保持していたとすると、月に 5,000万レコード
ずつ増加することになる。12ヶ月で 6億レコード。

これだけでもため息が出るが、手元にある昔の DoCoMo の請求書を見ると、

基本使用量 (デジタル800/プランA) [月額] 4,500円
いちねん割引料 (契約期間2年超3年まで) [月額] -540円
基本使用量 (パケット/ライフプラン) [月額] 150円
付加機能使用量 (iモード) [月額] 150円
ダイヤル通話分 430円
無料通話分 -430円
延滞利息 34円
消費税相当額 (合計) 213円
(合計) 4,507円

となっている。明細が 8行なので、明細テーブルは 5,000万×8レコードで
4億レコード。月に 4億レコード増える。これは怖い。12ヶ月で 48億レコードである
(まぁ延滞利息については料金計算システムではなく、与信管理システムが算出して
いるような気がするが)。

さらに言えば、何月何日何時何分に何パケット送受信した、というデータも当然管理
しているだろう。これを RDBMS で管理したとするなら、レコード数は 1千億や1兆の
単位になるかもしれない。

ちなみに上記四半期データによると ARPU (Average Revenue Per User。1契約
あたりの月間売上) は 7,000円程度なので、1ヶ月の請求額合計は 350,000,000,000 円
(3,500億円)。

これもデカい。32bit 符号付整数の最大値は 21億なので全然足りない。64bit
符号付整数なら余裕だけれども。

で、これだけでも「デカいシステムだなぁ。RDMBS でまともに管理できるのかなぁ」
って感じなのだが、驚いたのは携帯を解約したとき。窓口に行ったときに、
 「今月の請求額は~円です。ただし直近 2時間程度の料金などは含まれません
  ので、もしそういう通話があれば後日請求させていただきます」
と言われたことである。DoCoMo は2時間程度のタイムラグでリアルタイムに
料金計算をしているのか~と心底感心したものだ。そして解約した月の通話
料金について、どこまで請求して、残りはいくら、という管理ができている
ことにも驚いた。

わたしが経験した範囲では、金が絡むシステムはミスが怖いので、締め日に
月次バッチを動かした後、ある程度手動で検証作業を行ったりするものである。
もしそこでミスが発覚したら、プログラムを修正し再度請求額を計算する。
正確性については、その程度のミスは許容されていた。しかしリアルタイム
性を求めると手動での検証作業はあきらめなければならない。つまりミスは許されない。

DoCoMo の中の実情は知らないが、外から見る限りでは凄いシステムだなぁと
思う。まぁ中身はボロボロだったりするんだろうけれども、外に見せないだけでも
立派だ。
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する