- PR -

.NET2005で大量テキストデータ

投稿者投稿内容
迂遠
会議室デビュー日: 2005/12/21
投稿数: 6
投稿日時: 2008-06-04 20:31
お世話になります。

.Net2005/fw2.0でテキストの大量データを取り扱う事に
なりました。
次の二点で優れている標準のコンポーネントを探しています。

・データを表示するグリッド系
・データアクセスコンポーネント

データの表示に関しては以前fw1.1で標準のコンポーネントでDataGrid、ListViewあたりを使用したのですが10万件等になると動作もままなりませんでした。

fw2.0からは仮想化できるという情報はよく聞きます。
同開発経験がありましたら、もっとも向いていると思われるコンポーネントを教えていただけたらと思います。

データはテキスト1ファイルで十数万件単位で扱います。
要求はとにかく大量のデータをいかに早く表示できるかです。

表示だけならばスクロールバー等を用いて自前で作成(配列から画面に見えているデータだけ出すベタな方法)する事も検討しています。
データの読み込みについてはまだ考えきれていません。

皆さんのご経験を元にお聞かせ願えましたらと思います。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-06-04 23:08
素朴な疑問なんですが、10万件のデータをグリッドに一覧表示して何がしたいのでしょうか?
10万件ものデータをスクロールしながら眺めるメリットが思い浮かびません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-06-05 02:44
引用:

迂遠さんの書き込み (2008-06-04 20:31) より:

データはテキスト1ファイルで十数万件単位で扱います。
要求はとにかく大量のデータをいかに早く表示できるかです。


現実的に考えてオペレータは 1 秒に 100 行すら読むことができません。 つまり、少量のデータでも良いので早く表示し、あとはページング的な要素で対応すれば十分です。

ちなみに Web アプリケーション (ASP.NET) だったりしないですよね。(ガクガク)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
迂遠
会議室デビュー日: 2005/12/21
投稿数: 6
投稿日時: 2008-06-05 13:00
ご回答ありがとうございます。

引用:

burton999さんの書き込み (2008-06-04 23:08) より:
素朴な疑問なんですが、10万件のデータをグリッドに一覧表示して何がしたいのでしょうか?
10万件ものデータをスクロールしながら眺めるメリットが思い浮かびません。


そうなんですよね。
お客様のハンコを押していただける方に納得してもらう以外にメリットはないと思います。

推測の域ですが、10万件を超えるデータを目視で全て確認していく事はないと思います。
0.001%の調査が必要なレコードをソートしたデータからすぐに探したいという事でしょうか。

引用:

現実的に考えてオペレータは 1 秒に 100 行すら読むことができません。 つまり、少量のデータでも良いので早く表示し、あとはページング的な要素で対応すれば十分です。

ちなみに Web アプリケーション (ASP.NET) だったりしないですよね。(ガクガク)



webではありません(苦笑)

画面周りは資産があるらしく、VB.NETで実装予定です。
テキストベースなのでまずアクセスをどうすればいいかでtxtSQLなどを考えたのですが意外と評価が悪かったので却下しました。
.NETのコンポーネントに対して試した事ないのですがLB_INSERTSTRING等を考慮しないとダメなのかとも思っています。
しかし仮にオブジェクトにデータ追加できても表示できるかどうか・・・。

しかし、お二方から意見いただいた限りでは、オペレータ的にもシステム的(?)にもやはり現実的ではないのでユーザビリティの見直しというところですか。

もう少しだけ検討したいので、現実的ではないにしても理論上実現可能な方法がありましたら紹介していただければと思います。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-06-05 14:50
引用:

迂遠さんの書き込み (2008-06-04 20:31) より:
fw2.0からは仮想化できるという情報はよく聞きます。


.NET を良く知らないので、直接の回答ではありませんが、できるんじゃないんでしょうか?
ちなみに、私が「仮想化」という言葉を勘違いしているかもしれませんが、Java の Swing の JTable ならば、普通にできることです。オンメモリーにあるデーターならば、行数が何万行になっても大丈夫です。
.NET もいまどきならできるんじゃないんですかね?どうなんでしょう?

なお、ユーザビリティーの話ですが、私もそんなに10万件も表示してどうするの、とは場合によっては言いたくなるのですが、逆に人から10万件もあってどうするのと言われると、10万件位表示できなくてどうする、とも言いたくなります。
たとえば、プログラムのソースコードをテキストエディターで表示するときは、1千行くらいは普通にありますし、大きなものになると1万行くらいはわりと遭遇します。そのたかだか10倍の10万行が不可能というのは、ちょっとイマイチな制約かなとも思います。

Excel も、約6万5千行では足りなかったので、新しいバージョンでは増やしたのだろうと思います。

[ メッセージ編集済み 編集者: unibon 編集日時 2008-06-05 14:54 ]
Toshi
ベテラン
会議室デビュー日: 2007/09/18
投稿数: 68
お住まい・勤務地: 関東のどっか
投稿日時: 2008-06-05 16:16
Listviewの仮想化は可能です。

VirtualListModeとVirtualListSizeを設定し、
RetrieveVirtualItemイベントを使って表示を制御します。
ソートなども自分で制御する必要がある点が注意です。


[ メッセージ編集済み 編集者: Toshi 編集日時 2008-06-05 16:20 ]
rucio
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 98
投稿日時: 2008-06-05 16:50
DataGridViewも仮想化できますよ。
今見えてるデータだけ表示して、スクロールしたときにはじめてその部分のデータをロードするような動作ができます。
VirtualModeプロパティを使用します。

もっとも、私はそんなに大量のデータを表示する実装はしたことがないので実用性についてはわかりません。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-06-05 17:26
ちょっとアイディアが浮かんだだけで書いているので、気に入らなかったらスルーして欲しいんだけど。

Stirlingというバイナリエディタがあって、それの機能に「ビットイメージ表示機能」というのがあるんですよ。
「ドキュメントの内容をビットイメージとして表示する機能」なんだけど。
10万件のデータのうち(どういうデータなのか分からないので、定義は適当だけど)危険部位を赤で、安全な部位を緑で表示、ってな感じで表示してみると面白いんじゃないかな?
あと、そのビットマップ上でマウスをドラッグさせると、google mapのように該当のデータの辺りに移動するようにとか。

# って、.NET全然知らんのだけど、結構難しいだろうなぁ。無責任なアイディアすみません。

スキルアップ/キャリアアップ(JOB@IT)