5

SQLServerデータベースを使用してキャッシュされたオブジェクトを格納するカスタマイズされたキャッシュソリューションを開発しています。アプリケーションのホスティング環境は、memcachedやアプリファブリックなどの「インメモリ」キャッシュを提供しないため、SQLServerデータベースを使用する必要があります。

DataSetキャッシュされたオブジェクトのほとんどは単純な型(int、string、datesなど)ですが、s、DataTables、ジェネリックコレクション、カスタムクラス などのより複雑な型も格納する必要があります。

.NETのネイティブのシリアル化と逆シリアル化の経験はほとんどありませんが、オブジェクトを何らかの形式(binary、xml、JSONなど)にシリアル化してデータベースに保存し、それを引き出すときに逆シリアル化する必要があると思います。データベースの。「なんらかの形」とは何かについて、専門家の意見を伺いたいと思います。

JSON.NETを使用して、さまざまなAJAXリクエストのデータをJSONにシリアル化します。私の最初の考えは、キャッシュされたデータをJSONにシリアル化して、データベースに保存することでした。ただし、パフォーマンスとデータの整合性に最適なものについて、いくつか意見を聞きたいと思いました。

4

3 に答える 3

9

言及した3つのシリアル化オプション(binary、json、またはXML)はすべて、シリアル化形式の有効な選択肢です。他にも多くのシリアル化形式がありますが、あなたが言及した3つが最も一般的です。3つの中から選択することに関して、ここにいくつかの考慮事項があります:

  1. データをバイナリ形式でデータベースに保存する場合、SQL Server Management Studioまたはテキストエディターを使用してデータを確認したい場合は、人間が読める形式ではありません。データを手動で閲覧したい場合は、ある種の逆シリアル化ツールを作成する必要があります。

  2. バイナリ形式では、シリアル化オブジェクトのサイズが最小になり、次にjsonが続き、XMLが最大になります。実際のサイズの違いに関しては、データ構造によって異なります。

  3. パフォーマンスに関しては、バイナリシリアル化はjsonやXMLよりも高速である可能性があります。ただし、違いを確認するには、データを使用してこれをベンチマークする必要があります。

  4. 3つのフォーマットタイプすべてに対して優れた.netライブラリとBCLサポートがあると思うので、どのような選択でも実行できるはずです。

したがって、選択は、CPU使用率、ディスクストレージ容量、人間の可読性、および/または個人的な好みなど、どの要素が最も重要であるかによって異なります。

JSON.Netを使用して、データベースに保存するオブジェクトのシリアル化にjsonを幅広く使用しており、非常に気に入っています。SSMSを介してデータを手動で表示すると便利な場合があり、jsonはXMLよりもデータの方がはるかにコンパクトです。

于 2013-02-23T18:53:44.410 に答える
3

ジョーは死んでいるので、私はジョーの答えを繰り返しません。クラスをアップグレードすると、バイナリシリアル化によって複雑さが増すことを付け加えたいと思います。それは管理可能ですが、少し手間がかかり、バイナリシリアライザーを掘り下げる必要があります。テキストベースのアプローチと同様に、他のオプションを使用してデータを移行できます(たとえば、XMLでXSLTを実行できます)

于 2013-02-23T18:57:59.890 に答える
2

キャッシュは小さくて高速でなければなりません。私は何を使用するかについてより具体的にしたいと思います。

protobuf-netはSOが使用しているものと同じで、私はそれを使用していることをお勧めします。速度とサイズは非常に優れています。少なくとも私のテストでは、より小さく、より高速です。

同じ理由で(キャッシュのために)それを使用します。他のシリアル化ライブラリを試した後、これは結果としてより速く、より小さくなりました。キャッシュスキーマでは、機能をまだ修正していないために何かを変更する必要があるセットアップではないため、実際に何が入っているかを目で確認する必要はありません。

キャッシュオブジェクトの内容を確認したい場合は、それを出力する単純な関数を作成できます。

于 2013-02-23T19:54:20.493 に答える