六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

仕様策定中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テーブルに列車の寿命(始発時間と終着時間)を書いておけば、読み込みもスムーズになるでしょう。