データベースの勉強中

Posted on :| コメント (0) | トラックバック (0)

 現在、データベースの勉強中です。EveryDB+MySQLで競馬用データベースを構築したという話は3/9「競馬用データベース」 で触れましたが、今日はその後の話を書きたいと思います。
 吉田は恥ずかしながら、これまでさほど機会がなかったので、 データベースはAccessのデータベースにVBで操作をする程度のことしかしてませんでした。
 しかし、まともな検証システムを組むなら、やはりちゃんとしたデータベースを作った方が良いと思い、現在勉強中です。今回のエントリーは、 防備録もかねて書きます。

 

■データベースに求められているもの

 データベースに求められているのは、堅牢性です。高価なDBMS(データベース管理システム)も確かに財産と呼べますが、 それ以上に中に蓄積されたデータこそが財産です。
 よって、そのデータをいかに守り、トラブルがあってもデータを保護し、システムを使用可能な状態に復帰させるかが鍵になります。

 運用していくうちに必ず壊れるMicrosoft Accessなぞは、論外なわけです。

 これを踏まえた上で、検索速度、 データ更新時の安全性(トランザクションや同時実行性など)がデータベースの決め手となります(勉強中なので、 間違っている箇所もあるかもしれません)。

 

■競馬データベースについて

 JRA-VANがData Lab.に移行したときに大きな混乱がありました。その最大の要因はデータフォーマットの変更です。 Data Lab.のデータは、これまでのデータ形式と異なり、 RDBMS(リレーショナルデータベース管理システム)での運用を前提としたデータ構成だったためです。

 吉田は2冊目の著書「DIY競馬プログラミング Data Lab.編」で、データフォーマットの事にも触れました。ページ数と締切りの関係で結論は出せませんでしたが、この時、 RDBMSを使わないでデータを蓄積する方法について触れました。
 RDBMSの場合、SQL文にてキーとなるデータを指定すれば高速に検索が行われますが、一般の競馬ソフトの場合、 これを自分ですべて行う必要があります。データの蓄積、検索の仕方など多種にわたる懸案を解決する必要があります。

 Data Lab.形式(JV-Data)は、TARGETの様に特定条件のデータを検索する用途には向きますが、 こと成績や出走馬一覧を表示するだけの用途では、RDBMSに最適化されたData Lab.形式は足かせになります。

 JV-Dataフォーマットの最大の特徴は、成績と出走馬の情報がSEというひとつのフォーマットで表現されているところです。 この馬毎レース情報SEをどう扱うかで、競馬ソフトのレスポンスが変わってきます。
 Data Lab.のデータを扱うソフトを作る場合、データがどのように取得されるかまで考慮する必要があります。 データの蓄積と利用を常に頭にいれて設計を行わなければならないため、Data Lab.対応ソフトの敷居が高くなります(RDBMSを使えば、悩む必要はありませんが)。

  • 出馬表を表示するには頭数分のSEデータが必要
  • レース情報RAには、出走馬の情報はふくまれていない
  • 成績を表示するには、頭数分のSEデータが必要
  • SEデータは取得タイミングにより、出走馬情報と成績情報の両方の役割を持つ
  • 出馬表や成績を表示するには、SEデータはレース毎にまとまっていた方が良い

と言うことになります。しかし、戦績を検索する際には、血統IDをキーにしてSEデータを拾っていく必要があるため、 非常に時間がかかります。
 この戦績検索の仕組み(=インデックスを作成)をどう実装するのかが鍵になります。この方法論については、吉田の頭の中にありますが、 そのうち競馬ソフトに実装して試してみたいと思います。

 なお、検証用に使うソフトの場合は、自分だけしか使わないのでRDBMSをフルに活用した設計をするつもりです。RDBMSが使えるなら、JV-Dataは本当に楽です。JRA-VANもこれからはデータベースが利用されるだろうとの腹づもりで、データフォーマットを作成したのかも知れませんが、ちょっと読みがはずれましたね。

トラックバック

このエントリーのトラックバックURL:

コメント

コメントフォームに記入し投稿してください





Search
最近の記事
カテゴリー
過去の記事
Comments
TrackBacks
Feed
Powered by