US20080222111A1 - Database system with dynamic database caching - Google Patents

Database system with dynamic database caching Download PDF

Info

Publication number
US20080222111A1
US20080222111A1 US12/030,113 US3011308A US2008222111A1 US 20080222111 A1 US20080222111 A1 US 20080222111A1 US 3011308 A US3011308 A US 3011308A US 2008222111 A1 US2008222111 A1 US 2008222111A1
Authority
US
United States
Prior art keywords
database
tier
tables
entries
aging
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/030,113
Inventor
Chi Kim Hoang
Chih-Ping Wang
John Ernest Miller
Marie-Anne Neimat
Susan Sokeng Cheung
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Priority to US12/030,113 priority Critical patent/US20080222111A1/en
Assigned to ORACLE INTERNATIONAL CORPORATION reassignment ORACLE INTERNATIONAL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HOANG, CHI KIM, NEIMAT, MARIE-ANNE, WANG, CHIH-PING, CHEUNG, SUSAN SOKENG, MILLER, JOHN ERNEST
Publication of US20080222111A1 publication Critical patent/US20080222111A1/en
Priority to US13/799,572 priority patent/US9569475B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases

Definitions

  • the present disclosure relates generally to database systems.
  • a disk-based Relational Database Management System uses disk storage to store and access large amounts of data.
  • Much of the work performed by a conventional, disk-optimized RDBMS assumes that data primarily resides on disk. Optimization algorithms, buffer pool management, and indexed retrieval techniques are designed based on this fundamental assumption.
  • One problem with disk storage is that access to the data is relatively slow.
  • In-memory resident relational database systems are deployed in the application-tier and operate in physical memory using standard Sequential Query Language (SQL) interfaces.
  • SQL Sequential Query Language
  • in-memory database systems can provide improved responsiveness and throughput compared even to fully cached disk-based RDBMS.
  • the in-memory database can be designed with the knowledge that data resides in main memory and can take more direct routes to data, reducing the length of the code path and simplifying algorithms and structure.
  • FIG. 1 is a schematic block diagram showing a database system that provides dynamic database caching.
  • FIG. 2 is a schematic block diagram showing in more detail how a cache manager caches database entries in a secondary/application-tier database system.
  • FIG. 3 is a flow diagram explaining operations performed by the cache manager in FIG. 2 .
  • FIG. 4 is a schematic block diagram showing how the cache manager operates with cache groups.
  • FIG. 5 is a flow diagram describing in more detail how dynamic database caching operates with cache groups.
  • FIG. 6 is a schematic block diagram showing how dynamic database caching selectively ages out database entries.
  • FIG. 7 is a flow diagram describing usage based aging in more detail.
  • FIG. 8 is a flow diagram describing time based aging in more detail.
  • a fully transactional mid-tier database system services database transactions.
  • a cache manager dynamically loads database entries from a fully transactional backend-tier database system into the mid-tier database system according to the received database transactions.
  • Time based aging or usage based aging can be assigned to selected tables in the mid-tier database system. Database entries contained in the selected tables are then automatically removed according to assigned aging constraints.
  • FIG. 1 is a schematic representation of a multi-tiered database system.
  • a primary database system 140 can be any conventional fully-relational database system, such as a disk-based Relational Database Management System (RDBMS).
  • RDBMS Relational Database Management System
  • the primary database system 140 typically uses disk storage to store and access large amounts of data that in one example includes multiple different tables 144 .
  • the primary database system 140 is alternatively referred to as a backend database system or a backend-tier database system.
  • a secondary database system 122 typically operates on a server 100 that is remote from primary database system 140 and includes a storage manager that stores and manages different tables 127 that contain different database entries.
  • the secondary database 122 in one example is an in-memory fully-relational database that is deployed in an application tier and operates in physical memory of the server 100 .
  • the secondary database system 122 is alternatively referred to as an application-tier database system or an in-memory database system.
  • Applications 112 A and 112 B are initiated by clients 102 A and 102 B, respectively, via a local or wide area network 110 .
  • the network 110 is alternatively referred to as the Internet.
  • the applications 112 can be any software program that accesses or references database entries in a database.
  • the applications 112 could be software programs used for booking airline reservations, ordering products over the Internet, managing financial transactions for banks or investment institutions, or tracking telephone call usage.
  • these are just a few examples of the essentially limitless number of data management applications that may be used with the database systems shown in FIG. 1 .
  • Connections from the clients 102 can either be direct connections or client/server connections.
  • Direct connections refer to Sequential Query Language (SQL) libraries and routines that implement a direct driver.
  • the application 112 A can create a direct driver connection when it runs on the same server 100 that operates the secondary database system 122 .
  • the direct driver directly loads the secondary database 122 into the application's heap space or a shared memory segment.
  • the application 112 A then uses the direct driver to access a memory image of the secondary database 122 . Because no inter-process communication is required, a direct driver connection provides fast performance.
  • the client/server connection accommodates connections from the remote client 102 B to secondary database 100 over network 110 .
  • Applications 112 B on the client 102 B issue calls to local client driver libraries 114 B that communicate with a server/child process 113 on the server 100 containing secondary database 122 .
  • the server/child process 113 issues native requests to the direct driver provided by the server libraries for accessing the secondary database 122 . If a client 102 and server 100 reside on separate nodes in a network, then communication is provided using sockets and Transmission Control Protocol/Internet Protocol (TCP/IP) communications.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • the secondary database 122 maintains durability through a combination of transaction logs 124 and periodic refreshes of a disk-resident version of the secondary database 122 .
  • the transaction logs 124 are written to disk asynchronously or synchronous with the completion of transactions 118 and are controlled by the applications 112 at the transaction level.
  • the transaction logs 124 can be used to recover a transaction 118 if the application 112 or database 122 fails, undo transactions 118 that are rolled back, replicate changes to other databases, replicate changes in the secondary database 122 to the primary database 140 , or enable applications 112 to detect changes to database entries.
  • Checkpoint files 126 are used to keep a snap shot of the secondary database 122 . In the event of a system failure, the checkpoint files 126 are used to restore the secondary database 122 to a last transactionally consistent state. A checkpoint operation scans the secondary database 122 for blocks that have changed since the last checkpoint and updates the checkpoint files 126 with the changes and removes any transaction log files 124 that are no longer needed.
  • the applications 112 create and manage the tables 127 that may exist only in secondary database 122 .
  • the applications 112 through cache manager 150 , can also cache frequently used subsets of database entries from the primary database 140 .
  • the tables 127 managed exclusively by the secondary database 122 and the tables 127 cached from primary database 140 may all coexist in the same secondary database 122 , and are all persistent and recoverable.
  • Queries and updates to the tables 127 are performed by the applications 112 through standard SQL.
  • Applications 112 running on other different mid-tier servers may cache different or overlapping subsets of the data in primary database 140 .
  • the cache manager 150 can cache entire tables or table fragments from the primary database 140 to the secondary database 122 operating on server 100 .
  • the table fragments are described through an extended SQL syntax and are cached into corresponding tables.
  • tables 128 A, 130 A, and 132 A from primary database 140 are cached into corresponding tables 128 B, 130 B, and 132 B in the secondary database 122 .
  • the cached tables 128 B, 130 B, or 132 B may comprise the entire corresponding tables 128 A, 130 A, or 132 B from primary database 140 of may only include selected database entries from the primary database tables 128 A, 130 A, or 132 B.
  • the database entries can be any record, tuple, column, row or other data item that typically exists in a fully transactional database system.
  • the secondary database 122 dynamically caches performance-critical subsets of the primary database 140 , enabling both reads and updates, and automatically manages data consistency between the cached secondary database 122 and the primary database 140 .
  • the applications 112 read and update the cached tables 127 using standard SQL, and the cache manager 150 automatically propagates updates from the primary database 140 to the secondary database 122 and vice versa.
  • the cached secondary database 122 offers applications 112 the full generality and functionality of a fully-relational database, the transparent maintenance of cache consistency with the primary database 140 , and the real-time performance of an application-tier in-memory database system.
  • FIG. 2 shows the operations performed by the cache manager 150 in more detail.
  • the cache manager 150 dynamically varies what subset of tables 127 are cached from the primary database system 140 into the secondary database system 122 according to the transactions 118 received from the applications 112 in FIG. 1 .
  • the cache manager 150 first determines what transactions 118 can be serviced by the secondary database 122 . For example, the cache manager 150 determines if the referenced tables 200 A and referenced primary keys 200 B in SQL statement 200 reside in secondary database 122 . If the referenced database entries reside in the secondary database 122 , the transaction 118 is serviced by the secondary database 122 .
  • FIG. 3 explains some of the operations performed by the cache manager 150 in more detail.
  • the cache manager 150 receives or monitors the database transactions 118 directed to secondary database 122 .
  • the cache manager 150 may identify the database entries associated with the database transaction. For example, the cache manager 150 obtains the table identifiers and keys referenced by the transaction 118 .
  • the cache manager 150 in operation 254 searches the secondary database 122 for the referenced database entries.
  • the transaction is serviced by the secondary database in operation 256 . Otherwise, the cache manager 150 sends one or more queries to the primary database 140 that reference the database entries that are not contained in the secondary database 122 .
  • the secondary database 122 may contain some, but not all, of the database entries referenced by the transaction 118 .
  • the cache manager 150 may send queries referencing only the missing database entries.
  • the cache manager 150 may query the primary database 140 for all of the database entries referenced by the transaction 118 .
  • the database entries accessed in the primary database 140 are then uploaded into the secondary database 122 in operation 260 .
  • the cache manager 150 may generate additional SQL statements that cause the primary database entries to be inserted into the secondary database 122 . Any required commitment is performed on the uploaded database entries 204 in operation 262 .
  • the transaction 118 is then serviced by the secondary database in operation 256 .
  • FIG. 4 shows how dynamic database caching is used in conjunction with cache groups.
  • a cache instance or cache group is a collection of related records that are uniquely identifiable, and is used to model a complex object.
  • a cache group 314 may be a group of rows that correspond to a set of frequently used tables that are related to each other through foreign key constraints.
  • Cache instances/cache groups can be used when both loading data from primary database 140 into the secondary database 122 and via versa and when database entries are aged out of the secondary database 122 .
  • the cache group 314 may be configured to contain entire tables or configured to contain only subsets of table rows and/or table columns.
  • the following SQL syntax is one example of how the cache group 314 is created that includes different database entries from both CUSTOMER table 302 and ORDER table 304 .
  • cache group cache_customer from customer(pk1 int not null primary key), orders(pk2 int not null primary key, fk2 int, foreign key (fk2) references customer(pk1));
  • each customer in the CUSTOMER table 302 has a primary key on its ID.
  • One customer may have many orders in the ORDER table 304 , where each order has a foreign key (fk 2 ) that references a CUSTOMER(ID).
  • Configuring cache group 314 causes the cache manager 150 to treat all of the order information and associated customer information associated with the transaction as a single cache instance. For example, a transaction may only reference one of the database entries associated with cache group 314 . If the referenced database entry is not contained in secondary database 122 , the cache manager 150 uploads all of the database entries associated with the cache instance from the primary database 140 at the same time.
  • CUSTOMER table 302 is considered a root table and ORDERS table 304 is considered a child table.
  • Database entries can be uploaded or flushed based on the root table 302 .
  • all child rows for a root table currently located in the secondary database 122 can also be presumed to be currently located in the secondary database 122 . This prevents the cache manager 150 from having to determine if all of the foreign keys for a cache group exist in the secondary database 122 .
  • the cache manager 150 receives a transaction 306 in operation 350 .
  • This transaction 306 may be implemented using the following SQL statement 307 .
  • the cache manager 150 also determines that the referenced database entries are part of the cache group 314 .
  • cache instance 320 The different database entries accessed in the primary database with queries 308 and 310 are referred to as cache instance 320 . It should be understood that the two different queries 308 and 310 select more database entries 320 A- 320 C from the primary database 150 than what was actually referenced by the transaction 306 . Thus, in one embodiment, all of the database entries associated with a same cache instance are loaded into the secondary database at the same time.
  • the cache manager 150 also sends insert commands 312 to the primary database 140 in operation 360 which cause the rows 320 A- 320 C associated with cache instance 320 to be inserted into the secondary database in operation 360 .
  • the transaction 306 is then serviced by the secondary database in operation 354 .
  • FIG. 6 shows how different aging parameters are used to automatically remove database entries from the secondary database 122 . Assigning different aging parameters to different database tables allows the secondary database 122 to dynamically cache more relevant user content. For example, an airlines reservation system may use the secondary database 122 for caching a subset of customer flight reservations and caching a subset of airline flight schedules.
  • the customer flight reservation tables may be more effectively cached based on usage. For instance, it may be advantageous to maintain customer information in the secondary database 122 for customers who frequently or most recently book airline reservations. This allows faster database response to user reservation queries and further may reduce the amount of traffic between the secondary database 122 and primary database 140 . This is referred to generally as “usage based aging.”
  • the cache manager 150 can be programmed to selectively associate different tables in secondary database 122 with these different usage based and time based aging constraints.
  • a listing 400 identifies in column 400 A the tables in secondary database 122 that are configured with usage based aging constraints.
  • the Least Recently Used (LRU) database entries in tables A and C are periodically removed according the amount of available space in the secondary database 122 .
  • LRU Least Recently Used
  • High Usage Threshold (HUT) values 400 B identify a percentage of used memory space in the secondary database 122 that trigger the cache manager 150 to remove least recently used database entries.
  • Low Usage Threshold (LUT) values 400 C can also be assigned to the tables A and B and identify a second lower percentage of used memory space in the secondary database 122 .
  • the cache manager 150 removes least recently used database entries until the storage space in secondary database 122 reaches the LUT value 400 C.
  • Aging Cycle (AC) values 400 D in listing 400 indicates how often the cache manager 150 evaluates the least recently used database entries in tables A and C.
  • a counter or clock 404 is monitored by cache manager 150 .
  • the cache manager 150 periodically checks the amount of used memory space in the secondary database 122 after counter/clock 404 indicates the expiration of each aging cycle 400 D. If the amount of used memory space reaches HUT 400 B, the cache manager 150 removes the least recently used database entries from the associated tables A and/or C.
  • Last Used (LU) tags 408 and 412 indicate when the database entries in tables A and C were respectively last used.
  • the LU tags 408 and 412 may use the value provided by counter/clock 404 at the time the associated database item was last accessed or referenced.
  • the LU tags 408 and 412 can then be updated with a current time from counter/clock 404 whenever the associated database entries in tables A or C are accessed or referenced again by another transaction or when the database entries are uploaded again from the primary database 140 .
  • Selected tables in the secondary database 122 can also be assigned time based aging constraints.
  • the following SQL statement configures time based aging constraints for table D.
  • the time based aging SQL statement causes table D to be listed in column 402 A of time based aging listing 402 .
  • a lifetime value 402 B in listing 402 designates how long database entries in table D should reside in the secondary database 122 .
  • a cycle time value 402 C defines a time period for the cache manager 150 to periodically evaluate the database entries in table D. If different cycle times 402 C are defined for different tables, then the cache manager 150 may wake up based on an a single cycle time value for all of the tables, or may wake up according to the cycle times for each individual table.
  • the time based aging SQL statement above also configures a column in table D with timestamp values 414 .
  • the timestamp values 414 could be a date and time value from counter/clock 404 or could alternatively be a counter value from counter/clock 404 that is continuously incremented until reaching a reset value.
  • the timestamp values 414 are set to the value of counter/clock 404 when the associated database entries are first loaded into the secondary database 122 .
  • the tables in the secondary database 122 are configured with different usage based aging constraints and time based aging constraints as described above.
  • the cache manager 150 identifies the different usage based aging tables and time based aging tables as defined in listings 400 and 402 .
  • the different aging parameters in listing 400 are identified for the usage based tables. For example, the cache manager 150 in operation 454 identifies the high usage thresholds 400 B, low usage thresholds 400 C and the aging cycles 400 D for tables A and C.
  • the cache manager 150 waits for one of the aging cycles to be reached for one of the tables A or C. For example, the cache manager 150 determines when the counter/clock 404 reaches the aging cycle 400 D for one of the tables A or C. When an aging cycle is reached in operation 456 , the cache manager 150 determines the amount of memory space currently being used in the secondary database 122 . If the high usage threshold value 400 A is reached for either table A or table C in operation 458 , the least recently used database entries for that table are removed in operation 462 .
  • the high usage threshold value 400 B for table A may be set to 75% and the high usage threshold value 400 B for table C may be set to 85%. If storage in the secondary database 122 is 80% full when the counter/clock 404 reaches a next aging cycle time 400 D, the least recently used database entry in table A is removed in operation 462 .
  • the cache manager 150 determines the amount of used storage space after the database entry 416 is removed in operation 462 . If the percentage of used memory space does not drop below the low usage threshold value 400 C for table A in operation 464 , the next least recently used database entry is removed from table A in operation 462 . Database entries are removed from tables A until the amount of utilized space in the secondary database drops below the low usage threshold value in operation 464 . A next aging cycle is started for table A in operation 460 and the cache manager 150 waits for the expiration of the next aging cycle 400 D in operation 456 before conducting the next usage based purge in operation 458 .
  • aging cycles 400 D for tables A and C are different, then a same aging cycle value 400 D may be used. If the HUT values 400 B for both table A and table C are reached at the next common aging cycle, then database entries may be removed from both table A and table C in a round robin fashion. Alternatively, different LRU aging sessions may be separately conducted for tables A and C and LRU database entries for each table removed independently according to their associated HUT values 400 B, LUT values 400 C and aging cycles 400 D.
  • memory utilization in secondary database 122 may exceed the 85% high usage threshold value 400 B assigned to table C. Accordingly, least recently used database entries are removed from table C in operation 462 until the database storage reaches the low usage threshold value 400 C for table C.
  • the cache manager 150 removes the least recently used database entries 418 (DB entries # 1 , # 3 , and # 4 ) from table C in order to reach the low usage threshold value 400 C associated with table C.
  • Higher priority data in a particular table may be assigned larger high usage threshold values 400 B and/or larger low usage threshold values 400 C.
  • the aging cycles 400 D for high priority data may be set to longer time periods. These larger threshold values 400 B, 400 C, and 400 D cause the cache manager 150 to remove the least recently used database items for those tables less frequently.
  • the usage based aging parameters 400 allow automatic customized removal of different types of selectable data from the secondary database 122 .
  • FIG. 8 explains in more detail how the cache manager 150 conducts time based aging.
  • any tables having time based aging constraints are identified in operation 480 .
  • table D is assigned a lifetime value 402 B and an associated cycle time value 402 C in listing 402 .
  • the cache manager 150 uses the counter/timer 404 in operation 482 to determine when a next cycle time 402 C is reached. Any rows in table D that have timestamps 414 exceeding the lifetime value 402 B are identified in operation 484 and removed in operation 486 .
  • the value for counter/clock 404 is compared with the timestamp values 414 in table D. The difference between the value of counter/clock 404 and the timestamp values 414 are determined in operation 484 .
  • the counter 404 may have a current value of 28.
  • different tables can be assigned different lifetime values 402 B and cycle times 402 C.
  • Higher priority data may be assigned larger lifetime values 402 B and/or may be evaluated less frequently by assigning larger cycle time values 402 C.
  • Tables associated with even higher priority data might not be assigned any aging constraints.
  • table B in FIG. 6 is not assigned any aging constraints. Accordingly, the database entries in table B remain in the secondary database 122 until replaced by updates from the primary database 140 .
  • database entries associated with the same cache group may be removed according to usage based or time based aging constraints.
  • the CUSTOMER table 302 may both be assigned usage based aging constraints.
  • usage based aging may be assigned to the child ORDERS table 304 in FIG. 4 .
  • all of the root and child database entries for the same cache instance 320 are removed from the secondary database in operation 462 in FIG. 7 .
  • database entries associated with the same cache group may also be controlled by the root table. For example, timestamps may only be applied to the database entries in the root CUSTOMER table 302 in FIG. 4 . Whenever one of the database entries in CUSTOMER table 302 resides in the secondary database 122 beyond a specified lifetime value, all of the database entries associated with that cache instance are removed at the same time.
  • the system described above can use dedicated processor systems, micro controllers, programmable logic devices, or microprocessors that perform some or all of the operations. Some of the operations described above may be implemented in software and other operations may be implemented in hardware.

Abstract

A fully transactional mid-tier database system services database transactions. A cache manager dynamically loads database entries from a fully transactional backend-tier database system into the mid-tier database system according to the received database transactions. Time based aging or usage based aging can be assigned to selected tables in the mid-tier database system. Database entries contained in the selected tables are then automatically removed according to assigned aging constraints.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application claims priority to provisional application Ser. No. 60/905,751 filed on Mar. 7, 2007, entitled MAIN-MEMORY DATABASES and also claims priority to provisional application Ser. No. 61/026,090 filed on Feb. 4, 2008, entitled DATABASE SYSTEM WITH DYNAMIC DATABASE CACHING AND DATABASE SYSTEM WITH ACTIVE AND STANDBY NODES and are both incorporated by reference in their entirety.
  • This application is also related to the following application filed simultaneously herewith and is incorporated by reference in its entirety.
  • U.S. patent application Ser. No. 12/030,094 entitled: DATABASE SYSTEM WITH ACTIVE AND STANDBY NODES filed on Feb. 12, 2008.
  • TECHNICAL FIELD
  • The present disclosure relates generally to database systems.
  • BACKGROUND
  • A disk-based Relational Database Management System (RDBMS) uses disk storage to store and access large amounts of data. Much of the work performed by a conventional, disk-optimized RDBMS assumes that data primarily resides on disk. Optimization algorithms, buffer pool management, and indexed retrieval techniques are designed based on this fundamental assumption. One problem with disk storage is that access to the data is relatively slow.
  • Even when an RDBMS is configured to hold data in main memory, performance is still hobbled by assumptions of disk-based data residency. These assumptions cannot be easily reversed due to hard-coded processing logic, indexing schemes, and data access mechanisms.
  • In-memory resident relational database systems are deployed in the application-tier and operate in physical memory using standard Sequential Query Language (SQL) interfaces. By managing data in memory and optimizing data structures and access algorithms, in-memory database systems can provide improved responsiveness and throughput compared even to fully cached disk-based RDBMS. For example, the in-memory database can be designed with the knowledge that data resides in main memory and can take more direct routes to data, reducing the length of the code path and simplifying algorithms and structure.
  • When the assumption of disk-residency is removed, complexity is dramatically reduced. The number of machine instructions drop, buffer pool management disappears, extra data copies are not needed, and index pages shrink. The database design becomes simple and more compact, and data requests are executed faster. However, in-memory database systems currently can only operate on a relatively small static portion of the data contained in a disk-based database system.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a schematic block diagram showing a database system that provides dynamic database caching.
  • FIG. 2 is a schematic block diagram showing in more detail how a cache manager caches database entries in a secondary/application-tier database system.
  • FIG. 3 is a flow diagram explaining operations performed by the cache manager in FIG. 2.
  • FIG. 4 is a schematic block diagram showing how the cache manager operates with cache groups.
  • FIG. 5 is a flow diagram describing in more detail how dynamic database caching operates with cache groups.
  • FIG. 6 is a schematic block diagram showing how dynamic database caching selectively ages out database entries.
  • FIG. 7 is a flow diagram describing usage based aging in more detail.
  • FIG. 8 is a flow diagram describing time based aging in more detail.
  • INTRODUCTION
  • A fully transactional mid-tier database system services database transactions. A cache manager dynamically loads database entries from a fully transactional backend-tier database system into the mid-tier database system according to the received database transactions. Time based aging or usage based aging can be assigned to selected tables in the mid-tier database system. Database entries contained in the selected tables are then automatically removed according to assigned aging constraints.
  • DETAILED DESCRIPTION
  • FIG. 1 is a schematic representation of a multi-tiered database system. A primary database system 140 can be any conventional fully-relational database system, such as a disk-based Relational Database Management System (RDBMS). The primary database system 140 typically uses disk storage to store and access large amounts of data that in one example includes multiple different tables 144. The primary database system 140 is alternatively referred to as a backend database system or a backend-tier database system.
  • A secondary database system 122 typically operates on a server 100 that is remote from primary database system 140 and includes a storage manager that stores and manages different tables 127 that contain different database entries. The secondary database 122 in one example is an in-memory fully-relational database that is deployed in an application tier and operates in physical memory of the server 100. The secondary database system 122 is alternatively referred to as an application-tier database system or an in-memory database system.
  • Applications 112A and 112B are initiated by clients 102A and 102B, respectively, via a local or wide area network 110. The network 110 is alternatively referred to as the Internet. The applications 112 can be any software program that accesses or references database entries in a database. For example, the applications 112 could be software programs used for booking airline reservations, ordering products over the Internet, managing financial transactions for banks or investment institutions, or tracking telephone call usage. Of course these are just a few examples of the essentially limitless number of data management applications that may be used with the database systems shown in FIG. 1.
  • Connections from the clients 102 can either be direct connections or client/server connections. Direct connections refer to Sequential Query Language (SQL) libraries and routines that implement a direct driver. The application 112A can create a direct driver connection when it runs on the same server 100 that operates the secondary database system 122. In a direct driver connection, the direct driver directly loads the secondary database 122 into the application's heap space or a shared memory segment. The application 112A then uses the direct driver to access a memory image of the secondary database 122. Because no inter-process communication is required, a direct driver connection provides fast performance.
  • The client/server connection accommodates connections from the remote client 102B to secondary database 100 over network 110. Applications 112B on the client 102B issue calls to local client driver libraries 114B that communicate with a server/child process 113 on the server 100 containing secondary database 122. The server/child process 113, in turn, issues native requests to the direct driver provided by the server libraries for accessing the secondary database 122. If a client 102 and server 100 reside on separate nodes in a network, then communication is provided using sockets and Transmission Control Protocol/Internet Protocol (TCP/IP) communications.
  • The secondary database 122 maintains durability through a combination of transaction logs 124 and periodic refreshes of a disk-resident version of the secondary database 122. The transaction logs 124 are written to disk asynchronously or synchronous with the completion of transactions 118 and are controlled by the applications 112 at the transaction level. The transaction logs 124 can be used to recover a transaction 118 if the application 112 or database 122 fails, undo transactions 118 that are rolled back, replicate changes to other databases, replicate changes in the secondary database 122 to the primary database 140, or enable applications 112 to detect changes to database entries.
  • Checkpoint files 126 are used to keep a snap shot of the secondary database 122. In the event of a system failure, the checkpoint files 126 are used to restore the secondary database 122 to a last transactionally consistent state. A checkpoint operation scans the secondary database 122 for blocks that have changed since the last checkpoint and updates the checkpoint files 126 with the changes and removes any transaction log files 124 that are no longer needed.
  • The applications 112 create and manage the tables 127 that may exist only in secondary database 122. The applications 112, through cache manager 150, can also cache frequently used subsets of database entries from the primary database 140. The tables 127 managed exclusively by the secondary database 122 and the tables 127 cached from primary database 140 may all coexist in the same secondary database 122, and are all persistent and recoverable.
  • Queries and updates to the tables 127 are performed by the applications 112 through standard SQL. Applications 112 running on other different mid-tier servers may cache different or overlapping subsets of the data in primary database 140.
  • The cache manager 150 can cache entire tables or table fragments from the primary database 140 to the secondary database 122 operating on server 100. The table fragments are described through an extended SQL syntax and are cached into corresponding tables. For example, tables 128A, 130A, and 132A from primary database 140 are cached into corresponding tables 128B, 130B, and 132B in the secondary database 122. The cached tables 128B, 130B, or 132B may comprise the entire corresponding tables 128A, 130A, or 132B from primary database 140 of may only include selected database entries from the primary database tables 128A, 130A, or 132B. The database entries can be any record, tuple, column, row or other data item that typically exists in a fully transactional database system.
  • The secondary database 122 dynamically caches performance-critical subsets of the primary database 140, enabling both reads and updates, and automatically manages data consistency between the cached secondary database 122 and the primary database 140. The applications 112 read and update the cached tables 127 using standard SQL, and the cache manager 150 automatically propagates updates from the primary database 140 to the secondary database 122 and vice versa.
  • Thus, the cached secondary database 122 offers applications 112 the full generality and functionality of a fully-relational database, the transparent maintenance of cache consistency with the primary database 140, and the real-time performance of an application-tier in-memory database system.
  • FIG. 2 shows the operations performed by the cache manager 150 in more detail. The cache manager 150 dynamically varies what subset of tables 127 are cached from the primary database system 140 into the secondary database system 122 according to the transactions 118 received from the applications 112 in FIG. 1.
  • The cache manager 150 first determines what transactions 118 can be serviced by the secondary database 122. For example, the cache manager 150 determines if the referenced tables 200A and referenced primary keys 200B in SQL statement 200 reside in secondary database 122. If the referenced database entries reside in the secondary database 122, the transaction 118 is serviced by the secondary database 122.
  • When the database entries referenced by the transaction 118 do not reside in the secondary database 122, the cache manager 150 may query the primary database 140 for the missing database entries. For example, table identifier 119A and primary key identifier 119B reference a database entry 204 in a table 130B having a primary key value PK=1. Since the database entry 204 is not currently located in the secondary database 122, the cache manager 150 queries the primary database 140. The referenced database entry 204 in primary database 140 is then inserted into table 130B in the secondary database 122. The transaction 118 may then be serviced by the secondary database 122 using the uploaded database entry 204.
  • FIG. 3 explains some of the operations performed by the cache manager 150 in more detail. Referring both to FIGS. 2 and 3, in operation 250 the cache manager 150 receives or monitors the database transactions 118 directed to secondary database 122. In operation 252, the cache manager 150 may identify the database entries associated with the database transaction. For example, the cache manager 150 obtains the table identifiers and keys referenced by the transaction 118. The cache manager 150 in operation 254 searches the secondary database 122 for the referenced database entries.
  • If the secondary database 122 contains the referenced database entries in operation 254, the transaction is serviced by the secondary database in operation 256. Otherwise, the cache manager 150 sends one or more queries to the primary database 140 that reference the database entries that are not contained in the secondary database 122.
  • In some embodiments, the secondary database 122 may contain some, but not all, of the database entries referenced by the transaction 118. In this situation, the cache manager 150 may send queries referencing only the missing database entries. In other embodiments, when only some of the database entries referenced by the transaction 118 are currently located in the secondary database 122, the cache manager 150 may query the primary database 140 for all of the database entries referenced by the transaction 118.
  • The database entries accessed in the primary database 140 are then uploaded into the secondary database 122 in operation 260. For example, the cache manager 150 may generate additional SQL statements that cause the primary database entries to be inserted into the secondary database 122. Any required commitment is performed on the uploaded database entries 204 in operation 262. The transaction 118 is then serviced by the secondary database in operation 256.
  • Cache Groups
  • FIG. 4 shows how dynamic database caching is used in conjunction with cache groups. A cache instance or cache group is a collection of related records that are uniquely identifiable, and is used to model a complex object. For example, a cache group 314 may be a group of rows that correspond to a set of frequently used tables that are related to each other through foreign key constraints.
  • Cache instances/cache groups can be used when both loading data from primary database 140 into the secondary database 122 and via versa and when database entries are aged out of the secondary database 122. The cache group 314 may be configured to contain entire tables or configured to contain only subsets of table rows and/or table columns.
  • The following SQL syntax is one example of how the cache group 314 is created that includes different database entries from both CUSTOMER table 302 and ORDER table 304.
  • create cache group cache_customer from
    customer(pk1 int not null primary key),
    orders(pk2 int not null primary key,
    fk2 int, foreign key (fk2) references customer(pk1));
  • In this example, each customer in the CUSTOMER table 302 has a primary key on its ID. One customer may have many orders in the ORDER table 304, where each order has a foreign key (fk2) that references a CUSTOMER(ID). Configuring cache group 314 causes the cache manager 150 to treat all of the order information and associated customer information associated with the transaction as a single cache instance. For example, a transaction may only reference one of the database entries associated with cache group 314. If the referenced database entry is not contained in secondary database 122, the cache manager 150 uploads all of the database entries associated with the cache instance from the primary database 140 at the same time.
  • In this example, CUSTOMER table 302 is considered a root table and ORDERS table 304 is considered a child table. Database entries can be uploaded or flushed based on the root table 302. For example, all child rows for a root table currently located in the secondary database 122 can also be presumed to be currently located in the secondary database 122. This prevents the cache manager 150 from having to determine if all of the foreign keys for a cache group exist in the secondary database 122.
  • Referring to FIGS. 4 and 5, the cache manager 150 receives a transaction 306 in operation 350. The transaction 306 selects all of the orders for a customer having an ID=100. This transaction 306 may be implemented using the following SQL statement 307.
      • select * from orders with a customer_ID=100
  • The cache manager 150 in operation 352 determines if the secondary database 122 contains any database entries in the ORDERS table 304 with the customer_ID=100. If so, the SQL statement 307 is serviced by the secondary database 122 in operation 354 by returning the requested database entries.
  • When the secondary database 122 does not contain orders with customer_ID=100, the cache manager 150 sends the following query 308 to the primary database 140 in operation 356 selecting the database entries from the ORDER table with customer_ID=100.
      • select * from orders with a customer_ID=100
  • However, the cache manager 150 also determines that the referenced database entries are part of the cache group 314. The cache manager 150 identifies the cache group via the foreign keys assigned to orders in table 304. Accordingly, the cache manager 150 in operation 358 sends the following second query 310 that selects all of the rows from the CUSTOMER table in the primary database 140 that have an ID=100.
      • select * from customer where ID=100
  • The different database entries accessed in the primary database with queries 308 and 310 are referred to as cache instance 320. It should be understood that the two different queries 308 and 310 select more database entries 320A-320C from the primary database 150 than what was actually referenced by the transaction 306. Thus, in one embodiment, all of the database entries associated with a same cache instance are loaded into the secondary database at the same time.
  • The cache manager 150 also sends insert commands 312 to the primary database 140 in operation 360 which cause the rows 320A-320C associated with cache instance 320 to be inserted into the secondary database in operation 360. The transaction 306 is then serviced by the secondary database in operation 354.
  • Aging
  • FIG. 6 shows how different aging parameters are used to automatically remove database entries from the secondary database 122. Assigning different aging parameters to different database tables allows the secondary database 122 to dynamically cache more relevant user content. For example, an airlines reservation system may use the secondary database 122 for caching a subset of customer flight reservations and caching a subset of airline flight schedules.
  • The customer flight reservation tables may be more effectively cached based on usage. For instance, it may be advantageous to maintain customer information in the secondary database 122 for customers who frequently or most recently book airline reservations. This allows faster database response to user reservation queries and further may reduce the amount of traffic between the secondary database 122 and primary database 140. This is referred to generally as “usage based aging.”
  • Other types of data may be more “time based.” For example, airline flight schedules may be highly queried for some period of time. However, after the airline flight arrives at a destination, that flight information is much less likely to be queried again by users. Accordingly, it may be advantageous to remove this type of “time-based” data from the secondary database 122 after a specified time period. The cache manager 150 can be programmed to selectively associate different tables in secondary database 122 with these different usage based and time based aging constraints.
  • Usage Based Aging
  • The following SQL, statements may be used for configuring tables A and C in FIG. 6 as usage based aging tables.
  • CREATE TABLE A (C1 INT , C2 INT );
    ALTER table A ADD AGING LRU;
    TT AgingLRUConfig (LowUsageThreshold,
    HighUsageThreshold,AgingCycle)
  • CREATE TABLE C (C1 INT , C2 INT );
    ALTER table C ADD AGING LRU;
    TT AgingLRUConfig (LowUsageThreshold,
    HighUsageThreshold,AgingCycle)
  • A listing 400 identifies in column 400A the tables in secondary database 122 that are configured with usage based aging constraints. In this example, the Least Recently Used (LRU) database entries in tables A and C are periodically removed according the amount of available space in the secondary database 122.
  • High Usage Threshold (HUT) values 400B identify a percentage of used memory space in the secondary database 122 that trigger the cache manager 150 to remove least recently used database entries. Low Usage Threshold (LUT) values 400C can also be assigned to the tables A and B and identify a second lower percentage of used memory space in the secondary database 122. When the HUT value 400B is reached, the cache manager 150 removes least recently used database entries until the storage space in secondary database 122 reaches the LUT value 400C.
  • Aging Cycle (AC) values 400D in listing 400 indicates how often the cache manager 150 evaluates the least recently used database entries in tables A and C. For example, a counter or clock 404 is monitored by cache manager 150. The cache manager 150 periodically checks the amount of used memory space in the secondary database 122 after counter/clock 404 indicates the expiration of each aging cycle 400D. If the amount of used memory space reaches HUT 400B, the cache manager 150 removes the least recently used database entries from the associated tables A and/or C.
  • Last Used (LU) tags 408 and 412 indicate when the database entries in tables A and C were respectively last used. The LU tags 408 and 412 may use the value provided by counter/clock 404 at the time the associated database item was last accessed or referenced. The LU tags 408 and 412 can then be updated with a current time from counter/clock 404 whenever the associated database entries in tables A or C are accessed or referenced again by another transaction or when the database entries are uploaded again from the primary database 140.
  • Time Based Aging
  • Selected tables in the secondary database 122 can also be assigned time based aging constraints. For example, the following SQL statement configures time based aging constraints for table D.
      • CREATE TABLE D (Timestamp C1, Timestamp c2, c3 INT) AGING USE c1 LIFETIME {MINUTES|HOURS|DAYS} CYCLE {MINUTES|HOURS|DAYS}
  • The time based aging SQL statement causes table D to be listed in column 402A of time based aging listing 402. A lifetime value 402B in listing 402 designates how long database entries in table D should reside in the secondary database 122. A cycle time value 402C defines a time period for the cache manager 150 to periodically evaluate the database entries in table D. If different cycle times 402C are defined for different tables, then the cache manager 150 may wake up based on an a single cycle time value for all of the tables, or may wake up according to the cycle times for each individual table.
  • The time based aging SQL statement above also configures a column in table D with timestamp values 414. The timestamp values 414 could be a date and time value from counter/clock 404 or could alternatively be a counter value from counter/clock 404 that is continuously incremented until reaching a reset value. In one embodiment, the timestamp values 414 are set to the value of counter/clock 404 when the associated database entries are first loaded into the secondary database 122.
  • Referring both to FIGS. 6 and 7, in operation 450 the tables in the secondary database 122 are configured with different usage based aging constraints and time based aging constraints as described above. In operation 452, the cache manager 150 identifies the different usage based aging tables and time based aging tables as defined in listings 400 and 402. In operation 454, the different aging parameters in listing 400 are identified for the usage based tables. For example, the cache manager 150 in operation 454 identifies the high usage thresholds 400B, low usage thresholds 400C and the aging cycles 400D for tables A and C.
  • In operation 456 the cache manager 150 waits for one of the aging cycles to be reached for one of the tables A or C. For example, the cache manager 150 determines when the counter/clock 404 reaches the aging cycle 400D for one of the tables A or C. When an aging cycle is reached in operation 456, the cache manager 150 determines the amount of memory space currently being used in the secondary database 122. If the high usage threshold value 400A is reached for either table A or table C in operation 458, the least recently used database entries for that table are removed in operation 462.
  • For example, the high usage threshold value 400B for table A may be set to 75% and the high usage threshold value 400B for table C may be set to 85%. If storage in the secondary database 122 is 80% full when the counter/clock 404 reaches a next aging cycle time 400D, the least recently used database entry in table A is removed in operation 462. The LU tag value LU=2 indicates that database entry 416 is the least recently used entry in table A and is accordingly removed from the secondary database 122 in operation 462.
  • In operation 464, the cache manager 150 determines the amount of used storage space after the database entry 416 is removed in operation 462. If the percentage of used memory space does not drop below the low usage threshold value 400C for table A in operation 464, the next least recently used database entry is removed from table A in operation 462. Database entries are removed from tables A until the amount of utilized space in the secondary database drops below the low usage threshold value in operation 464. A next aging cycle is started for table A in operation 460 and the cache manager 150 waits for the expiration of the next aging cycle 400D in operation 456 before conducting the next usage based purge in operation 458.
  • If the aging cycles 400D for tables A and C are different, then a same aging cycle value 400D may be used. If the HUT values 400B for both table A and table C are reached at the next common aging cycle, then database entries may be removed from both table A and table C in a round robin fashion. Alternatively, different LRU aging sessions may be separately conducted for tables A and C and LRU database entries for each table removed independently according to their associated HUT values 400B, LUT values 400C and aging cycles 400D.
  • For example, at the next aging cycle for table C, memory utilization in secondary database 122 may exceed the 85% high usage threshold value 400B assigned to table C. Accordingly, least recently used database entries are removed from table C in operation 462 until the database storage reaches the low usage threshold value 400C for table C. In this example, the cache manager 150 removes the least recently used database entries 418 (DB entries # 1, #3, and #4) from table C in order to reach the low usage threshold value 400C associated with table C.
  • Higher priority data in a particular table may be assigned larger high usage threshold values 400B and/or larger low usage threshold values 400C. In addition, the aging cycles 400D for high priority data may be set to longer time periods. These larger threshold values 400B, 400C, and 400D cause the cache manager 150 to remove the least recently used database items for those tables less frequently. Thus, the usage based aging parameters 400 allow automatic customized removal of different types of selectable data from the secondary database 122.
  • FIG. 8 explains in more detail how the cache manager 150 conducts time based aging. Referring to FIGS. 6 and 8, any tables having time based aging constraints are identified in operation 480. In this example, table D is assigned a lifetime value 402B and an associated cycle time value 402C in listing 402. The cache manager 150 uses the counter/timer 404 in operation 482 to determine when a next cycle time 402C is reached. Any rows in table D that have timestamps 414 exceeding the lifetime value 402B are identified in operation 484 and removed in operation 486.
  • For example, the lifetime value 402B for table D may be set to a particular counter value of say LIFETIME=20. When the cycle time 402C is reached in operation 482, the value for counter/clock 404 is compared with the timestamp values 414 in table D. The difference between the value of counter/clock 404 and the timestamp values 414 are determined in operation 484. In this example, the counter 404 may have a current value of 28. The difference between the current value of counter 404 (28) and the timestamp value for database entry 420 in table D (TS=7) is greater than the lifetime value 402B (LIFETIME=20). Accordingly, the database entry 420 is removed from table D in operation 486. Any other database entries in table D with expired lifetimes are also removed in operation 486.
  • Similar to usage based aging, different tables can be assigned different lifetime values 402B and cycle times 402C. Higher priority data may be assigned larger lifetime values 402B and/or may be evaluated less frequently by assigning larger cycle time values 402C.
  • Tables associated with even higher priority data might not be assigned any aging constraints. For example, table B in FIG. 6 is not assigned any aging constraints. Accordingly, the database entries in table B remain in the secondary database 122 until replaced by updates from the primary database 140.
  • Cache Group Aging
  • Referring back to both operation 462 in FIG. 7 and operation 486 in FIG. 8, database entries associated with the same cache group may be removed according to usage based or time based aging constraints. Referring also back to FIG. 4, the CUSTOMER table 302 may both be assigned usage based aging constraints. The high usage threshold may be reached for CUSTOMER table 302 and the database entry PK1=100 in the CUSTOMER table 302 may be the least recently used. Accordingly, the entire cache instance 320 may be removed in operation 462 in FIG. 7. For example, the root database entry PK1=100 is removed from the CUSTOMER table 302 and the child database entries PK2=14 and PK2=20 with referencing foreign keys are removed from the ORDERS table 304.
  • In another example, usage based aging may be assigned to the child ORDERS table 304 in FIG. 4. When storage in secondary database 122 reaches the high usage threshold value for ORDERS table 304, database entry PK1=14 may be the least recently used.
  • In one embodiment, all of the root and child database entries for the same cache instance 320 are removed from the secondary database in operation 462 in FIG. 7. In another embodiment, cache groups are only aged based on the database entries in the root table 302. For example, since database entry PK2=14 is located in child table 304 and not located in root table 302, no usage based aging is performed.
  • For time based aging, database entries associated with the same cache group may also be controlled by the root table. For example, timestamps may only be applied to the database entries in the root CUSTOMER table 302 in FIG. 4. Whenever one of the database entries in CUSTOMER table 302 resides in the secondary database 122 beyond a specified lifetime value, all of the database entries associated with that cache instance are removed at the same time.
  • For example in FIG. 4, database entry PK1=100 may reside in the secondary database 122 beyond a lifetime value assigned to CUSTOMER table 302. Accordingly, both database entry PK1=100 in CUSTOMER table 302 and the other database entries PK2=14 and PK2=20 in ORDERS table 304 associated with the same cache instance 320 are removed by the cache manager 150.
  • The system described above can use dedicated processor systems, micro controllers, programmable logic devices, or microprocessors that perform some or all of the operations. Some of the operations described above may be implemented in software and other operations may be implemented in hardware.
  • For the sake of convenience, the operations are described as various interconnected functional blocks or distinct software modules. This is not necessary, however, and there may be cases where these functional blocks or modules are equivalently aggregated into a single logic device, program or operation with unclear boundaries. In any event, the functional blocks and software modules or features of the flexible interface can be implemented by themselves, or in combination with other operations in either hardware or software.
  • Having described and illustrated the principles of the invention in a preferred embodiment thereof, it should be apparent that the invention may be modified in arrangement and detail without departing from such principles. Claim is made to all modifications and variation coming within the spirit and scope of the following claims.

Claims (24)

1. A method, comprising:
operating a fully transactional mid-tier database;
receiving one or more database transactions at the mid-tier database; and
dynamically loading database entries from a fully transactional backend-tier database into the mid-tier database according to the received database transactions.
2. The method according to claim 1 further comprising operating the mid-tier database as an in-memory database.
3. The method according to claim 1 further comprising:
identifying database entries associated with the database transactions;
servicing the database transactions with the mid-tier database when the identified database entries are contained in the mid-tier database; and
querying database entries in the backend-tier database when the identified database entries are not contained in the mid-tier database.
4. The method according to claim 3 further comprising:
uploading the queried database entries into the mid-tier database; and
servicing the database transactions with the mid-tier database using at least some of the uploaded database entries from the backend-tier database.
5. The method according to claim 1 further comprising:
identifying tables and primary keys referenced by the database transactions;
searching the mid-tier database for the identified tables and primary keys;
servicing the database transactions with the mid-tier database when the identified tables and primary keys are located in the mid-tier database; and
accessing the backend-tier database when the identified tables and primary keys are not located in the mid-tier database.
6. The method according to claim 1 further comprising:
associating database entries from different tables with a same cache group;
identifying a database transaction that references one or more database entries associated with the cache group;
uploading the entire cache group from the backend-tier database into the mid-tier database when the referenced database entries are not contained in the mid-tier database.
7. The method according to claim 6 further comprising:
identifying a first database entry in a first table;
identifying a primary key associated with the first database entry in the first table;
identifying a second database entry in a second table having a foreign key referencing the primary key in the first table; and
associating both the first database entry in the first table and the second database entry in the second table with the same cache group.
8. A method, comprising:
operating a database system;
assigning aging parameters to selected tables in the database system; and
removing database items from the selected tables in the database system according to the assigned aging parameters.
9. The method according to claim 8 further comprising:
associating time based aging with the selected tables in the database system; and
removing the database items from the selected tables according to how long the database items have resided in the database system.
10. The method according to claim 8 further comprising:
associating usage based aging with the selected tables in the database system; and
removing the database items from the selected tables according to how recently the database items have been used in the database system.
11. The method according to claim 10 further comprising:
assigning a high usage threshold value, a low usage threshold value, and an aging cycle to the selected tables in the database system;
identifying an amount of available space in the database system for each aging cycle;
removing at least some of the least recently used database items from the selected tables when an amount of storage space in the database system reaches the high usage threshold value; and
removing least recently used database items from the selected tables until the amount of storage space in the database system reaches the low usage threshold value.
12. The method according to claim 8 further comprising:
configuring different time based aging tables and usage based aging tables in the database system;
removing at least some of the database items from the time based aging tables that have resided in the database system beyond a configured time period;
removing at some of the least recently used database items from the usage based aging tables when storage in the database system reaches a configured usage threshold; and
skipping removal of database items from non-time based and non-usage based tables in the database system.
13. The method according to claim 8 further comprising:
associating some of the database items from different selected tables with a same cache group;
assigning an aging parameter to a root table of the cache group; and
removing the database items from both the root table and one or more child tables associated with the cache group according to the aging parameter assigned to the root table.
14. Computer readable media containing instructions that when executed by a computer, comprise:
operating a fully-transactional secondary database;
receiving database transactions directed to the secondary database;
searching the secondary database for data items referenced by the transactions;
servicing the database transactions with the secondary database when the secondary database contains the referenced data items;
querying a fully-transactional primary database when the referenced data items are not contained in the secondary database; and
updating the secondary database with at least some of the data items queried in the primary database.
15. The computer readable media according to claim 14 further comprising instructions that when executed result in:
assigning aging parameters to selectable data items in the secondary database; and
automatically removing data items from the secondary database according to the assigned aging parameters.
16. The computer readable media according to claim 14 further comprising instructions that when executed result in:
assigning either a time based aging parameter or a least recently used aging parameter to programmably selectable tables in the secondary database; and
removing the data items according to the time based aging parameter or least recently used aging parameter assigned to the tables containing the data items.
17. The computer readable media according to claim 14 further comprising instructions that when executed result in:
configuring time based aging tables and usage based aging tables in the secondary database;
removing at least some of the data items from the time based aging tables that have resided in the secondary database beyond a configured time period; and
removing at some of the least recently used data items from the usage based aging tables when storage in the secondary database reaches a configured usage threshold value.
18. The computer readable media according to claim 14 further comprising instructions that when executed result in:
associating at least some of the data items from different tables with a same cache group;
identifying transactions referencing one or more of the data items from the cache group;
uploading the entire cache group from the primary database into the secondary database when any of the referenced data items are not contained in the secondary database.
19. The computer readable media according to claim 18 further comprising instructions that when executed result in:
assigning an aging parameter to a root table for the cache group; and
removing all of the data items associated with the cache group according to the aging parameter assigned to the root table.
20. A database management system, comprising:
an application-tier database system receiving requests from database applications; and
a cache manager configured to maintain at least a sub-set of database entries from a backend-tier database system in the application-tier database system, the cache manager dynamically varying what database entries are loaded from the backend-tier database system into the application-tier database system according to the requests from the database applications.
21. The database management system according to claim 20 wherein the cache manager is further configured to:
monitor the different requests received by the application-tier database system;
identify what database entries are referenced by the requests;
service the requests with the application-tier database system when the referenced database entries are contained in the application-tier database system;
temporarily stall the requests when the referenced database entries are not contained in the application-tier database system;
query the backend-tier database system for the referenced database entries;
load the database entries queried from the backend database system into the application-tier database system; and
service the requests using at least some of the database entries loaded into the application-tier database system from the backend-tier database system.
22. The database management system according to claim 20 wherein the cache manager is further configured to:
identify cache groups that include both a root table with one or more database entries having primary keys and one or more child tables having one or more database entries having foreign keys referencing the primary keys in the root table; and
dynamically removing the identified cache groups from the application-tier database system or dynamically loading the identified cache groups from the backend-tier database system into the application-tier database system.
23. The database management system according to claim 20 wherein usage based aging is assigned to selected tables in the application-tier database system and the cache manager removes database entries contained in the selected tables according to how recently the database entries have been used in the application-tier database system.
24. The database management system according to claim 20 wherein time-based aging is assigned to selected tables in the application-tier database system and the cache manager removes database entries contained in the selected tables according to how long the database entries have resided in the application-tier database system.
US12/030,113 2007-03-07 2008-02-12 Database system with dynamic database caching Abandoned US20080222111A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/030,113 US20080222111A1 (en) 2007-03-07 2008-02-12 Database system with dynamic database caching
US13/799,572 US9569475B2 (en) 2008-02-12 2013-03-13 Distributed consistent grid of in-memory database caches

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US90575107P 2007-03-07 2007-03-07
US2609008P 2008-02-04 2008-02-04
US12/030,113 US20080222111A1 (en) 2007-03-07 2008-02-12 Database system with dynamic database caching

Publications (1)

Publication Number Publication Date
US20080222111A1 true US20080222111A1 (en) 2008-09-11

Family

ID=39742666

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/030,094 Active 2029-05-05 US8868504B2 (en) 2007-03-07 2008-02-12 Database system with active standby and nodes
US12/030,113 Abandoned US20080222111A1 (en) 2007-03-07 2008-02-12 Database system with dynamic database caching

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US12/030,094 Active 2029-05-05 US8868504B2 (en) 2007-03-07 2008-02-12 Database system with active standby and nodes

Country Status (1)

Country Link
US (2) US8868504B2 (en)

Cited By (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100082648A1 (en) * 2008-09-19 2010-04-01 Oracle International Corporation Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters
US20110071981A1 (en) * 2009-09-18 2011-03-24 Sourav Ghosh Automated integrated high availability of the in-memory database cache and the backend enterprise database
US20110072217A1 (en) * 2009-09-18 2011-03-24 Chi Hoang Distributed Consistent Grid of In-Memory Database Caches
US20110138123A1 (en) * 2009-12-03 2011-06-09 Sybase, Inc. Managing Data Storage as an In-Memory Database in a Database Management System
US20120158650A1 (en) * 2010-12-16 2012-06-21 Sybase, Inc. Distributed data cache database architecture
US8433684B2 (en) 2010-03-30 2013-04-30 Sybase, Inc. Managing data backup of an in-memory database in a database management system
US20130138876A1 (en) * 2011-11-29 2013-05-30 Microsoft Corporation Computer system with memory aging for high performance
WO2013083183A1 (en) * 2011-12-06 2013-06-13 Huawei Technologies Co., Ltd. Database with aging mechanism and method for managing a database
US20130159347A1 (en) * 2011-12-20 2013-06-20 Software Ag Automatic and dynamic design of cache groups
CN103218416A (en) * 2013-03-27 2013-07-24 华为技术有限公司 Method, device and system for loading database
US20130246375A1 (en) * 2012-03-14 2013-09-19 Max Roy PRAKOSO Method and system for facilitating access to recorded data
US8589361B2 (en) 2010-08-30 2013-11-19 Oracle International Corporation Reduced disk space standby
US20140095435A1 (en) * 2012-09-28 2014-04-03 Vmware,Inc. Automated document replication in a distributed computing system
US8782102B2 (en) 2010-09-24 2014-07-15 International Business Machines Corporation Compact aggregation working areas for efficient grouping and aggregation using multi-core CPUs
US20150347410A1 (en) * 2014-06-03 2015-12-03 Sap Ag Cached Views
US9317574B1 (en) 2012-06-11 2016-04-19 Dell Software Inc. System and method for managing and identifying subject matter experts
US20160110416A1 (en) * 2013-04-06 2016-04-21 Citrix Systems, Inc. Systems and methods for caching of sql responses using integrated caching
US9349016B1 (en) 2014-06-06 2016-05-24 Dell Software Inc. System and method for user-context-based data loss prevention
US9390240B1 (en) 2012-06-11 2016-07-12 Dell Software Inc. System and method for querying data
US20160283496A1 (en) * 2015-03-27 2016-09-29 Acer Incorporated Electronic apparatus and method for temporarily storing data thereof
US9501744B1 (en) 2012-06-11 2016-11-22 Dell Software Inc. System and method for classifying data
US9563782B1 (en) 2015-04-10 2017-02-07 Dell Software Inc. Systems and methods of secure self-service access to content
US9569626B1 (en) 2015-04-10 2017-02-14 Dell Software Inc. Systems and methods of reporting content-exposure events
US9578060B1 (en) 2012-06-11 2017-02-21 Dell Software Inc. System and method for data loss prevention across heterogeneous communications platforms
JPWO2015193973A1 (en) * 2014-06-17 2017-04-20 三菱電機株式会社 Information processing apparatus and information processing method
US9641555B1 (en) 2015-04-10 2017-05-02 Dell Software Inc. Systems and methods of tracking content-exposure events
US9749275B2 (en) 2013-10-03 2017-08-29 Yandex Europe Ag Method of and system for constructing a listing of E-mail messages
US9842218B1 (en) 2015-04-10 2017-12-12 Dell Software Inc. Systems and methods of secure self-service access to content
US9842220B1 (en) 2015-04-10 2017-12-12 Dell Software Inc. Systems and methods of secure self-service access to content
US9864816B2 (en) 2015-04-29 2018-01-09 Oracle International Corporation Dynamically updating data guide for hierarchical data objects
US9990506B1 (en) 2015-03-30 2018-06-05 Quest Software Inc. Systems and methods of securing network-accessible peripheral devices
US10142391B1 (en) 2016-03-25 2018-11-27 Quest Software Inc. Systems and methods of diagnosing down-layer performance problems via multi-stream performance patternization
US10157358B1 (en) 2015-10-05 2018-12-18 Quest Software Inc. Systems and methods for multi-stream performance patternization and interval-based prediction
US20190007479A1 (en) * 2016-01-13 2019-01-03 Hangzhou Hikvision Digital Technology Co., Ltd. Multimedia Data Transmission Method and Device
US10191944B2 (en) 2015-10-23 2019-01-29 Oracle International Corporation Columnar data arrangement for semi-structured data
US10218588B1 (en) 2015-10-05 2019-02-26 Quest Software Inc. Systems and methods for multi-stream performance patternization and optimization of virtual meetings
US10311154B2 (en) 2013-09-21 2019-06-04 Oracle International Corporation Combined row and columnar storage for in-memory databases for OLTP and analytics workloads
US10326748B1 (en) 2015-02-25 2019-06-18 Quest Software Inc. Systems and methods for event-based authentication
US10417613B1 (en) 2015-03-17 2019-09-17 Quest Software Inc. Systems and methods of patternizing logged user-initiated events for scheduling functions
US20190354407A1 (en) * 2018-05-15 2019-11-21 Sap Se Optimized Database Resource Handling
US10536352B1 (en) 2015-08-05 2020-01-14 Quest Software Inc. Systems and methods for tuning cross-platform data collection
US10698899B2 (en) * 2016-08-22 2020-06-30 Kabushiki Kaisha Toshiba Data processing method, data processing device, storage system, and method for controlling storage system
US10713256B2 (en) * 2018-11-26 2020-07-14 Bank Of America Corporation Database tool
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US11170002B2 (en) 2018-10-19 2021-11-09 Oracle International Corporation Integrating Kafka data-in-motion with data-at-rest tables
US20220083555A1 (en) * 2018-11-27 2022-03-17 Sap Se Systems and Methods For Associating Data Entries
US11675761B2 (en) 2017-09-30 2023-06-13 Oracle International Corporation Performing in-memory columnar analytic queries on externally resident data
US20230305961A1 (en) * 2022-03-28 2023-09-28 Woven By Toyota, Inc. Cache coherency protocol for encoding a cache line with a domain shared state
US11829349B2 (en) 2015-05-11 2023-11-28 Oracle International Corporation Direct-connect functionality in a distributed database grid
US11954034B2 (en) * 2022-03-28 2024-04-09 Woven By Toyota, Inc. Cache coherency protocol for encoding a cache line with a domain shared state

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996705B2 (en) * 2000-04-17 2015-03-31 Circadence Corporation Optimization of enhanced network links
US8209417B2 (en) * 2007-03-08 2012-06-26 Oracle International Corporation Dynamic resource profiles for clusterware-managed resources
US8176099B2 (en) 2007-08-30 2012-05-08 Red Hat, Inc. Grid based file system
US8069145B2 (en) * 2007-08-30 2011-11-29 Red Hat, Inc. Data gravitation
US7941399B2 (en) 2007-11-09 2011-05-10 Microsoft Corporation Collaborative authoring
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8825594B2 (en) * 2008-05-08 2014-09-02 Microsoft Corporation Caching infrastructure
US8234243B2 (en) * 2008-06-19 2012-07-31 Microsoft Corporation Third tier transactional commit for asynchronous replication
US9198222B2 (en) 2008-10-22 2015-11-24 International Business Machines Corporation Telecommunication network
US8156173B2 (en) 2009-04-06 2012-04-10 Novell, Inc. Synchronizing machines in groups
KR101265388B1 (en) * 2009-07-02 2013-05-20 엔에이치엔비즈니스플랫폼 주식회사 High Availability Data Base Management System and Method for Managing Database Using High Availability Data Base Management System
US20110178984A1 (en) * 2010-01-18 2011-07-21 Microsoft Corporation Replication protocol for database systems
US8825601B2 (en) * 2010-02-01 2014-09-02 Microsoft Corporation Logical data backup and rollback using incremental capture in a distributed database
US10430298B2 (en) 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US9075858B2 (en) * 2010-12-16 2015-07-07 Sybase, Inc. Non-disruptive data movement and node rebalancing in extreme OLTP environments
US11086850B2 (en) * 2011-04-13 2021-08-10 International Business Machines Corporation Persisting of a low latency in-memory database
US9128974B2 (en) * 2011-07-19 2015-09-08 Infosys Limited Methods for tracking database changes and devices thereof
US9449014B2 (en) * 2011-11-29 2016-09-20 Dell Products L.P. Resynchronization of replicated data
US20130138614A1 (en) * 2011-11-30 2013-05-30 Mark Travis Two-phase data locking transaction processing with distributed partitions and mirroring
US20130151398A1 (en) * 2011-12-09 2013-06-13 Dun & Bradstreet Business Information Solutions, Ltd. Portfolio risk manager
US8996465B2 (en) * 2012-03-08 2015-03-31 Sap Ag Replicating data to a database
GB2504112A (en) * 2012-07-18 2014-01-22 Ibm Generating database sequences in a replicated database environment
US9224113B2 (en) * 2012-11-30 2015-12-29 Bank Of America Corporation Preparing preliminary transaction work for a mobile banking customer
US9824132B2 (en) * 2013-01-08 2017-11-21 Facebook, Inc. Data recovery in multi-leader distributed systems
DE102013101863A1 (en) * 2013-02-26 2014-08-28 Fujitsu Technology Solutions Intellectual Property Gmbh Highly available main memory database system, working methods and their uses
US9904718B2 (en) * 2013-03-13 2018-02-27 Wal-Mart Stores, Inc. System and method for streaming events in a transaction-based system
US10152500B2 (en) 2013-03-14 2018-12-11 Oracle International Corporation Read mostly instances
US9436561B2 (en) 2013-03-28 2016-09-06 Microsoft Technology Licensing, Llc Recovery processing using torn write detection
US9619542B2 (en) * 2013-04-06 2017-04-11 Citrix Systems, Inc. Systems and methods for application-state distributed replication table hunting
US20150074219A1 (en) * 2013-07-12 2015-03-12 Brocade Communications Systems, Inc. High availability networking using transactional memory
US9674193B1 (en) 2013-07-30 2017-06-06 Juniper Networks, Inc. Aggregation and disbursement of licenses in distributed networks
US9430523B2 (en) 2013-09-06 2016-08-30 Sap Se Entity-relationship model extensions using annotations
US9354948B2 (en) 2013-09-06 2016-05-31 Sap Se Data models containing host language embedded constraints
US9361407B2 (en) 2013-09-06 2016-06-07 Sap Se SQL extended with transient fields for calculation expressions in enhanced data models
US9442977B2 (en) 2013-09-06 2016-09-13 Sap Se Database language extended to accommodate entity-relationship models
US9176801B2 (en) 2013-09-06 2015-11-03 Sap Se Advanced data models containing declarative and programmatic constraints
US9639572B2 (en) 2013-09-06 2017-05-02 Sap Se SQL enhancements simplifying database querying
US9619552B2 (en) 2013-09-06 2017-04-11 Sap Se Core data services extensibility for entity-relationship models
US9773048B2 (en) 2013-09-12 2017-09-26 Sap Se Historical data for in memory data warehouse
US9734230B2 (en) * 2013-09-12 2017-08-15 Sap Se Cross system analytics for in memory data warehouse
US9734221B2 (en) 2013-09-12 2017-08-15 Sap Se In memory database warehouse
US9934008B2 (en) * 2014-06-18 2018-04-03 Netapp, Inc. Methods for facilitating persistent storage of in-memory databases and devices thereof
US10423498B2 (en) * 2014-06-26 2019-09-24 Sybase, Inc. Zero data loss transfer protocol
KR20160046235A (en) * 2014-10-20 2016-04-28 한국전자통신연구원 Method for generating group of contents cache server and providing contents
WO2016183559A1 (en) * 2015-05-14 2016-11-17 Walleye Software, LLC Persistent query dispatch and execution architecture
KR102136941B1 (en) * 2015-07-10 2020-08-13 아브 이니티오 테크놀로지 엘엘시 Method and architecture for providing database access control in a network with a distributed database system
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US10169134B2 (en) * 2017-01-21 2019-01-01 International Business Machines Corporation Asynchronous mirror consistency audit
US10698921B2 (en) * 2017-02-28 2020-06-30 Sap Se Persistence and initialization of synchronization state for serialized data log replay in database systems
US10521344B1 (en) * 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US10698882B2 (en) * 2017-03-17 2020-06-30 International Business Machines Corporation Data compartments for read/write activity in a standby database
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database
US11347774B2 (en) 2017-08-01 2022-05-31 Salesforce.Com, Inc. High availability database through distributed store
US11016990B2 (en) 2017-08-02 2021-05-25 Salesforce.Com, Inc. Fencing out nodes in a distributed clustered system
US10866943B1 (en) 2017-08-24 2020-12-15 Deephaven Data Labs Llc Keyed row selection
US11481362B2 (en) * 2017-11-13 2022-10-25 Cisco Technology, Inc. Using persistent memory to enable restartability of bulk load transactions in cloud databases
GB201801676D0 (en) * 2018-02-01 2018-03-21 Microsoft Technology Licensing Llc Database system
US11061909B2 (en) 2018-07-19 2021-07-13 Sap Se Generating a single transactional data stream from multiple database logs
US10949548B2 (en) * 2018-10-18 2021-03-16 Verizon Patent And Licensing Inc. Systems and methods for providing multi-node resiliency for blockchain peers
US11301330B2 (en) * 2019-01-30 2022-04-12 EMC IP Holding Company, LLC System and method for restoring metadata pages
US10938750B2 (en) * 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
KR102230829B1 (en) 2019-03-18 2021-03-23 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. Consensus system downtime recovery
SG11201908387SA (en) 2019-03-18 2019-10-30 Alibaba Group Holding Ltd Consensus system downtime recovery
CN112039765B (en) * 2019-06-03 2023-05-30 中兴通讯股份有限公司 Method for transmitting route information, method and device for selecting route
US11928127B2 (en) * 2019-06-26 2024-03-12 International Business Machines Corporation Dynamic replication based on identity
KR102202792B1 (en) * 2020-08-06 2021-01-15 (주)시큐레이어 Method and device for performing multi-caching on data sources of same or different types by using cluster-based processing system
US11327858B2 (en) 2020-08-11 2022-05-10 Seagate Technology Llc Preserving data integrity during controller failure

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123099A (en) * 1987-07-15 1992-06-16 Fujitsu Ltd. Hot standby memory copy system
US5566315A (en) * 1994-12-30 1996-10-15 Storage Technology Corporation Process of predicting and controlling the use of cache memory in a computer system
US20020116404A1 (en) * 2000-06-07 2002-08-22 Transact In Memory, Inc. Method and system for highly-parallel logging and recovery operation in main-memory transaction processing systems
US20040193574A1 (en) * 2003-03-27 2004-09-30 Fujitsu Limited Application server, cache program, and application server system
US20050289198A1 (en) * 2004-06-25 2005-12-29 International Business Machines Corporation Methods, apparatus and computer programs for data replication
US20070239661A1 (en) * 2006-03-28 2007-10-11 Sun Microsystems, Inc. Systems and methods for a distributed in-memory database and distributed cache

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5095421A (en) * 1989-08-17 1992-03-10 International Business Machines Corporation Transaction processing facility within an operating system environment
US5388196A (en) * 1990-09-07 1995-02-07 Xerox Corporation Hierarchical shared books with database
JP3516344B2 (en) 1990-10-22 2004-04-05 株式会社日立製作所 Multiple data processing method for distributed processing system
US5263156A (en) * 1990-12-20 1993-11-16 Bell Communications Research, Inc. Parallel, distributed optimistic concurrency control certification using hardware filtering
US5287496A (en) 1991-02-25 1994-02-15 International Business Machines Corporation Dynamic, finite versioning for concurrent transaction and query processing
US5369757A (en) * 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US5333316A (en) * 1991-08-16 1994-07-26 International Business Machines Corporation Locking and row by row modification of a database stored in a single master table and multiple virtual tables of a plurality of concurrent users
EP0541281B1 (en) * 1991-11-04 1998-04-29 Commvault Systems, Inc. Incremental-computer-file backup using signatures
US5355477A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning
US5423037A (en) * 1992-03-17 1995-06-06 Teleserve Transaction Technology As Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US5241675A (en) * 1992-04-09 1993-08-31 Bell Communications Research, Inc. Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers
US5454102A (en) * 1993-01-19 1995-09-26 Canon Information Systems, Inc. Method and apparatus for transferring structured data using a self-generating node network
US5553279A (en) * 1993-10-08 1996-09-03 International Business Machines Corporation Lossless distribution of time series data in a relational data base network
US5613113A (en) * 1993-10-08 1997-03-18 International Business Machines Corporation Consistent recreation of events from activity logs
US5642503A (en) * 1993-12-15 1997-06-24 Microsoft Corporation Method and computer system for implementing concurrent accesses of a database record by multiple users
US5581753A (en) * 1994-09-28 1996-12-03 Xerox Corporation Method for providing session consistency guarantees
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
EP0839353B1 (en) * 1995-07-20 2001-09-26 Novell, Inc. Transaction synchronization in a disconnectable computer and network
US5870758A (en) * 1996-03-11 1999-02-09 Oracle Corporation Method and apparatus for providing isolation levels in a database system
US6317860B1 (en) * 1996-10-28 2001-11-13 Altera Corporation Electronic design automation tool for display of design profile
US5806076A (en) * 1996-10-29 1998-09-08 Oracle Corporation Tracking dependencies between transactions in a database
US5956731A (en) * 1997-04-23 1999-09-21 Oracle Corporation Sharing snapshots for consistent reads
US5951695A (en) * 1997-07-25 1999-09-14 Hewlett-Packard Company Fast database failover
US6014669A (en) * 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
US5924096A (en) * 1997-10-15 1999-07-13 Novell, Inc. Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand
US6192377B1 (en) * 1998-05-13 2001-02-20 Oracle Corporation Method and apparatus for determing whether a transaction can use a version of a data item
US6353835B1 (en) * 1998-08-03 2002-03-05 Lucent Technologies Inc. Technique for effectively maintaining materialized views in a data warehouse
US6393485B1 (en) * 1998-10-27 2002-05-21 International Business Machines Corporation Method and apparatus for managing clustered computer systems
US6516327B1 (en) * 1998-12-24 2003-02-04 International Business Machines Corporation System and method for synchronizing data in multiple databases
US6502133B1 (en) 1999-03-25 2002-12-31 Lucent Technologies Inc. Real-time event processing system with analysis engine using recovery information
US6122630A (en) * 1999-06-08 2000-09-19 Iti, Inc. Bidirectional database replication scheme for controlling ping-ponging
US6839751B1 (en) * 1999-06-30 2005-01-04 Hi/Fn, Inc. Re-using information from data transactions for maintaining statistics in network monitoring
US6401104B1 (en) * 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US7024656B1 (en) * 1999-11-29 2006-04-04 Oracle International Corporation Persistent agents
US7062483B2 (en) * 2000-05-18 2006-06-13 Endeca Technologies, Inc. Hierarchical data-driven search and navigation system and method for information retrieval
US6691139B2 (en) * 2001-01-31 2004-02-10 Hewlett-Packard Development Co., Ltd. Recreation of archives at a disaster recovery site
US20020165724A1 (en) * 2001-02-07 2002-11-07 Blankesteijn Bartus C. Method and system for propagating data changes through data objects
US7177866B2 (en) * 2001-03-16 2007-02-13 Gravic, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
US7464113B1 (en) * 2001-05-10 2008-12-09 Oracle International Corporations Disaster recovery with bounded data loss
US6574717B1 (en) * 2001-05-31 2003-06-03 Oracle Corporation Techniques for time-based retention of a reusable resource
US7290017B1 (en) * 2001-09-20 2007-10-30 Emc Corporation System and method for management of data replication
US7222136B1 (en) * 2002-05-23 2007-05-22 Oracle International Corporation Communicating data dictionary information of database objects through a redo stream
US7076508B2 (en) * 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files
US7287034B2 (en) * 2003-05-08 2007-10-23 Oracle International Corporation On-demand multi-version data dictionary to support distributed applications
US7966293B1 (en) * 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US7596571B2 (en) * 2004-06-30 2009-09-29 Technorati, Inc. Ecosystem method of aggregation and search and related techniques
EP1684194A1 (en) * 2005-01-25 2006-07-26 Sap Ag A central lock service for database applications
US7546431B2 (en) * 2005-03-21 2009-06-09 Emc Corporation Distributed open writable snapshot copy facility using file migration policies
JP4414381B2 (en) * 2005-08-03 2010-02-10 富士通株式会社 File management program, file management apparatus, and file management method
US7627612B2 (en) * 2006-09-28 2009-12-01 Emc Israel Development Center, Ltd. Methods and apparatus for optimal journaling for continuous data replication
US7734580B2 (en) * 2007-01-29 2010-06-08 Oracle International Corporation Readable physical storage replica and standby database system
US7680795B2 (en) * 2007-03-16 2010-03-16 International Business Machines Corporation Shared disk clones
US8768895B2 (en) * 2007-04-11 2014-07-01 Emc Corporation Subsegmenting for efficient storage, resemblance determination, and transmission
US9395929B2 (en) * 2008-04-25 2016-07-19 Netapp, Inc. Network storage server with integrated encryption, compression and deduplication capability
US8468320B1 (en) * 2008-06-30 2013-06-18 Symantec Operating Corporation Scalability of data deduplication through the use of a locality table
US7991775B2 (en) * 2008-08-08 2011-08-02 Oracle International Corporation Global checkpoint SCN
US8204859B2 (en) * 2008-12-10 2012-06-19 Commvault Systems, Inc. Systems and methods for managing replicated database data
US8538930B2 (en) * 2009-10-09 2013-09-17 International Business Machines Corporation Method and system for database recovery
US9239843B2 (en) * 2009-12-15 2016-01-19 Symantec Corporation Scalable de-duplication for storage systems
US8732133B2 (en) * 2010-03-16 2014-05-20 Commvault Systems, Inc. Extensible data deduplication system and method
US8589361B2 (en) * 2010-08-30 2013-11-19 Oracle International Corporation Reduced disk space standby
US8838919B2 (en) * 2010-08-30 2014-09-16 Oracle International Corporation Controlling data lag in a replicated computer system
US8868492B2 (en) * 2011-06-15 2014-10-21 Oracle International Corporation Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123099A (en) * 1987-07-15 1992-06-16 Fujitsu Ltd. Hot standby memory copy system
US5566315A (en) * 1994-12-30 1996-10-15 Storage Technology Corporation Process of predicting and controlling the use of cache memory in a computer system
US20020116404A1 (en) * 2000-06-07 2002-08-22 Transact In Memory, Inc. Method and system for highly-parallel logging and recovery operation in main-memory transaction processing systems
US20040193574A1 (en) * 2003-03-27 2004-09-30 Fujitsu Limited Application server, cache program, and application server system
US20050289198A1 (en) * 2004-06-25 2005-12-29 International Business Machines Corporation Methods, apparatus and computer programs for data replication
US20070239661A1 (en) * 2006-03-28 2007-10-11 Sun Microsystems, Inc. Systems and methods for a distributed in-memory database and distributed cache

Cited By (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130198249A1 (en) * 2008-02-12 2013-08-01 Oracle International Corporation Distributed consistent grid of in-memory database caches
US9569475B2 (en) * 2008-02-12 2017-02-14 Oracle International Corporation Distributed consistent grid of in-memory database caches
US20100082648A1 (en) * 2008-09-19 2010-04-01 Oracle International Corporation Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters
US8401994B2 (en) 2009-09-18 2013-03-19 Oracle International Corporation Distributed consistent grid of in-memory database caches
US8306951B2 (en) 2009-09-18 2012-11-06 Oracle International Corporation Automated integrated high availability of the in-memory database cache and the backend enterprise database
US20110071981A1 (en) * 2009-09-18 2011-03-24 Sourav Ghosh Automated integrated high availability of the in-memory database cache and the backend enterprise database
US20110072217A1 (en) * 2009-09-18 2011-03-24 Chi Hoang Distributed Consistent Grid of In-Memory Database Caches
US9870412B2 (en) 2009-09-18 2018-01-16 Oracle International Corporation Automated integrated high availability of the in-memory database cache and the backend enterprise database
US8868510B2 (en) * 2009-12-03 2014-10-21 Sybase, Inc. Managing data storage as an in-memory database in a database management system
US20110138123A1 (en) * 2009-12-03 2011-06-09 Sybase, Inc. Managing Data Storage as an In-Memory Database in a Database Management System
US8433684B2 (en) 2010-03-30 2013-04-30 Sybase, Inc. Managing data backup of an in-memory database in a database management system
US8589361B2 (en) 2010-08-30 2013-11-19 Oracle International Corporation Reduced disk space standby
US8782102B2 (en) 2010-09-24 2014-07-15 International Business Machines Corporation Compact aggregation working areas for efficient grouping and aggregation using multi-core CPUs
US20120158650A1 (en) * 2010-12-16 2012-06-21 Sybase, Inc. Distributed data cache database architecture
US9195612B2 (en) * 2011-11-29 2015-11-24 Microsoft Technology Licensing, Llc Computer system with memory aging for high performance
US9916260B2 (en) 2011-11-29 2018-03-13 Microsoft Technology Licensing, Llc Computer system with memory aging for high performance
US20130138876A1 (en) * 2011-11-29 2013-05-30 Microsoft Corporation Computer system with memory aging for high performance
WO2013083183A1 (en) * 2011-12-06 2013-06-13 Huawei Technologies Co., Ltd. Database with aging mechanism and method for managing a database
US8812492B2 (en) * 2011-12-20 2014-08-19 Software Ag Automatic and dynamic design of cache groups
US20130159347A1 (en) * 2011-12-20 2013-06-20 Software Ag Automatic and dynamic design of cache groups
US20130246375A1 (en) * 2012-03-14 2013-09-19 Max Roy PRAKOSO Method and system for facilitating access to recorded data
US10311513B2 (en) * 2012-03-14 2019-06-04 Nasdaq Technology Ab Method and system for facilitating access to recorded data
US11227334B2 (en) * 2012-03-14 2022-01-18 Nasdaq Technology Ab Method and system for facilitating access to recorded data
US20220114669A1 (en) * 2012-03-14 2022-04-14 Nasdaq Technology Ab Method and system for facilitating access to recorded data
US11699285B2 (en) * 2012-03-14 2023-07-11 Nasdaq Technology Ab Method and system for facilitating access to recorded data
US9779260B1 (en) 2012-06-11 2017-10-03 Dell Software Inc. Aggregation and classification of secure data
US9501744B1 (en) 2012-06-11 2016-11-22 Dell Software Inc. System and method for classifying data
US10146954B1 (en) 2012-06-11 2018-12-04 Quest Software Inc. System and method for data aggregation and analysis
US9390240B1 (en) 2012-06-11 2016-07-12 Dell Software Inc. System and method for querying data
US9578060B1 (en) 2012-06-11 2017-02-21 Dell Software Inc. System and method for data loss prevention across heterogeneous communications platforms
US9317574B1 (en) 2012-06-11 2016-04-19 Dell Software Inc. System and method for managing and identifying subject matter experts
US9619539B2 (en) * 2012-09-28 2017-04-11 Vmware, Inc. Automated document replication in a distributed computing system
EP2901310A4 (en) * 2012-09-28 2016-04-27 Vmware Inc Automated document replication in a distributed computing system
US20140095435A1 (en) * 2012-09-28 2014-04-03 Vmware,Inc. Automated document replication in a distributed computing system
CN103218416A (en) * 2013-03-27 2013-07-24 华为技术有限公司 Method, device and system for loading database
US20160110416A1 (en) * 2013-04-06 2016-04-21 Citrix Systems, Inc. Systems and methods for caching of sql responses using integrated caching
US10095739B2 (en) * 2013-04-06 2018-10-09 Citrix Systems, Inc. Systems and methods for caching of SQL responses using integrated caching
US10311154B2 (en) 2013-09-21 2019-06-04 Oracle International Corporation Combined row and columnar storage for in-memory databases for OLTP and analytics workloads
US11860830B2 (en) 2013-09-21 2024-01-02 Oracle International Corporation Combined row and columnar storage for in-memory databases for OLTP and analytics workloads
US9749275B2 (en) 2013-10-03 2017-08-29 Yandex Europe Ag Method of and system for constructing a listing of E-mail messages
US20150347410A1 (en) * 2014-06-03 2015-12-03 Sap Ag Cached Views
US10061808B2 (en) * 2014-06-03 2018-08-28 Sap Se Cached views
US9349016B1 (en) 2014-06-06 2016-05-24 Dell Software Inc. System and method for user-context-based data loss prevention
JPWO2015193973A1 (en) * 2014-06-17 2017-04-20 三菱電機株式会社 Information processing apparatus and information processing method
US10326748B1 (en) 2015-02-25 2019-06-18 Quest Software Inc. Systems and methods for event-based authentication
US10417613B1 (en) 2015-03-17 2019-09-17 Quest Software Inc. Systems and methods of patternizing logged user-initiated events for scheduling functions
US9836468B2 (en) * 2015-03-27 2017-12-05 Acer Incorporated Electronic apparatus and method for temporarily storing data thereof
US20160283496A1 (en) * 2015-03-27 2016-09-29 Acer Incorporated Electronic apparatus and method for temporarily storing data thereof
US9990506B1 (en) 2015-03-30 2018-06-05 Quest Software Inc. Systems and methods of securing network-accessible peripheral devices
US9842220B1 (en) 2015-04-10 2017-12-12 Dell Software Inc. Systems and methods of secure self-service access to content
US9569626B1 (en) 2015-04-10 2017-02-14 Dell Software Inc. Systems and methods of reporting content-exposure events
US9842218B1 (en) 2015-04-10 2017-12-12 Dell Software Inc. Systems and methods of secure self-service access to content
US9641555B1 (en) 2015-04-10 2017-05-02 Dell Software Inc. Systems and methods of tracking content-exposure events
US10140466B1 (en) 2015-04-10 2018-11-27 Quest Software Inc. Systems and methods of secure self-service access to content
US9563782B1 (en) 2015-04-10 2017-02-07 Dell Software Inc. Systems and methods of secure self-service access to content
US9864816B2 (en) 2015-04-29 2018-01-09 Oracle International Corporation Dynamically updating data guide for hierarchical data objects
US11829349B2 (en) 2015-05-11 2023-11-28 Oracle International Corporation Direct-connect functionality in a distributed database grid
US10536352B1 (en) 2015-08-05 2020-01-14 Quest Software Inc. Systems and methods for tuning cross-platform data collection
US10157358B1 (en) 2015-10-05 2018-12-18 Quest Software Inc. Systems and methods for multi-stream performance patternization and interval-based prediction
US10218588B1 (en) 2015-10-05 2019-02-26 Quest Software Inc. Systems and methods for multi-stream performance patternization and optimization of virtual meetings
US10191944B2 (en) 2015-10-23 2019-01-29 Oracle International Corporation Columnar data arrangement for semi-structured data
US10681115B2 (en) * 2016-01-13 2020-06-09 Hangzhou Hikvision Digital Technology Co, Ltd. Multimedia data transmission method and device
US20190007479A1 (en) * 2016-01-13 2019-01-03 Hangzhou Hikvision Digital Technology Co., Ltd. Multimedia Data Transmission Method and Device
US10142391B1 (en) 2016-03-25 2018-11-27 Quest Software Inc. Systems and methods of diagnosing down-layer performance problems via multi-stream performance patternization
US10698899B2 (en) * 2016-08-22 2020-06-30 Kabushiki Kaisha Toshiba Data processing method, data processing device, storage system, and method for controlling storage system
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US11256627B2 (en) 2017-08-31 2022-02-22 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US11675761B2 (en) 2017-09-30 2023-06-13 Oracle International Corporation Performing in-memory columnar analytic queries on externally resident data
US10776165B2 (en) * 2018-05-15 2020-09-15 Sap Se Optimized database resource handling
US20190354407A1 (en) * 2018-05-15 2019-11-21 Sap Se Optimized Database Resource Handling
US11170002B2 (en) 2018-10-19 2021-11-09 Oracle International Corporation Integrating Kafka data-in-motion with data-at-rest tables
US11250000B2 (en) 2018-11-26 2022-02-15 Bank Of America Corporation Database tool
US10713256B2 (en) * 2018-11-26 2020-07-14 Bank Of America Corporation Database tool
US20220083555A1 (en) * 2018-11-27 2022-03-17 Sap Se Systems and Methods For Associating Data Entries
US20230305961A1 (en) * 2022-03-28 2023-09-28 Woven By Toyota, Inc. Cache coherency protocol for encoding a cache line with a domain shared state
US11954034B2 (en) * 2022-03-28 2024-04-09 Woven By Toyota, Inc. Cache coherency protocol for encoding a cache line with a domain shared state

Also Published As

Publication number Publication date
US8868504B2 (en) 2014-10-21
US20080222159A1 (en) 2008-09-11

Similar Documents

Publication Publication Date Title
US20080222111A1 (en) Database system with dynamic database caching
US11048599B2 (en) Time-based checkpoint target for database media recovery
CN112534396B (en) Diary watch in database system
US6950823B2 (en) Transparent edge-of-network data cache
US20180095829A1 (en) Data replication in a database management system
US9092475B2 (en) Database log parallelization
JP5722962B2 (en) Optimize storage performance
US20050086263A1 (en) Self-managing performance statistics repository for databases
US8819074B2 (en) Replacement policy for resource container
US9158802B2 (en) Database partition management
US7644063B2 (en) Apparatus, system, and method for ensuring query execution plan stability in a database management system
KR20080068687A (en) System and method to maintain coherence of cache contents in a multi-tier software system aimed at interfacing large databases
US20210081358A1 (en) Background dataset maintenance
US20080082489A1 (en) Row Identifier List Processing Management
US20230409431A1 (en) Data replication with cross replication group references
Schaffner et al. Towards analytics-as-A-service using an in-memory column database
Schaffner et al. Towards enterprise software as a service in the cloud
US20180081942A1 (en) Managing Data Obsolescence in Relational Databases
US20200175008A1 (en) Query plan sharing
US11789951B2 (en) Storage of data structures
CN112069192B (en) Multi-master with ownership transfer
US20230418711A1 (en) Repairing unresolved dangling references after failover
EP3751429A1 (en) Multi-master with ownership transfer
US20230359622A1 (en) Blocked index join
Boggiano et al. Configuring Query Store

Legal Events

Date Code Title Description
AS Assignment

Owner name: ORACLE INTERNATIONAL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HOANG, CHI KIM;WANG, CHIH-PING;MILLER, JOHN ERNEST;AND OTHERS;REEL/FRAME:020853/0001;SIGNING DATES FROM 20080307 TO 20080424

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION