現在、すべてのビジネス アプリケーションはキャッシュを使用して、データ取得のパフォーマンスを向上させ、データベースから直接データを取得する必要性を減らしています。 データベースが最新の Web アプリケーションの速度を低下させ始めて以来、さまざまなデータ キャッシング手法が提案されてきました。 データ キャッシングは、データベースのスケーラビリティとパフォーマンスの問題に対処するのに役立ちますが、データの不整合を維持するという別の問題も引き起こします。
データベースと対話しているアプリケーションが他のアプリケーションによって変更されている場合、データの不整合の問題が発生します。 その場合、アプリケーションはすべてのシナリオでデータベースの更新を担当しないため、キャッシュは同期されません。 アプリケーション以外にデータベースと対話する他のアプリケーションがない場合、すべての変更がキャッシュとデータベース間で同時に同期されるため、データが古くなる可能性は非常に低くなります。
ネットワーク内のデータの有効性は、キャッシュの一貫性と呼ばれます。 キャッシュの一貫性により、生成されたクエリに対して有効なデータのみが返され、すべての古いデータがキャッシュからすぐに削除されることが保証されます。 そこで、ここではその強力なメカニズムについて説明します。 NCache ユーザーがキャッシュとデータベース間のデータの一貫性を維持することを心配する必要がないようにします。
キャッシュデータベースの同期
キャッシュの不整合は、データベースにとってデータ損失と同じくらい悪い場合があります。 キャッシュ内のデータが更新されない場合、決定を行うためにキャッシュに依存しているアプリケーションは、使用されるデータと行われた決定の両方が無効になるため、影響を受けます。 キャッシュは、読み取り集中型のワークロードをスケーリングするために頻繁に使用されます。 その結果、同期されていないキャッシュとデータベースは、提供されたデータに基づく意思決定に大きな影響を与える可能性があり、データの正確性も影響を受け、ひいてはビジネス上の損失を引き起こします。
データの不一致の理由と結果
キャッシュに静的データが含まれている場合は、変更が発生せず、データの不整合が発生しないことを意味します (get などの読み取り操作を使用)。 ただし、データが頻繁に変更される場合 (追加、更新、挿入、削除などの書き込み操作を使用)、データが変更されるたびに、キャッシュはプライマリ データ ソースに関して自身を同期する必要があります。 データの不一致に固有の課題を理解することは特に困難であり、データの不一致の最も一般的な理由は次のとおりです。
-
データベースでデータが変更されているが、キャッシュには反映されていない
各書き込み操作で、プライマリ データベースのデータは変更されますが、データベースの変更はキャッシュに反映されません。 キャッシュからのデータを使用するアプリケーションは、ミッション クリティカルなアプリケーションのパフォーマンスに大きな影響を与える古いデータを取得します。
-
データはキャッシュで変更されますが、データベースには反映されません
キャッシュ内のデータが変更された場合に変更がデータベースに反映されず、データベースから直接提供されるアプリケーションに古いデータが含まれるため、データの不整合の問題が発生することもあります。
-
キャッシュ更新の遅延
変更反映の遅れにより、データの不整合が発生する可能性があります。
たとえば、キャッシュの更新が遅れてデータの不整合が発生した場合、同じオブジェクトがキャッシュとデータベースに異なるコピーを持つ可能性があります。 読み取りパスは標準的な手順に従っているように見えますが、キャッシュとデータベースの同期を維持するために、データベースで変更が発生するたびにデータを同期する書き込みパスのメカニズムも必要です。
を使用してデータの一貫性を保つ NCache
NCache は、ミッション クリティカルなアプリケーションだけでなく、高いユーザー負荷をサポートするアプリケーションのデータ整合性の価値を認識しています。 NCache は、データベースに関するキャッシュ内のデータの一貫性を維持するための広範なプロパティを備えた多くの強力な機能を提供し、その逆も同様です。 データベースでデータが変更されると、データを保持するキャッシュが古くなり、一貫性がなくなり、データの精度とビジネスに悪影響を及ぼし、損失につながります。 したがって、これらの問題を念頭に置いて、 NCache 得られます。
1. キャッシュ内のデータの有効期限
NCacheのデータ有効期限機能は、常に新しいデータを必要とし、キャッシュ内の不要になった古いデータを削除する多くの重要なビジネス アプリケーションにとって命の恩人です。
キャッシュから古いデータを失効させると、関連する更新されたデータがクライアントに提供されます。 データの有効期限 NCache には、絶対型とスライド型の XNUMX つのタイプがあります。 絶対有効期限は、特定の期間使用されるデータで使用され、その後は不要になります。 そのため、キャッシュにアイドル データを保持する代わりに、指定された期間が経過すると有効期限が切れます。 これを読む ブログ で有効期限を使用してキャッシュ内のデータを最新に保つ方法を学習する NCache.
NCache 詳細 のデータ有効期限 NCache 絶対有効期限
ただし、スライド有効期限には有効期限が指定されていますが、使用状況によって異なります。 前回の経過時間に関係なく、アクセスするたびに時間がリセットされるため。 このようなデータは、指定された時間内にキャッシュに追加され、指定された時間内に再び使用される場合に備えてさらにスライドします。
NCache 詳細 のデータ有効期限 NCache スライド式の有効期限
2.キャッシュリフレッシャー
NCache 特定の時間間隔の後にキャッシュ内のデータを更新するキャッシュ リフレッシャー機能を提供します。 キャッシュ リフレッシャーは、最適化された方法で動作します。 キャッシュ リフレッシャーは、ユーザーが指定した間隔で指定されたデータセットを更新して、データが古くなるのを防ぎます。 更新/リフレッシュが必要なデータセットを確認するために、リフレッシュ間隔と呼ばれる特定の時間後にスレッドが実行されます。 ユーザーは、 NCache マネージャー または NCache PowerShellコマンドレット. ブログを読む こちらキャッシュ リフレッシャーを使用してキャッシュ内のデータを最新の状態に保つ方法の詳細については、 を参照してください。
3. キャッシュの依存関係
アプリケーションのパフォーマンスとスケーラビリティを向上させるために、データベース呼び出しを頻繁に行うアプリケーションの大半は現在、分散キャッシュを採用しています。 このため、データベース データが変更されるたびに、キャッシュ データを無効にして削除することをお勧めします。
NCache データを無効にするメカニズムを提供します – 依存関係をキャッシュします。
キャッシュの依存関係は、使用率の高いもう XNUMX つの広範な機能です。 キャッシュの依存関係は迅速に機能し、データベースで変更が発生するとすぐに、キャッシュからオブジェクトが自動的に削除されます。 データベースからのデータが再度フェッチされ、キャッシュには常に更新されたデータが含まれます。 キャッシュ内のデータは、アイテム、ある場所にあるファイル、データベース内のレコード、特定のクエリの結果、または別のキャッシュされたアイテムとの依存関係に基づく関係を持つことができ、アイテムの変更によってキャッシュ内のデータが無効になる可能性があります。 . データの依存関係を使用したキャッシュ内のリレーションシップの管理について詳しくは、こちらをご覧ください。 こちら.
NCache 詳細 リレーショナルデータの管理 データ依存性ドキュメント
4. データソースプロバイダー
キャッシングは主にデータをキャッシュしてパフォーマンスを最大化するために使用されます。 クライアント アプリケーションは、キャッシュの使用中にデータ ソースに対して操作を実行する必要がある場合があります。 NCache リードスルーおよびライトスルー/ライトビハインド キャッシングを提供し、データ ソースでの透過的な読み取り/書き込み操作を可能にします。 この機能を使用すると、クライアント アプリケーションは、必要に応じて、キャッシュを介してデータ ソースに対してデータの読み取りまたは書き込みを行うことができます。
- リードスルー
NCache 独自のリードスルー プロバイダーを使用してデータ ソースと通信します。 リードスルー キャッシングでは、キャッシュ ミスが発生した場合、 NCache get 呼び出しの背後でデータをロードするためにプロバイダーに連絡します。 リードスルー プロバイダーは、複数のサーバーを持つクラスター化されたキャッシュ内のすべてのキャッシュ サーバー ノードでアクティブ (初期化) になりますが、リードスルー操作はトポロジによる取得操作を受け取るノードによって実行されます。
- ライトスルー
ライトスルー キャッシュを使用する場合、最初に操作がキャッシュ ストアに適用され、次に構成されたデータ ソースが同期的に更新されます。
ライトスルーを使用した操作は、 NCache データ ソースに対してそのような操作を実行します。 すぐにデータ ソースを更新する必要があり、キャッシュが更新されたらすぐにデータ ソースを更新する必要がある場合は、ライトスルー キャッシュを使用できます。 以下を読んで ブログ WriteThru の詳細については、
- 後書き
後書きのデータ ソース操作は、次のように非同期で実行されます。 NCache キャッシュストアでの操作。 これらの操作は、キャッシュ ストアの更新後にキューに入れられ、構成されたデータ ソースに非同期的に適用されます。 その結果、Write-Behind を使用すると、キャッシュ操作が高速化されます。
まとめ
キャッシュとデータベース間のデータの一貫性を維持することは、 NCacheの強力な同期メカニズムは、同期的および非同期的に機能し、常に更新されたデータをミッション クリティカルなアプリケーションに提供します。 データの精度に妥協せず、データの高可用性を確保することにより、 NCache は、データを同期するためのシームレスな方法をユーザーに提供しています。 だから、使う NCache データ ストレージとデータベースに関連するパフォーマンスのボトルネックを取り除きます。 として NCache キャッシュとデータ ソース間のデータの不整合のリスクを自動的に排除し、データの不整合によるビジネス上の損失を回避するのに役立ちます。