Cache management is actually a key element of the database management, Laurent Ribardière presents at 4D Summit Portland 2016 the new cache manager he implemented in the 4D v16 64-bit version.
Before watching the technical presentation with details about the implementation, we recommend to start with these two blog posts, describing the feature benefit itself:
4D v16 introduced a new fully optimized cache manager for the 64-bit product line. 4D v16 R2 is giving power to our advanced 4D developers to take control by themselves!
The cache manager internal algorithm is based on a priority concept associated to each object type to store in the cache memory. By default, the cache manager algorithm assigns a higher priority value for an index than for records. And recently used objects (records or indexes) have a higher priority to remain in the cache than objects that have not been used in the last two days, etc…
The 4D v16 version has definitely been designed for better performance and scalability. In addition to major features like preemptive multi-threading, 4D v16 64-bit is embedding a brand new cache manager for a optimized handling of objects in cache memory avoiding any fragmentation issues.
The new cache manager improves the usage of very large cache for modern computers (with 64 or even 128 GB of Cache) allowing to take advantage of low RAM prices to have even large databases fully in memory. It also improves the situation of small cache size with very large data files, by decreasing the amount of unloading memory with increased support of priorities for data objects to be hold or released from cache.
Since 4D v11, the database server and SQL server both use preemptive multi-threading. Starting with 4D v13, the Web Server in Static mode also uses preemptive. Now with v15 R5, the 4D language can also be run in preemptive processes.
With 4D v16, you can improve your database scalability using the new 4D Write Pro commands in preemptive processes.
If you are doing routines for creating or converting documents programmatically – e.g. invoices … you can now do it with preemptive workers as most 4D Write Pro commands are now thread safe!
Object fields introduced with v15 allows unstructured data bases, similar to schemaless database (NoSQL). 4D v16 goes a big step further. Get a dynamic structure for unstructured data… Confused?
Imagine you use an object field to allow your customers to store custom data, where they can create their own fields. This works well and is one of the most interesting reasons for using an object field. The problem is, how to allow your customer to query this unstructured data? You don’t know which ‘fields’ they used, you cannot build a query editor on top or offer a drop down with used values.
4D v16 is providing you with an enhanced integration of object fields in your database.
If you have already pre-selected sets of an object field, you can now query these sets using only one 4D command: easy and fast!
Want to enhance your database scalability and use all the performance available with your multi-core machines?
With 4D v16, we have extended the list of thread-safe commands in order to use preemptive processes with your code handling XML.
With 4D v15 R4, a new parameter is introduced for the DISTINCT VALUE command. This parameter must be an array, and it receives the count of each distinct value in a selection of records.
This feature is particularly useful for obtaining statistics on records, or to order records by their most common type.
In 4D v15 R3, the algorithm of the REPLACE STRING command has been enhanced to make replacements on large amounts of data faster. In our tests replacing 32,000 occurrences, the new algorithm makes the command an average of 4000 times faster than the old one.