C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: VB.NETでコードマスタをキャッシュで保持


(過去ログ 91 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■54269 / inTopicNo.1)  VB.NETでコードマスタをキャッシュで保持
  
□投稿者/ nosuke (1回)-(2010/10/12(Tue) 15:44:42)

分類:[.NET 全般] 

現在、VB.NET2005 Postgres8.3で開発を行っています。

処理速度の改善を求められており対応しています。

コードマスタ
・大区分番号
・大区分名称
・中区分番号
・中区分名称
・小区分番号
・小区分名称

から、条件を指定し値を取得するという部分なのですが。
これが、現在は毎回コードマスタを参照し対象のレコードを取得するといった処理になっています。

(例)大区分番号を指定したら、中区分番号、中区分名称を取得する。取得した値をコンボボックスにセット。

のような使い方をしており、コンボボックスの数分DBにアクセスを繰り返すといった処理です。

なのでこの部分を最初にキャッシュに保持しそこから取得すれば処理も早くなるかなと思っています。

そこで、いろいろと調べたのですが、ハッシュテーブルにコードマスタの値を取得し、そこから条件を指定して検索結果を
得るつくりにしたいのですが、初心者なものでよくコーディングの仕方がわかりません。。。

すみませんが、どなたかご教授願えればと思っています。よろしくお願いします。

引用返信 編集キー/
■54270 / inTopicNo.2)  Re[1]: VB.NETでコードマスタをキャッシュで保持
□投稿者/ 囚人 (548回)-(2010/10/12(Tue) 16:16:49)
Webアプリケーションなのかそうでないのかってのも多少変わりますが、

「処理速度の改善を求められ」て、処理が遅いの(ボトルネック)は「現在は毎回コードマスタを参照し対象のレコードを取得するといった処理」で確定なんですかね?

わりと普通の処理な気もしますけど、下手にキャッシュなんて使うとマスタ自体の更新と同期を取るのが大変になりますよ。

ここに努力する価値ありますかね(要は、ここが絶対遅いという確信があるのか)?
引用返信 編集キー/
■54275 / inTopicNo.3)  Re[2]: VB.NETでコードマスタをキャッシュで保持
□投稿者/ nosuke (3回)-(2010/10/12(Tue) 17:31:51)
No54270 (囚人 さん) に返信
> Webアプリケーションなのかそうでないのかってのも多少変わりますが、
>
> 「処理速度の改善を求められ」て、処理が遅いの(ボトルネック)は「現在は毎回コードマスタを参照し対象のレコードを取得するといった処理」で確定なんですかね?
>
> わりと普通の処理な気もしますけど、下手にキャッシュなんて使うとマスタ自体の更新と同期を取るのが大変になりますよ。
>
> ここに努力する価値ありますかね(要は、ここが絶対遅いという確信があるのか)?

そうですね。他の箇所も調べたのですが、画面を表示するのに、7秒掛かっていて、この中でも一番時間が掛かっているのが、
このコードマスタから値を取得しコンボボックスへセットする処理になります。
これが、1回の処理で70msec掛かっています。これを何回も繰り返しているので、ここが遅いかと。
他の処理は、基本的に20〜30msecになります。

ちなみに、コードマスタは変更することないので、同期は取れると思っています。


引用返信 編集キー/
■54279 / inTopicNo.4)  Re[3]: VB.NETでコードマスタをキャッシュで保持
□投稿者/ PATIO (24回)-(2010/10/12(Tue) 19:55:58)
2010/10/12(Tue) 19:56:33 編集(投稿者)


やり方論的な部分がある程度検討がついているのであれば、
コーディングの仕方が良くわかりませんと言うのがよく分からないです。
webアプリなのかと言う問いに対する答えも書かれていないようですし。

いきなりアプリに組み込むのではなくて簡単なテストコードを書いてみるとか
そういう方法で実装方法を探るのも有りではないかと思います。
既にある程度のコードは書かれていると思うのですが、本当に全くわかりませんか?
本当に分からない部分を突き詰めてその部分をピンポイントで質問した方がレスがつき易いと思いますよ。

引用返信 編集キー/
■54281 / inTopicNo.5)  Re[4]: VB.NETでコードマスタをキャッシュで保持
□投稿者/ nosuke (4回)-(2010/10/12(Tue) 20:30:33)
2010/10/12(Tue) 20:38:39 編集(投稿者)
2010/10/12(Tue) 20:38:15 編集(投稿者)
2010/10/12(Tue) 20:37:55 編集(投稿者)
No54279 (PATIO さん) に返信
> 2010/10/12(Tue) 19:56:33 編集(投稿者)
>
>
> やり方論的な部分がある程度検討がついているのであれば、
> コーディングの仕方が良くわかりませんと言うのがよく分からないです。
> webアプリなのかと言う問いに対する答えも書かれていないようですし。
>
> いきなりアプリに組み込むのではなくて簡単なテストコードを書いてみるとか
> そういう方法で実装方法を探るのも有りではないかと思います。
> 既にある程度のコードは書かれていると思うのですが、本当に全くわかりませんか?
> 本当に分からない部分を突き詰めてその部分をピンポイントで質問した方がレスがつき易いと思いますよ。

アプリは、C/Sになります。

ハッシュテーブルを使って、DBの構造をそのまま保持して、それを検索したいイメージです。
DataTable的にデータを持ちたい。

SortedListなどを使って、2次元的に保持できることは分かったのですが。。。

コードマスタのキーが、大区分番号、中区分番号、小区分番号となっているため、
大区分を指定したら、中区分が、大区分・中区分を指定したら小区分を取得するといったような
つくりにしたいです。

引用返信 編集キー/
■54288 / inTopicNo.6)  Re[5]: VB.NETでコードマスタをキャッシュで保持
□投稿者/ 囚人 (549回)-(2010/10/12(Tue) 22:52:08)
> ハッシュテーブルを使って、DBの構造をそのまま保持して、それを検索したいイメージです。
> DataTable的にデータを持ちたい。


その通りに、DataSet にグローバル変数的に持ったらいいんじゃないのかな?
検索は、DataTable の Select メソッド使うとか Linq to DataSet を使うとか。
引用返信 編集キー/
■54295 / inTopicNo.7)  Re[6]: VB.NETでコードマスタをキャッシュで保持
□投稿者/ やじゅ (1762回)-(2010/10/13(Wed) 03:26:08)
やじゅ さんの Web サイト
> その通りに、DataSet にグローバル変数的に持ったらいいんじゃないのかな?
> 検索は、DataTable の Select メソッド使うとか Linq to DataSet を使うとか。

囚人さんが仰るように、全レコードをフォームのメンバ変数のDataTable型で取得して、
大中小のコンボボックスには、DataView型のRowFilterを使って条件を絞った上で
ComboBoxのDataSourceにセットするようにすればいいかも。

DataView Tips 条件を指定してレコードを抽出する
http://hiros-dot.net/VBNET2003/Control/DataView/DataView10.htm

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -