質問: データベースについて 本をかじった知識で調べたところデータベース管理には、oracle、mysql、postgresql、firebirdや個人で使用するaccessなどのソフトがあるようですが、ほとんどが単体で紹介されていて、これらのメリット、デメリットを比較している本やサイトが見つからずどれがいいのかわからなくて困っています。 現在ビデオカメラから移動物体(人,車など)を検出し、追跡するプログラムをc言語、win32api、vfwで組んでいます。 1フレーム毎に移動物体の座標、大きさなどの情報10~15種類程度を人数分.csv形式で保存しています。 しかし、人数分のファイルが大量にできてしまうため、まとめて管理できるデータベースシステムを構築しようと考えています。 以下の条件に合うデータベースシステムを教えていただけると助かります。 ・リアルタイム処理なので処理速度が最重要。軽ければ軽いほど良い ・1フレームあたり、(10~15種類)*(人数)分の情報を保存 ・データの読み出しは、現在カメラに写っている物体のみ行う。基本的にはデータの保存、及び効率的な管理が目的 ・24時間稼動を想定している。(↑の通りリアルタイムで使うデータは極1部であり、過去の情報は別の機会に使う) ・データにアクセスするのは1人(自分のプログラムのみ) ・取得している言語はc、c++ よろしくお願いします。
回答: パッと思いつくのは、db自体に差はあまりなく、むしろデータのやり取りによって処理速度が変わると思います。 accessは他のpcに移しやすい利点がありますが、同時参照に弱いとか壊れやすい欠点がありますのであまり用いられていないようです。 mysqlはsql文を発行する際に、確かサブクエリとかに制限があったような気がします(うろ覚えです、from区に書けなかったとかそんな感じ) いろいろなsql文を使うならpostgresqlとかをチョイスする人もいるようです。 個人的にはmysqlで十分だと思います。 データのやり取りに例えばado.netでやる場合、これもパッと思いつく範囲ですが、 1.datareader+command 2.dataset+dataadapter 3.dataset+dataadapter+commandbuilder 1はdatareaderをcommandで更新しますが自分でsql文を書く必要があり、とても高速です。 2はdatasetをdataadapterで更新しますが自分でsql文を書く必要があり、中速でしょうか。そのかわりdatasetでいろいろデータをいじれます。 3はdatasetをdataadapterで更新しますがcommandbuilderが発行してくれます。低速ですが楽です。多くのフィールド数の更新向けでしょうか。 参考になればよいのですが。