現在、分散キャッシュは、トラフィックの多いアプリケーションでスケーラビリティとパフォーマンスを実現するために広く使用されています。 分散キャッシュは、メモリ内ストアからキャッシュされたデータを提供することにより、データベース サーバーの負荷を軽減します。 さらに、いくつかの分散キャッシュでは SQL のようなクエリ機能も提供されており、データベースをクエリするのと同じように分散キャッシュを簡単にクエリできます。 “SELECT employee WHERE employee.city=‘New York’”
まず、ほとんどの分散キャッシュは、 SQL のようなクエリ機能。 これを提供しているいくつかの企業でも、そのサポートは非常に限られています。 これらは、単純な基準に基づいた分散キャッシュの検索のみを提供します。 一方、集計関数に基づいて結果を見つける必要があるシナリオがいくつかあります。 “SELECT COUNT(employee) WHERE salary > 1000”
or “SELECT SUM(salary) WHERE employee.city = ‘New York’”
。 これを実現するには、まず分散キャッシュにクエリを実行し、次にフェッチされたキャッシュ データに対して集計関数を計算する必要があります。
NCache 詳細 NCache ドキュメント SQLクエリ入力 NCache ドキュメント
なぜ使用 NCache 集計関数を使用して分散キャッシュをクエリするには
このアプローチには XNUMX つの大きな欠点があります。 XNUMX つ目は、分散キャッシュに対してクエリを実行する必要があることです。これには、分散キャッシュからキャッシュ クライアントへのすべてのデータのフェッチが含まれます。 このデータは MB から GB まで変化する可能性があり、消費されたネットワーク帯域幅の料金も支払う場合、この操作の費用はさらに高くなります。 さらに、ほとんどの場合、集計関数の計算が完了した後は、このデータは必要ありません。
XNUMX 番目の欠点は、集計関数の計算にカスタム プログラミングが必要になることです。 これにより、余分な工数が追加されますが、それでも複雑なシナリオのほとんどをカバーすることはできません。 これらの追加機能を自分で設計して実装することを心配せずに、構築されている目的に合わせてアプリケーションの開発を続けることができれば、さらに良いでしょう。
これらが理由です NCache オブジェクト クエリ言語 (OQL) の一部として COUNT、SUM、MIN、MAX、AVG などの集計関数を使用して分散キャッシュをクエリする柔軟性を提供します。 使用する NCache OQL 集計関数を使用すると、分散キャッシュ ドメイン内で必要な集計計算を簡単に実行できます。 このアプローチにより、ネットワーク トラフィックが回避されるだけでなく、集計関数の計算のパフォーマンスも大幅に向上します。 これは、すべての選択と計算が分散キャッシュ ドメイン内で行われ、ネットワーク トリップが関与しないためです。
検索するコードサンプルは次のとおりです NCache OQL 集計クエリを使用する場合:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public void Main(string[] args) { ... NCache.InitializeCache("myPartitionReplicaCache"); String query = "SELECT COUNT(Business.Product) WHERE this.ProductID > ? AND this.Price < ?"; Hashtable param = new Hashtable(); param.Add("ProductID", 100); param.Add("Price", 50); // Fetch the cache items matching this search criteria IDictionary searchResults = _cache.SearchEntries(query, values); ... } |
クエリの実行時間をさらに短縮するには、 NCache map-reduce メカニズムと同様に、SQL に似たクエリをすべてのキャッシュ サーバーに分散することで、SQL に似たクエリを並列に実行します。 さらに、使用することができます NCache OQL は、.NET アプリケーションと Java アプリケーションの両方でクエリを集約します。
結論!
要約すれば、 NCache スケーラビリティとパフォーマンスだけでなく、SQL に似た集計関数を使用して分散キャッシュを検索する柔軟性も提供します。