Release Notes NCache 5.0

Tuesday, May 14, 2019

Introduction

NCache 5.0 contains a few important features related to clustering and caching. The release also contains major performance improvements. NCache 5.0 is a recommended upgrade for all NCache users.

Enhancements and New Additions

Following are some enhancements made in this release:

  1. New API
  2. NCache API has been refactored to make it simpler and easy to use by reducing the number of overloads to various methods. The new API is also using the latest features of C# and .NET Framework (Task Parallel Library, async methods, and generics).

  1. TOPIC (Pub/Sub) Enhancements
  2. Following enhancements are made to the NCache messaging framework.

    1. Wildcard support in TOPIC allows users to subscribe to multiple TOPICs in one call. When a client subscribes to a TOPIC, it can subscribe to the exact TOPIC of a published message or it can use wildcards to subscribe to multiple TOPICs simultaneously. A wildcard can only be used to subscribe to topics, not to publish a message. However, a publisher can receive failure notifications of published messages using wildcard TOPIC search.
    2. Durable Subscriptions ensure that the messages published on a TOPIC are delivered to suitable subscribers before it is removed from the store. By default, all subscriptions created on a TOPIC are non-durable subscriptions. That means that the messages for non-durable subscribers are not kept in store during the time it is disconnected with cache server.

    However, for durable subscriptions (named subscriptions), messages are stored until they are pushed to ALL or ANY subscribers within that subscription. If a durable subscriber comes back after an abrupt disconnection (leaving without calling Unsubscribe), it will be able to receive the messages published during the time it was down.

    However, messages are removed from store after their expiry even if they are not delivered to ALL or ANY subscribers.

    There are further two policies in Durable Subscriptions.
    -Shared, where there can be multiple subscribers in a subscription.
    -Exclusive, where then can be only one subscriber at a time in a subscription. All non-durable subscriptions are Exclusive.

  1. Performance Improvements
  2. Some major performance improvements are made in this release. Core sub-systems are redesigned to gain better performance of cache operations. Some of these improvements include the incorporation of the latest libraries like System.IO.Pipelines from Microsoft. System.IO.Pipelines is a new library that is designed to make it easier to do high-performance IO in .NET.

  1. Reliable Events
  2. All NCache events now internally use the more reliable NCache’s Pub/Sub framework. Following types are events are now based on Pub/Sub.

    • General cache notifications
    • Selective notifications
    • SignalR
    • Continuous Query
  1. Projections and FROM clause in SQL
  2. NCache’s SQL is enhanced now to have projections as well as FROM clause in an SQL statement. Previously, there were no projections in the SQL statement and as a result, complete cache items were returned matching the given criteria.

  1. Search on GROUPs in SQL
  2. Support to search cache items by their ‘Group’ through SQL is provided. Using this feature, users can query cache to return cache items against a ‘Group’ just like they do it for ‘Tags’.

  1. JSON Serialization
  2. Traditionally NCache stores items in the cache as Binary data. Binary serialization can be expensive in terms of both time as well as the memory it consumes. In NCache 5.0, users can optionally configure Cache to have JSON serialized store. JSON serialization is efficient in most cases.

  1. Distributed Data Types
  2. NCache now has distributed data types and data structures provided as implementations of .NET’s interfaces. Following implementations are provided.

    1. DistributedList is a distributed implementation of System.Collections.Generic.IList<T>. It allows duplicate keys and preserves their order.
    2. DistributedHashSet is a distributed implementation of System.Collections.Generic.ICollection<T>. It does not allow duplicate keys and does not preserve order. DistributedHashSet has additional methods for Union, Intersection, and Difference of two sets.
    3. DistributedDictionary is a distributed implementation of System.Collections.Generic.IDictionary<TKey, TValue>. It lets users store data in key-value pairs. Order is not preserved in this data structure.
    4.  DistributedQueue is also a distributed implementation of System.Collections.Generic.ICollection<T>. However, data stored in this data structure is consumed in the FIFO model, as it is in the case of Queues.
    5. Counter is a distributed data type which allows applications to Increment or Decrement its value.
  3. Schedule Maintenance Support in Partitioned-Replica
  4. Stopping a server node in maintenance mode causes the redistribution of data between the remaining nodes. This can take a lot of time depending on the data in the cache. During this time, the cache is in a vulnerable state and some operations might fail or take longer to execute.

    With this new feature, when a node is stopped for maintenance, the data in the cache is not redistributed. The feature is useful when a node in the cluster is stopped for a short time to apply patches or other maintenance work.

  1.  Location Affinity
  2. Location affinity means keeping the related cache items on one node. This feature can be helpful in many ways like faster queries and bulk operations etc.

  1.  Full-Text Searching (Distributed Lucene.NET)
  2. Lucene.NET is a text searching engine library but it's not distributed. With NCache’s Lucene.NET SDK, users will be able to build distributed Lucene indexes and query them. NCache’s Lucene.NET SDK is similar to Lucene.NET library, therefore, users don’t have to learn much to use NCache’s DistributedLucene.NET API.

  1.  .NET Core based NCache Server on Windows
  2. . NET Core based NCache Server will be available on Windows too. Previously, it was only available on Linux.

  1.  Server Activated Licensing
  2. This is a new licensing scheme where licenses are only activated on cache servers. However, cache servers are also activated to allow a certain number of clients to connect with caches. The number of server and client licenses required is the same as in Client-Server activation scheme.

  1.  Web-Based Management and Monitoring
  2. NCache configuration, management, and monitoring are done through a web-based application. By default, this application is installed on all cache servers and clients. Users can connect with any of the servers from their browsers to manage their cache clusters.

    The application is ASP.NET Core based and therefore, can run on Windows as well as Linux. This application has all the features as the Desktop based NCache Manager had. Desktop-based NCache Manager and Monitor are discontinued.

  1.  New Powershell Commands
  2. Following few Powershell commands are added;

    1. Get-ClusterHealth shows the health of the cache cluster in Powershell.
    2. Get-CacheServerStatistics shows the performance counters of one or more cache servers in Powershell.
    3. Get-CacheClientStatistics shows the performance counters of one or more cache clients in Powershell.

List of Bugs Fixed:

  • 744176 FIX: Split-brain auto recovery kicks in even when the cluster was not in the split-brain scenario.
  • 744177 FIX: Classes without default constructors are failed to compact serialize.
  • 744178 FIX: Custom dependency does not work with client cache.
  • 744179 FIX: On applying configuration from the manager, Keep-Alive settings are lost from client.ncconf.

Signup for monthly email newsletter to get latest updates.

© Copyright Alachisoft 2002 - . All rights reserved. NCache is a registered trademark of Diyatech Corp.