2011-02-07 18 views
1

私は自分のWebサイトにカスタムデータサービスを持っています。これは、ユーザーのダウンタイムなしに10分ごとにデータを更新することになっています。 (asp.net mvc3、mssql 2008、c#)XDocumentを適切に保存する

現時点では10分ごとにデータが更新され、データベース(mssql)は問題なく更新されます。しかし、すべてのユーザーの要求に対してdbからデータを読み取るのではなく、データをリフレッシュした直後にXMLファイルに保存して、ユーザーがDB接続やプロセスを余儀なくされることなく取得できるようにすることです。

データを集めてXMLに書き込むプロセスが1つありますが、多くのユーザーが毎秒XMLを要求しています。

私はFile Write/Readのことについてよく知らないので、他のプロセスがそれを読み込んでいる可能性があるので、ファイルを書き込む前にファイルをロックする必要があるかどうかはわかりません。あるいは、1つのプロセスだけが書き込みを行い、他のプロセスがそれを読んで/要求しても何の問題も生じないので、それは問題ありませんか?また、XDocumentの保存機能が既に書き込まれる前にロックされているかどうかはわかりません。

です。他のプロセスがそのファイルを読み書きしている間に、XDocument objetをxmlファイルに安全に保存するにはどうすればよいですか?

OR SQLからデータを読み込むだけで(すべてのユーザに処理時間&の遅延はありません)、XDocumentオブジェクトを返すのは簡単でしょうか?

ありがとうございます!

答えて

2

XMLをファイルに書き出すのは良い考えではないと思います.DBを呼び出すよりも読み込みが速いとは限りません。代わりにASP.NET caching infrastructureを使用します。つまり、Cacheクラスを使用してデータをメモリにキャッシュします。これははるかに高速です。

+0

ああ今、それは理にかなっています。私はこのようなものに慣れていないので、私はそれを完全に忘れました。今それを見て、ありがとう! – Tiax

+0

ちょうどそれをテストし、滑らかで速く働いて、再びありがとう! – Tiax

0

ユーザーにデータを配信するように設計、テスト、構築されたデータベースがあります。なぜデータをそこから保存し、独自のファイルシステムベースのデータベースを実装したいのですか?

あなたが言及した最後のオプションは最高です。データベースに接続し、必要に応じてXMLをユーザに取得するだけです。効率的なクエリと堅実なDataAccessLayerをお持ちの場合、dbはうまく動作します。

+0

まあ、確かに私はすでにSQLを持っている間xirdを使用してちょっと奇妙に聞こえるが、私はちょうど10分ごとにデータが更新されている間、すべてのユーザーのためのデータを読み込んで処理するより良い方法があると思った。 – Tiax

+0

SQL Serverには、独自のキャッシュシステムが組み込まれています。.NET Frameworkには、閉じた接続をリサイクルして再利用する際に非常に高速な接続プールもあります。つまり、ASP.NETのCacheオブジェクトを使用して、10分ごとに有効期限が切れるようにしたり、独自のホイール(キャッシング)を実装するためにカスタムファイルI/Oを行う必要はありません –

0

もう1つのオプションは、memcacheまたはAppFabric Cacheなどのキャッシュメカニズムを使用することです。

+0

Eric私はそれがちょうど数秒前だったのでBrokenGlassの答えを受け入れなければならなかった:) – Tiax

関連する問題