いつもお世話になっています。CCです。
自作のアプリがありまして、以下の問題があります。
現状:
データ(ラスター、ベクター)は各自のパソコンに置いて使っています。
問題点:
ラスターデータは共通ですが、変更などがありません、大量です。
ベクターデータは更新など変更があります。
(どちのファイルを更新するか調べる必要です、かなり面倒です。)
これから、したいことは
ラスター、ベクターデータをサバ(或いは、一台パソコン)に
置きます(ネットワークで)、
ラスターは表示だけです。
ベクターデータを開く時に最新ファイルです。
ちなみに、同時にアクセスは5台以下です。
以上ことですが、可能なのでしょうか。
よろしくお願いします。
環境: .Net2002、 WinXP
> ちなみに、同時にアクセスは5台以下です。
> 以上ことですが、可能なのでしょうか。
多分1番簡単なのは、サーバに共有フォルダを作って、
クライアントのプログラムがそこのファイルを操作する方法。
ラスタデータについては、実際どのくらいの大きさ・数なのでしょうか?
サーバに置いておくメリットは、ディスク容量の節約、同じラスタデータを
使って作業していることの保証といったところでしょうか。
ディメリットは、ネットワーク負荷の増加と読み込みに時間がかかること。
メリットもディメリットもまだあると思いますが、このトレードオフで
現状どおり各クライアントが持つか、サーバが持つかを決定します。
(投稿の内容では情報不足で判断できない)
ベクタデータについては、全員が同じファイルを操作するのか、
各自がそれぞれのファイルを操作するのかで大きく事情が違います。
同じファイルを操作するのなら、普通はサーバに置くべきですが、
各自が同時に編集しようとした場合にどうするか等、排他処理に
気を使う必要があります。例えば、編集中はベクタデータと同じ
フォルダに編集中.txtという空のファイルを作成しておくとかで、
他のクライアントが作業をしているかどうかを見分けることができます。
(プログラムが異常終了したりするとファイルが残り続けてしまうけど)
各自がそれぞれのベクタデータを操作する場合、クライアントにファイルを
置くのが基本だと思いますが、サーバに置いて管理したい場合などは、
操作する人のIDやクライアントのID等をフォルダ名(またはファイル名)にして、
保存しましょう。
# 可能なのでしょうかと聞かれたら、可能ですという答ですが、
# 具体的に何を聞きたいのですか?
たいちうさん、
ご返事ありがとう。
>ラスタデータについては、実際どのくらいの大きさ・数なのでしょうか?
tiffファイル(圧縮ある)一枚約150KB前後、展開すると約1MBです。
枚数約1000枚です。
>サーバに置いておくメリットは、ディスク容量の節約、同じラスタデータを
>使って作業していることの保証といったところでしょうか。
はい、そうです。
もう一つのは、ラスターデータを勝てにコピーしたくないです。
作業中時に、表示するだけです。
(ラスタデータを保護したい)
>ディメリットは、ネットワーク負荷の増加と読み込みに時間がかかること。
一度に同時表示するのは約40枚前後ですが、どのぐらい時間がかかるのは、
わかりません(やったことがないです)、
>各自がそれぞれのベクタデータを操作する場合、クライアントにファイルを
>置くのが基本だと思いますが、サーバに置いて管理したい場合などは、
>操作する人のIDやクライアントのID等をフォルダ名(またはファイル名)にして、
>保存しましょう。
目的というのは、アプリを起動すると、一番最新ファイルを読み込みます、
編集などして、アプリを終了するときに、上書きします。
例:3人の場合は、Aさん、Bさん、Cさんの場合:
Aさん、Bさん、Cさんはそれぞれ開いています、
そのとき、三人とも同じファイル(1番目ファイル)を開いています。
保存するときに、Bさん先に保存と仮にします、
1番目=>1番目_Bさんファイル
次に、Cさん保存します、
1番目=>1番目_Cさんファイル
最後、Aさん保存します、
1番目=>1番目_Aさんファイル
最後に、1番目_Bさんファイル+1番目_Cさんファイル+1番目_Aさんファイル
を統合して、2番目ファイルになります。
(排他処理が必要ないです)
># 具体的に何を聞きたいのですか?
以上の目的で、サバにアクセスの方法ですが、
どうしたらいいでしょうか。
(アプリ起動すると、直接にサバへつなぐ)
よろしくお願いします。
どうしたら良いのかというはまだ具体化が足りないと思いますけれど。
既にたいちうさんが言われているように共有フォルダに置いておいて
ネットワークドライブとして普通にアクセスするのが一番簡単ですね。
ただし、毎回ネットワーク越しだとローカルのディスクより遅くなりますし、
ネットワークのトラフィックも心配・・・
と、既にたいちうさんが指摘されていますよね。
>>ディメリットは、ネットワーク負荷の増加と読み込みに時間がかかること。
>一度に同時表示するのは約40枚前後ですが、どのぐらい時間がかかるのは、
>わかりません(やったことがないです)、
やった事がないならやって見て試してみるべきです。
単純なコピーなら直に時間くらいはかれると思いますし。
方法を決める為の決め手になるような情報が殆ど無くて
ただ利用状況だけが提示されても方法論には行き着けないです。
ネットワークドライブ扱いでやってしまうのか?
サーバーソフトを作成して独自プロトコルで通信を行なうのか?
HTTPサーバーとCGIでデータ配信等を行なうようにするのか?
やり方はいっぱいあると思いますが、どれにするのかの決め手が
書き込まれている情報にはないように感じます。
>最後に、1番目_Bさんファイル+1番目_Cさんファイル+1番目_Aさんファイル
>を統合して、2番目ファイルになります。
>(排他処理が必要ないです)
気になったのはこの統合作業をいったいいつのタイミングで行なうのかですね。
常時アクセスがあるのなら統合する暇なんてあるのかと言う話と、
本当に統合できるの?と言う話。
マージする時にある人の修正が他の人の修正で消えたなんて事が
簡単に起こりそうです。
それに統合処理を行っていないファイルは事実上最新ではないような気もします。
排他処理をきちんとして同時に修正できないようにした方が整合性は取りやすい
と思いますけれど。
> もう一つのは、ラスターデータを勝てにコピーしたくないです。
> 作業中時に、表示するだけです。
> (ラスタデータを保護したい)
サーバー系のウインドウズは、ユ-ザー毎にアクセス制限出来るはずです。
調べてみてください。OSに任せたほうがいいと思います。
ベクタデータはバイナリーデータですか?
テキストデータでフォーマットが決まっているのならデータベース化するのが
いいと思います。
お客さんに、データベースの選定(オラクル、SQLサーバ、MYSQL等)、管理等をして頂く
こと前提にソフトを組むのがいいと思います。
修正です。
誤
をして頂くこと前提にソフトを組むのがいいと思います。
正
をして頂くことを前提にソフトを組むのがいいと思います。
PATIOさん、ITO さん
ご返事ありがとう。
自分が勉強不足だと思っています。
>ネットワークドライブ扱いでやってしまうのか?
ネットワーク経由でコンピュータへアクセスの方法がわかりません。
例
m_FilePath=マイ ネットワーク:\\グルプ名\\Aさんパソコン名(あるいはサバ名)
\\***システム用\\;
としたら、ファイルが開かない。失敗しました。
>ベクタデータはバイナリーデータですか?
>テキストデータでフォーマットが決まっているのならデータベース化するのが
>いいと思います。
テキストファイルです。
フォーマットが決まっています。
データベース化というのは、どいうことでしょうか。
(単純で、新規検索結果を最新ファイルに追加するということでしょうか。)
よろしくお願いします。
> データベース化というのは、どいうことでしょうか。
身近なデータベ-スですとアクセスになるんでしょうか。
ただアクセスだとサーバーとしての管理ができないので
(オラクル、SQLサーバ、MYSQL等)を使うといいのかなと思いました。
> 一度に同時表示するのは約40枚前後ですが、どのぐらい時間がかかるのは、
> わかりません(やったことがないです)、
規模が大きそうなので、データの信頼性からもオラクル、SQLサーバ、MYSQL等を
使ったほうがいいのかと思いました。
データの読み書きにはADOやODBC等を使います。
大変申し訳ございませんが
VCに関する質問の会話と言うより、回答者に仕様策定をお願いしている
会話にしか見えないのですが、如何な物でしょうか?
最初の質問にある「可能なのでしょうか。」に対して
仕様内容によって可能としか、回答のしようがなですよ
どう見ても、具体的仕様案を明示出来ていないものに対して
回答者が、仕様策定してもらう、もらえる(期待)
やり取りにしか見えません
もっと具体的に、自分の行っている(知っている)、技術情報を
明示しなければ、いけないのではないでしょうか?
>cc 2008/01/29(火) 15:37:05
の発言からすれば
サーバーPCをDとするなら
Dに巡回PG(統合やアクセス管理)を入れて置くことが考えられますよね
ですが、これまでの内容からすれば
クライアント(A,B,C)におかれているPG側だけでなんとか成らないか
を聞いているようにも聞こえます
どこに置くPGで解決したいのか、ネットワーク形態は
PGを置く場所はクライアントでは無くサーバーにおくのか
等々によってもいろいろ対応方法が変わってくるのではないでしょうか
データの種類はどうであれ、共有方法だけ聞きたいのか
限定・具体化した、質問にしていただけませんでしょうか?
> ネットワーク経由でコンピュータへアクセスの方法がわかりません。
クライアント上のPGからサーバの共有フォルダのファイルを指定するには、
次のように書けばよいと思いますが。
\\\\サーバ端末名\\共有フォルダ名\\フォルダ名\\ファイル名
1.クライアントからエクスプローラで、サーバーのファイルを見ることが
できるか?アドレスが表示されるので参考になるはず。
2.PGで、クライアント上のファイルを開いて中を見ることができるか?
これができていないと話にもならない。
1と2の両方ができているなら、まずは小さなテキストファイルを
サーバーに置いて、試してみましょう。
>VCに関する質問の会話と言うより、回答者に仕様策定をお願いしている
>会話にしか見えないのですが、如何な物でしょうか?
私も同感です。
きちんとした仕様を決めてこれで実現可能かと言う話なら
まだわかるんですが、細かい部分を決める所もこちらに丸投げに
見えます。御本人に知識が無いとしても会社としてやっているなら
その姿勢には問題があるように感じます。
この記述でネットワークコンピュータにアクセスできなかったから教えて欲しい
と言う話ならこの掲示板にもなじむ話題だと思いますけれど、
仕様云々の話に関してはかなり疑問を感じます。
ITOさん、wood さん、たいちう さん、PATIO さん
ご返事ありがとう。
>(オラクル、SQLサーバ、MYSQL等)を使うといいのかなと思いました。
その辺は知識が足りないのですが、これから勉強します。
>データの読み書きにはADOやODBC等を使います
わかりました、Accessを使ったほうがいいですね。
>\\\\サーバ端末名\\共有フォルダ名\\フォルダ名\\ファイル名
なるほど、アクセスができました。
>1と2の両方ができているなら、まずは小さなテキストファイルを
>サーバーに置いて、試してみましょう。
これから、やってみます。
>データの種類はどうであれ、共有方法だけ聞きたいのか
>限定・具体化した、質問にしていただけませんでしょうか?
>私も同感です。
すみませんですが、質問が下手です。
聞きたいことは、まず、…可能なのでしょうか、
つぎに、可能なら、どういうふうにすればいいでしょうか
ということです。
今の段階では、ほぼ問題を解決しました。
残りのは”(オラクル、SQLサーバ、MYSQL等)”などのことです。
どうもありがとうございました。