- - PR -
.NET2005で大量テキストデータ
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-04 20:31
お世話になります。
.Net2005/fw2.0でテキストの大量データを取り扱う事に なりました。 次の二点で優れている標準のコンポーネントを探しています。 ・データを表示するグリッド系 ・データアクセスコンポーネント データの表示に関しては以前fw1.1で標準のコンポーネントでDataGrid、ListViewあたりを使用したのですが10万件等になると動作もままなりませんでした。 fw2.0からは仮想化できるという情報はよく聞きます。 同開発経験がありましたら、もっとも向いていると思われるコンポーネントを教えていただけたらと思います。 データはテキスト1ファイルで十数万件単位で扱います。 要求はとにかく大量のデータをいかに早く表示できるかです。 表示だけならばスクロールバー等を用いて自前で作成(配列から画面に見えているデータだけ出すベタな方法)する事も検討しています。 データの読み込みについてはまだ考えきれていません。 皆さんのご経験を元にお聞かせ願えましたらと思います。 | ||||||||
|
投稿日時: 2008-06-04 23:08
素朴な疑問なんですが、10万件のデータをグリッドに一覧表示して何がしたいのでしょうか?
10万件ものデータをスクロールしながら眺めるメリットが思い浮かびません。 | ||||||||
|
投稿日時: 2008-06-05 02:44
現実的に考えてオペレータは 1 秒に 100 行すら読むことができません。 つまり、少量のデータでも良いので早く表示し、あとはページング的な要素で対応すれば十分です。 ちなみに Web アプリケーション (ASP.NET) だったりしないですよね。(ガクガク) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-06-05 13:00
ご回答ありがとうございます。
そうなんですよね。 お客様のハンコを押していただける方に納得してもらう以外にメリットはないと思います。 推測の域ですが、10万件を超えるデータを目視で全て確認していく事はないと思います。 0.001%の調査が必要なレコードをソートしたデータからすぐに探したいという事でしょうか。
webではありません(苦笑) 画面周りは資産があるらしく、VB.NETで実装予定です。 テキストベースなのでまずアクセスをどうすればいいかでtxtSQLなどを考えたのですが意外と評価が悪かったので却下しました。 .NETのコンポーネントに対して試した事ないのですがLB_INSERTSTRING等を考慮しないとダメなのかとも思っています。 しかし仮にオブジェクトにデータ追加できても表示できるかどうか・・・。 しかし、お二方から意見いただいた限りでは、オペレータ的にもシステム的(?)にもやはり現実的ではないのでユーザビリティの見直しというところですか。 もう少しだけ検討したいので、現実的ではないにしても理論上実現可能な方法がありましたら紹介していただければと思います。 | ||||||||
|
投稿日時: 2008-06-05 14:50
.NET を良く知らないので、直接の回答ではありませんが、できるんじゃないんでしょうか? ちなみに、私が「仮想化」という言葉を勘違いしているかもしれませんが、Java の Swing の JTable ならば、普通にできることです。オンメモリーにあるデーターならば、行数が何万行になっても大丈夫です。 .NET もいまどきならできるんじゃないんですかね?どうなんでしょう? なお、ユーザビリティーの話ですが、私もそんなに10万件も表示してどうするの、とは場合によっては言いたくなるのですが、逆に人から10万件もあってどうするのと言われると、10万件位表示できなくてどうする、とも言いたくなります。 たとえば、プログラムのソースコードをテキストエディターで表示するときは、1千行くらいは普通にありますし、大きなものになると1万行くらいはわりと遭遇します。そのたかだか10倍の10万行が不可能というのは、ちょっとイマイチな制約かなとも思います。 Excel も、約6万5千行では足りなかったので、新しいバージョンでは増やしたのだろうと思います。 [ メッセージ編集済み 編集者: unibon 編集日時 2008-06-05 14:54 ] | ||||||||
|
投稿日時: 2008-06-05 16:16
Listviewの仮想化は可能です。
VirtualListModeとVirtualListSizeを設定し、 RetrieveVirtualItemイベントを使って表示を制御します。 ソートなども自分で制御する必要がある点が注意です。 [ メッセージ編集済み 編集者: Toshi 編集日時 2008-06-05 16:20 ] | ||||||||
|
投稿日時: 2008-06-05 16:50
DataGridViewも仮想化できますよ。
今見えてるデータだけ表示して、スクロールしたときにはじめてその部分のデータをロードするような動作ができます。 VirtualModeプロパティを使用します。 もっとも、私はそんなに大量のデータを表示する実装はしたことがないので実用性についてはわかりません。 | ||||||||
|
投稿日時: 2008-06-05 17:26
ちょっとアイディアが浮かんだだけで書いているので、気に入らなかったらスルーして欲しいんだけど。
Stirlingというバイナリエディタがあって、それの機能に「ビットイメージ表示機能」というのがあるんですよ。 「ドキュメントの内容をビットイメージとして表示する機能」なんだけど。 10万件のデータのうち(どういうデータなのか分からないので、定義は適当だけど)危険部位を赤で、安全な部位を緑で表示、ってな感じで表示してみると面白いんじゃないかな? あと、そのビットマップ上でマウスをドラッグさせると、google mapのように該当のデータの辺りに移動するようにとか。 # って、.NET全然知らんのだけど、結構難しいだろうなぁ。無責任なアイディアすみません。 |