ブログ
某テーマパークのチケットシステムの考察
最近忙しくてディズニーシーに行っていないなーと思ってるシステム部の中村です。
こんにちは でも次は9月7日のレジェンドオブミシカの最終日をねらっていこうかと思うしだいです。
ちなみに、自分はミシカをみるならこの基地の右上からですね!
さて先日仮眠を取ろうとした際に、考え出したら止まらなくなった某テーマパークのゲートのシステムに関しての考察をまとめたいと思います。
某テーマパークの入場ゲートのシステムですが、
1、チケットのバーコードに書かれているIDを読み込むのですが、不正防止対策として過去使われたチケットを判断している。過去はチケットにパンチしているので、判断が付きやすいが現在はパンチしていない
2、2014年時点で6億人の入場が確認されている ただ、ID月チケットになり始めのは数年前からなので、ここでは約3億レコードのチケットが発見されたと想定
3、3200万人程度の年間利用者数から1日平均平均8.5万人程度 最大で14万人と推定
このことから
過去のチケットが約3億インパレコードあると推定されます。(インパ:インパーク 意味:パークにインする(入園する)) その3億レコードを毎回なめるというのはいくらなんでも現実的ではなさすぎます。
ゲートにオンメモリーなDBを組んでもいくらなんでもあの短期間(もの数秒)ではいくらなんでも無理だと思う。となるとどうするべきか。ちょっとまてよく考えたらチケットには約1年の有効期限が設定されている となると
ゲートの中では
1、日付から該当IDの範囲を計算し範囲外を排除
2、ゲート内内部のDBには過去1年分のインパレコードを準備し総舐めを行う。未使用チケットも考えても、年間では4000万レコード程度と推定。
4000万レコードをIDごとでテーブルを分け尚且つ物理的にもパーテーションで割って、オンメモリーに載せてしまえば、短期間の検索も可能と思われます。
selectした瞬間 当日のみのインパレコードがある当日インパテーブルにIDをinsert、パーク内のアトラクション優先チケット発券をはこの当日テーブルをselectさせればいい
これなら、あの短期間で不正チケットのcheckも可能ではないでしょうか。
なかなかこのような超大規模なレコードを扱う機会が少ないので、いいアイデアがでないところですが、きっとその手のベンダーさんとかはノウハウすごいんでしょうね。
USJさんはNECの技術使いまくりというCM ( http://jpn.nec.com/ad/usj/entry.html ) まで流れてるぐらいなので、一度こういう大規模的な技術セミナーとかあれば、受けてみたいものです。
そしてついでに某テーマパークの一番偉い人に撮影お願いした自分の中の取って置きの写真を1枚