仕様策定中1

DB構造再編 – diary 六帖の続き
csvを作ってみると、小田急小田原線のダイヤのデータは平日上下合わせて約1MBにすぎないことがわかった。1MBくらいならメモリ中にロードしたところで大したものではない。いまやスマホでさえどの機種でもメモリはGB単位だ。全部メモリ中にDBの内容を読み込んでしまった方が、後々楽だろう。Ajax使わなくてもいいんじゃない?
しかし起動時にこの量を全部ダウンロードするのはあまり得策ではない。おそらく多摩線、江ノ島線を足して2MBといったところだろうが、ADSLで基地局から遠い場合は100KB/秒くらいだと20秒、スマホの転送量制限を超えた場合は128kbps=16KB/sなので2分もかかってしまう。これはダサい。やはりAjaxは必要か。
検証のため旧TrainNaviのサーバーとのやり取りを調べたところ、小田急全線の1時間分の列車情報をゲットするのに約5秒かかり、データ量は2-300KB程度。でかいな。サーバーからJSONを返しているのでかなりの冗長性があるようだ。

[{“LineID”:”1″,”TrainID”:”10″,”StartStationID”:”47″,”EndStationID”:”41″,”StartTime”:”05:10:00″,”EndTime”:”05:18:00″},{“LineID”:”1″,”TrainID”:”10″,”StartStationID”:”41″,”EndStationID”:”40″,”StartTime”:”05:19:00″,”EndTime”:”05:25:00″},{“LineID”:”1″,”TrainID”:”10″,”StartStationID”:”40″,”EndStationID”:”39″,”StartTime”:”05:25:00″,”EndTime”:”05:29:00″}
以下略

無駄だなぁ。。JSONはやめてcsvを返すようにして、クライアント側でパースするようにした方がよさそうだ。1,10,47,41,5:10,5:18 で十分だよね。
で、DBしか使わない場合は拡張性に乏しくなるので、csvをサーバーにアップロードしても使えるようにする。もちろんDBの方が高速だが、扱うデータが高々2MBとそれほど大きくないのでファイルアクセスしてもよいでしょう。共通のインターフェースを作って、どちらでも使えるようにする。Ajaxで路線名、取得範囲をphpに投げて、phpから該当するデータを返してもらう。
csvはヘッダも必要だな。tntrainテーブルに列車の寿命(始発時間と終着時間)を書いておけば、読み込みもスムーズになるでしょう。


コメントを残す

メールアドレスが公開されることはありません。