Nova Patents
EP1647908A2

Database RAM cache

Abstract

A system and method are provided for providing a shared RAM cache of a database, accessible by multiple processes. By sharing a single cache rather than local copies of the database, memory is saved and synchronization of data accessed by different processes is assured. Synchronization between the database and the shared cache is assured by using a unidirectional notification mechanism between the database and the shared cache. Client APIs within the processes search the data within the shared cache directly, rather than by making a request to a database server. Therefore server load is not affected by the number of requesting applications and data fetch time is not affected by Inter-Process Communication delay or by additional context switching. A new synchronization scheme allows multiple processes to be used in building and maintaining the cache, greatly reducing start up time.

EP1647908A2, drawing sheet 1
Sheet 1 of 7

Term

Term ended

Projected expiry passed 14 October 2025, 0.9 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

7 claims: 3 independent, 4 dependent

  1. 1
    A method of providing a plurality of processes with access to data stored in a database, comprising:copying the data from the database to a cache in shared memory, the shared memory being accessible by each process;maintaining synchronicity between the database and the cache;and providing each process with an Application Program Interface (API) containing instructions for accessing the data within the cache.
  2. 6
    A cache for storing data from a database storing a plurality of tables, the cache having a data structure comprising:for each table, at least one linked list of data segments storing data from the table;for each table, a control segment storing an address of the first data segment in each linked list;and a master segment storing an address for each control segment.
  3. 7
    A method of providing job synchronization comprising, for each job:dividing the job into a plurality of tasks;grouping the tasks into at least one task group, each task group being a single operation for synchronization purposes and comprising at least one of the tasks;executing each of the tasks on a worker thread belonging to a specific thread server pool;and notifying all waiting client applications of completion of the job only upon completion of the last task of the job.