DOBON.NET DOBON.NETプログラミング掲示板過去ログ

配布用データベースなど

環境/言語:[c#,VB.NET]
分類:[その他]

2006/04/28(Fri) 10:17:23 編集(投稿者)

はじめまして、鐘と申します。
プログラマ暦2年の駆け出しです。

現在、自作でWindowsアプリケーションを作成しているのですが
データの管理で頭を悩ませております。
対象ユーザーはローカルインストールタイプなので一人。
データ量もたいしたことありません。が、何年使われるか想定できません。
開発環境はVS2005。後でWEBとデータ連携する予定があります。
ローカル使用なのでデータベースのインストール作業などはやらせたくありません。
基本的にはデータに直接触らせたくありません。データに見えないような形式で
書かれていて触れる状態というのはOKです。できるだけパフォーマンスがよいのがいいです。
さてこのような条件でデータを管理するのは何を使ったらよろしいのでしょうか?
候補に挙がっていたのは
SQL sever2005無料バージョン
ファイル管理(UTF-8)
XMLシリアライズ
普通のシリアライズ
Access
です。これ以外にも色々あると思うのですがどうかご教授願えないでしょうか。

もうひとつ。バイナリ化というのがどうもよくわかりません。
これをファイルに書き出したとき、直接読むと読めない形式になっているということでしょうか?
こちらもあわせてよろしくお願いします。
私は趣味で扱っているので、少し的ハズレな部分があるかと思いますが御容赦ください。
それと申し訳ないのですが、御質問の内容は仕様が固まっていないということですか?
文面から想像するのですが、
1・ユーザ(依頼人)はデータベースの知識をあまり持たれておられないが、
データを扱う機能を有するWindowsアプリケーションを希望している。

2・プログラマ(鐘さん)としては直接データを扱ってもらいたくない。
従ってデータ表示だけに留めデータを直接変更する事は仕様に盛り込みたくはない。
(アプリケーションの機能としてのデータ作成とデータの編集はアリ)

3・何年そのアプリケーションを使用するか不明だけれど、ユーザの希望としては、
いつかそのデータをWEB上で公開したい。(或いはその考えが今はある。)

4・ユーザはとにかくパフォーマンスにはこだわる人(もしかしたら鐘さんが…)

5・3を踏まえ、いつかは又仕様変更の依頼があるかもしれない…。

というところですかね…

思うのですが、バイナリファイルとかの問題ではないような気がするのですが?
基本的にユーザが一人の場合と、複数の場合(データへのアクセスと変更について)
などの使用環境に基いてデータベースは選択された方が良いかと思います。
それとアプリケーションとデータベースの連携の中間にADO.NETなどが使われますが、それが
常時接続型(VB6.0のADOなど)と
非常時接続型(VB.NET以降で頻繁に使用されるADO.NETなど)
この2種類のデータアクセスの方法を仕様に盛り込むか?
で大きくデータベースアプリケーションのパフォーマンスは異なると思います。
先ずはそこからお調べになられた方がよろしいかと思います。

実際にコードを記述するに当たっては、多分、私より鐘さんの方が技術力ありそうですが…
まずはご返答ありがとうございます。

色々と言葉足らずで申し訳ありません。
現在製作中のソフトは基本的にはフリーソフトでと考えております。
つまり誰かに依頼されて作っているのではなく(アンケートで機能定義はしましたが)ユーザーはこう望んでいるんだろうなという仮定で製作しております。

私がお聞きした買ったのは要するに『データ件数が増えてもシリアライズ、もしくはファイル読み込みでデータを取得する時間は変わらないのか?変わるのならばどのくらいの件数でどのくらい時間がかかるのか?』ということです。
 私はデータを管理するのに単一ユーザーの場合、果たしてデータベースが必要なのか?と考えています。
現在のSQLを私は使いにくいものとしてとらえています。さらにその取ってきたデータをクラスに配置する作業(ORマッピング)まで工程が存在することを考えるとデータベース自体をあまり使いたくありません。そこで登場してくるのがファイル形式もしくはシリアライズです。ファイル形式はSQL文の変わりに読み込み作業(データ取得自体はDBより簡単)とORマッピングがDBと同じようにかかりますがユーザーにDBインストール作業をさせません。シリアライズ処理にいたっては読み込みこそ手間がかかりますが、ORマッピングは必要ありません。
このようにプログラマの立場として考えるならば、(今回のアプリケーションごとの利用予定ユーザーは一人です)DBと使うという方法はありえないのですが、ここでパフォーマンスという問題が出てきます。
ユーザーの立場からすると別にDBを使っていようがファイルを使っていようが関係なく彼らが注目するのはパフォーマンスと信頼性、それに機能と作業コストです。このうちDBを選択するとDBインストールという作業コストがかかります(インストール作業の無いDBがあるのかということも聞きたかったことの一つです)。インストール作業が無いファイル読み込みやシリアライズを選択しますとパフォーマンスに影響が出るかもしれません。これらを踏まえた上で、どちらを選択するかの判断材料が欲しかったわけです。

 ADO.NETでは一度苦労しました。十万件程度でパソコンがフリーズするんですからねえ。そのときはADO.NETの接続型で解決しましたが・・・。

DOBON.NET | プログラミング道 | プログラミング掲示板