効率的かつ一貫性のあるデータ処理は、現代の最大の課題の XNUMX つになっています。 大量のトランザクション データを常に処理する Web アプリケーションには、パフォーマンスとスケーラビリティがありません。 幸いなことに、キャッシュを導入してこのような状況に対処し、頻繁なネットワーク トリップに起因する大きなコストを回避できます。
ただし、キャッシュを使用している間、アプリケーションは XNUMX つのデータ ソースを処理する必要があるため、アプリケーション コードが複雑になり、パフォーマンスがさらに低下する可能性があります。 キャッシュ ミスの場合と同様に、必要なデータを取得してキャッシュに格納するために、データベースへのネットワーク トリップが必要になります。 アプリケーション コードを簡素化し、ネットワーク トリップに伴う待ち時間を短縮するには、 NCache Read-Through と呼ばれるカスタマイズされたデータ ソース プロバイダーを提供します。 このプロバイダーは、アプリケーションに代わってデータベースと対話し、データ ソースから必要なデータをフェッチし、現在および将来の使用のために XNUMX 回の操作でキャッシュにデータを取り込みます。
リードスルーとは?
Read-Through は、データベースからデータを取得する方法とタイミングをキャッシュに伝える、カスタマイズされたデータ ソース プロバイダーです。 Read-Through は、アプリケーションに代わってデータ ソースと対話し、実行時のデータベース トリップを回避することで、アプリケーションのパフォーマンスを向上させます。
でのリードスルーの使用 NCache
リードスルー キャッシングでは、キャッシュ ミスが発生すると、 NCache get 呼び出しでデータをロードするためにプロバイダーを呼び出します。 複数のサーバーが関与するクラスター化されたキャッシュでは、すべてのキャッシュ サーバー ノードで ReadThrough プロバイダーがアクティブ化 (初期化) されます。 ただし、リードスルー操作は、使用されるトポロジに従って実行されます。
リードスルーとともに、 NCache のオプションも提供します 強制リードスルー。 強制リードスルーを有効にすると、プロバイダーはキャッシュ内のデータを無視し、データ ソースからデータを強制的にフェッチします。 したがって、データはキャッシュ内でチェックされず、データ ソースから直接フェッチされます。
NCache キャッシュを最新の状態に保つための複数の方法を提供し、 データの有効期限 その一つです。 ただし、期限切れだけでもパフォーマンスが低下する可能性があります。 リードスルー たとえば、e コマース ストアでは、何百もの商品がキャッシュされており、そのうちのいくつかは頻繁にアクセスされます。残りのキャッシュされたアイテムはそこに留まり、キャッシュ メモリを消費します。
有効期限を使用すると、指定した時間またはアクセス頻度が経過するとアイテムを無効にすることができます。 ただし、アイテムが最終的に期限切れになる可能性がありますが、アプリケーションはまさにそのアイテムを要求します。 このような場合、アプリケーションはデータベースからアイテムをフェッチしてからキャッシュに追加する必要があります。 この実行時のデータベース トリップにより、一定の遅延が発生する可能性があり、その結果、アプリケーションのパフォーマンスが低下します。
このパフォーマンスの遅れを回避するには、リードスルーと 再同期オプション プロパティは、キャッシュから有効期限が切れた時点で、再同期フラグで構成されたすべてのアイテムを自動的にフェッチします。 これにより、キャッシュが常に最新の状態に保たれ、キャッシュ ミスが減り、実行時のデータベース トリップが回避されます。
同様に、依存関係も、キャッシュ内のデータの一貫性を維持するための優れた方法です。 特に、データベース内の対応するデータが更新されるたびにキャッシュに通知され、それぞれのデータが自動的に無効になるように、ユーザーがデータベースとデータの同期を維持したいシナリオでは。 このようにして、キャッシュ内のデータは最新の状態に保たれ、すべての操作で更新されたデータ セットが使用されます。
読み飛ばしの意義
特に次の状況では、リードスルー データ ソース プロバイダーを使用することをお勧めします。
簡素化されたアプリケーション コード
リードスルーは、この簡素化を実現するために、「関心の分離」原則を使用してアプリケーション コードを実装します。 リードスルーを展開した後、データベースとのすべての通信はデータ アクセス レイヤーを介して行われます。 必要なデータを提供し、キャッシュをデータベースと同期させるのは、キャッシュの役割です。
読み取りスケーラビリティの向上
ResyncOptions プロパティを使用したこの機能は、キャッシュ項目を常に利用可能にして更新することで、読み取りのスケーラビリティも向上させます。 多くの状況が考えられます。 キャッシュ アイテムの有効期限が切れる データベースは、ユーザー スレッドからの無数の要求に直面します。
この状況は、数百万のキャッシュされたアイテムと数千の並列ユーザー要求と相まって、データベースの負荷が著しく高くなります。 幸いなことに、ResyncOptions を使用した Read-Through は、データベースからキャッシュ項目の最新のコピーを取得している間、キャッシュ項目をキャッシュに保持し、次にキャッシュ項目を更新します。データベースの負荷を最小限に抑えます。
キャッシュの高いデータ可用性と一貫性
リードスルーは、キャッシュを自動的に更新することで、キャッシュ内の高いデータ可用性と一貫性を保証します。 NCache ResyncOptions で指定されたリードスルー プロバイダーは、有効期限が切れた後、またはデータベース内の対応するデータが変更された直後にオブジェクトを再読み込みします。 これにより、キャッシュ データが古くなるのを防ぎます。
リードスルーを使用してパフォーマンスを最適化する方法
リードスルーは、キャッシュの一貫性を維持するだけでなく、取得できるようにすることでアプリケーションのパフォーマンスを向上させます アイテムを一括でキャッシュする、したがって、コストのかかるデータベース呼び出しとネットワーク旅行を節約できます。
さらに、リードスルーはキャッシュの優れた代替手段となります。 キャッシュはさておき、アプリケーションはデータ ソースからデータを取得してキャッシュを更新します。これにより、アプリケーションの責任が増大し、アプリケーション コードが複雑になり、アプリケーションのパフォーマンスが低下します。
まとめ
NCacheのリードスルー データ ソース プロバイダは、アプリケーションのパフォーマンスを向上させ、高いデータ可用性を保証します。 また、リードスルーは、データ ソースと通信するためのコード チャンクを排除することでアプリケーション コードを簡素化し、アプリケーションに代わってデータベースと対話します。 したがって、常緑のキャッシュ データが必要な場合は、迷わず入手してください。 NCacheの 60 日間無料トライアル。