Following new features are provided in NCache v5.3 SP1.
Following new features are provided in NCache v5.3.
For NCache images available on Azure and AWS, the registration for free evaluation of NCache is supported in NCache Web Manager. When a machine is not registered either with evaluation or a license key, the NCache Web Manager’s default screen takes users to a registration process to either start their evaluation or activate their boxes.
The feature 'NCache NoSQL' released in 5.3 has been renamed to 'NCache Persistence'. The working of the feature remains the same, however, the additional providers are removed. The NCache Persistence can now only be used with the built-in file system based store.
All NoSQL related PowerShell cmdlets have also been renamed.
A separate NuGet Package is released for NCache CLR Stored Procedures. This helps in easily creating CLR Stored Procedures that use NCache API.
Instead of using configurations specified in client.ncconf, users can force SignalR applications to use the connection options specified in web.config or appsettings.json files of the application. If specified, the application will use these settings.
The refresh interval value can now be set in seconds instead of minutes. The change has been made to accommodate scenarios where refresher should run at an interval of less than a minute.
NCache is providing a new feature called NoSQL Database where the entire database is In-Memory and distributed but it is also persisted to a permanent storage in real-time (unlike other products that take a periodic snapshot or persist only a transaction log). This real-time persistence ensures that your In-Memory data is always in sync and never lost even when you restart all the NCache servers.
NCache NoSQL Database is super-fast and scalable because it is 100% In-Memory and distributed. At the same time, NCache NoSQL Database persists data just like all other databases so you don’t lose any data even if all NCache servers are brought down.
You can choose to persist you NoSQL Database in NCache Persistence that super-fast and very reliable. Or, if you prefer, you can persist the NoSQL Database in one of the leading third-party databases. NCache provides the following real-time persistence options For NoSQL Database:
You can use NCache NoSQL Database in the following ways:
NOTE: you can use this feature from .NET, Java, Node.js, Python, and Scala applications.
NCache provides Distributed Lucene for .NET applications using Lucene for Full Text Search. Distributed Lucene takes the standard Lucene.NET index and makes it distributed so you can scale the Lucene index to multiple NCache servers even at runtime. This not only allows you to increase your index size but also your application transaction capacity because your application now talks to multiple NCache servers for Lucene.
Here are some highlights of Distributed Lucene feature:
NCache now provides a powerful Python Client on both Windows and Linux. This Python client has all of client-side API features of NCache that traditionally .NET and Java clients enjoyed.
NCache provides Import and Export tools as PowerShell Cmdlets. With these tools, you can import or export JSON / CSV data into the NoSQL Database or out of it. This allows you to extract all or portions of your NoSQL database.
If you have selected NCache Persistence Provider for NoSQL Database, then all the data is kept in multiple files located in a shared network folder (based on UNC path).
You can use regular filesystem backup / restore tools on this data. However, please note that NCache provides you an admin tool (as PowerShell Cmdlet) to briefly suspend NCache writes to persistent storage while you’re performing your filesystem backup. However, all writes are being made to the In-Memory distributed copy of the data and logged so when you’re done with your backup, you can turn on the writes to persistence storage. And, then all those writes are applied to the persistence storage in the same manner as if they were real-time.
Despite providing you an online backup mechanism, it is recommended that you select a low-traffic time to do the backups. In future, NCache will provide a fully Online Backup feature for NCache Persistence Provider of NoSQL Database where you can even continue doing writes during backup.
However, if you’ve selected SQL Server or MongoDB as your storage option then you can use the backup / restore tools provided by those databases including online backup.
If you already have a .NET application using Lucene, the chances are that you might have a fairly large Lucene index built. NCache gives you the ability to import an existing Lucene index into NCache Distributed Lucene in a bulk manner.
This is much faster than recreating that index by reading documents from it and adding those documents to NCache Distributed Lucene index. The reason for this is that NCache Distributed Lucene copies data at bulk file level and not at document level.
You can do the following types of import of Lucene index.
Both of the above Import Lucene index options are possible through PowerShell Cmdlets.
NCache partitions and saves Lucene index into a distributed environment and on each NCache server. And, all index is stored as multiple files. Therefore, you can use regular filesystem backup / restore tools on them. However, in the current version of NCache, online backup is not provided so you will need a downtime to ensure correct backup. But, if your application is not updating Distributed Lucene index at runtime then you can also do online backups.
Restoring a Distributed Lucene index is the same as restoring file system files and therefore possible. You can have to restart your cache with the same distribution configuration information that you had when you did the backup.
NCache now fully supports .NET 6.0. All NCache Servers are compiled in .NET 6.0 (or .NET Framework 4.8 if you’ve downloaded that version). NCache clients are also .NET 6.0. However, NCache also provides support for earlier version of both .NET Core and .NET Framework for NCache clients.
NCache now allows you to use JSON Serialization for your ASP.NET / ASP.NET Core sessions. Previously, the only option you had was to use Binary Serialization provided by .NET. We still have Binary Serialization option but in .NET 6.0, Binary Serialization is disabled by default and is not recommended.
JSON Serialization also has the advantage where your .NET objects are not marked "Serializable". Previously, you had to either make code changes to mark all objects "Serializable" or use Compact Serialization feature of NCache. In both cases, it required a lot of extra work for you.
With JSON Serialization, you only have to make configuration setting change and not touch the code at all and you can now start to use objects that are not serializable in ASP.NET / ASP.NET Core sessions.
In order to include any object attribute in NCache SQL Queries, you must index it first. Previously, the only way to index was to define an index as part of NCache configuration. That is still possible and a good way to do this.
However, now you can define query indexes programmatically using custom annotations. With this, you now have full support of different ways of creating query index in NCache.
NCache now supports nullable properties for creating an index and then using them in SQL Queries. This feature is provided because .NET properties and fields are nullable. But, previously NCache did not provide support searching based on null values and now it does.
NCache now supports Geospatial indexes in Full Text Searching with Distributed Lucene. Just like regular Full Text Search Lucene index, the Geospatial indexes also use Lucene.NET internally to support Geospatial queries. The NuGet package for Geospatial indexes is separate from the Full Text Search index NuGet package.
NCache now supports Faceted Search with Distributed Lucene. Faceted Search is a technique that involves augmenting traditional search techniques with a faceted navigation system. This allows the user to narrow down search results by applying multiple filters based on a faceted classification of the items.
NCache provides a NuGet Package for Faceted Search that has all the APIs required to perform Faceted searches.
Since .NET CLR uses Managed Memory, Garbage Collection and Fragmentation cause major performance issues in any high transaction server application. NCache solved this problem earlier by implementing very smart object pooling and also breaking up larger objects into less than 80K objects so LOH is not frequently used.
This earlier memory optimization had already improved NCache performance quite a bit for most commonly used "atomic operations" like Get, Insert, Update, Delete of individual items. However, a number of other areas like bulk operations, query indexes, SQL searching, etc. were not fully optimized in this manner and therefore resulted in frequent use of LOH and Gen2 collections and hence not the best performance.
Now, this version of NCache has optimized memory management in all these areas that has resulted in an even faster performance of NCache all around.
Following optimizations have been made:
NCache traditionally ran in an on-premises environment and therefore there wasn’t any need for using https to access NCache Web Manager. But, now with Azure, AWS, and other clouds becoming very prevalent, more and more situations are arising where a user may need to access NCache Web Manager thru https.
NCache now provides support for https for accessing NCache Web Manager. By default, it is http but you can configure it to use https if you have a certificate.
NCache has traditionally required that you specify NCache servers based on their ip-address and not machine names. The reason behind this was that in many situations, NCache servers have multiple Network Interface Cards (NICs) and you didn’t know which NIC did the machine name map to. Therefore, using ip-address for NCache servers and clients is still the preferred way.
But, now NCache provides you the ability to specify machine names instead of ip-address if you wish. You are be able to specify machine name for adding a cache server or a cache client to the cache configuration. Similarly, all views on NCache Web Manager continue to use ip-addresses by default.