大きな設定データファイルを読込む方法


sas  2012-10-02 18:54:23  No: 147834  IP: [192.*.*.*]

はじめまして、sasです。
約600万個の設定データを読込む方法を探しています。
起動時に約600万個の設定データをiniファイル型式で読込むのは時間がかかり過ぎて現実的では無いのではと考え、別の方法を探しています。
それと、
設定データは、一定条件のイベントが発生するたびに一部書換えを行います。
この時、各機器と通信しているため書換え処理に時間をかけれません。

皆様、お知恵を拝借できませんでしょうか。
よろしくお願いいたします。

編集 削除
YuO  2012-10-02 20:27:08  No: 147835  IP: [192.*.*.*]

そもそも,読み込む必要があるのですか。
データ自体をデータベースに入れて,必要になる度にSELECT/UPDATEで十分だと思いますが……。

編集 削除
sas  2012-10-03 10:19:44  No: 147836  IP: [192.*.*.*]

YuOさん有難うございます。
私はデーターベースを扱った事が無いので解からないのですが、
アプリケーション起動時に全ての設定ファイルを読込む事が可能なのですか?
データーベースだと早いのですか?
データーベースは別途費用が掛かるのでしょうか?

編集 削除
YuO @ mobile  2012-10-04 14:00:25  No: 147837  IP: [192.*.*.*]

基本的に,「本当に全部を読み込んでいる必要があるのか」という疑問からDBという解を書いています。
さらに言うなら,600万もの設定項目というのがそもそもありえないと思っています。
# 「通信用の設定」×「通信先の件数」の延べ?

正しくインデックスを用意したDBに対してクエリを投げれば,バイナリ探索を使って処理をしてくれます。
Updateに対しても,インデックスを使って検索がかかれば,データの部分書き換えになります。
もちろん,データベースとの通信に関わるオーバーヘッドは存在しますが,
通常はオーバーヘッドを上回る利点を得られることが多いです。
# 通信量が多いなら負荷分散したりするにもDBの方が便利。

データベースの料金は,使うDBに依存します。
MySQLやPostgreSQLといった無償のものや
SQL Server,Oracle DatabaseやDB2といった有償のもの,
SQL Server ExpressやOracle Database Expressといった有償DBの無償版も存在します。
# VS入れるとデフォルトでSQL Server Expressが入ります。
また,SQL Server CompactやSQLiteといった「サービス/デーモンではないDB」も存在します。
# OfficeにもAccessというのがありますが,あまりお薦めできないかなぁ……。

編集 削除
オショウ  2012-10-04 14:57:15  No: 147838  IP: [192.*.*.*]

横から失礼・・・

実際に600万個のデータがあったとしても、使用するデータの個数は
リアルタイムにでも600万個ではないでしょう。

どんなデータで、何に使用されているのか解らないので、これ以上
突っ込めませんが・・・

3D表示のマッピングデータとかであれば、どうしてもすべての点
の3Dポイント(X,Y,Z)のデータがすべて必要なので、とんで
も無い量のデータファイルを読んだり書いたり・・・したことはあ
ります。(データ数は1億個くらいでした)

一時的にせよ必要な個数に絞り込めるのであれば、データの管理方
法として、600万個の中からどうやって探すのか?が明確になれば
データベースの使用も問題ないでしょう。

なんせ空間座標を扱えるDBエンジンもありますし〜ただし有償物
ですが。

※  因みに機器って何ですか?
    FA向けのソフト屋なんで、そっちが気になります。

以上。参考まで

編集 削除
sas  2012-10-08 23:59:32  No: 147839  IP: [192.*.*.*]

YuOさん、オショウさん有難うございます。

必要な時に必要なデータをデータベースから読み取れば良いのですね。
VisualStudio2010を使用しています。標準でSQL Serverが入っているので、これでテストしてみようと思っています。(今、本を借りて読んでいます。)
それと、
PCに自作アプリと無償版のSQL Server Express2008RSを入れて販売しても良いのでしょうか。

データは複数のモーターを制御する、モーターの種類、コマンド、座標、その他です。

編集 削除
YuO  2012-10-10 12:01:06  No: 147840  IP: [192.*.*.*]

Microsoft SQL Server 2008 R2 Express Editionの再頒布用ライセンスに従う限り,再頒布可能です。
http://www.microsoft.com/ja-jp/download/details.aspx?id=29693

編集 削除