US20080222111A1 - Database system with dynamic database caching - Google Patents
Database system with dynamic database caching Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, 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.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
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
- 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.
- The present disclosure relates generally to database systems.
- 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.
-
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 inFIG. 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. Aprimary database system 140 can be any conventional fully-relational database system, such as a disk-based Relational Database Management System (RDBMS). Theprimary database system 140 typically uses disk storage to store and access large amounts of data that in one example includes multiple different tables 144. Theprimary 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 aserver 100 that is remote fromprimary database system 140 and includes a storage manager that stores and manages different tables 127 that contain different database entries. Thesecondary 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 theserver 100. Thesecondary database system 122 is alternatively referred to as an application-tier database system or an in-memory database system. -
Applications clients wide area network 110. Thenetwork 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 inFIG. 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 thesame server 100 that operates thesecondary database system 122. In a direct driver connection, the direct driver directly loads thesecondary database 122 into the application's heap space or a shared memory segment. Theapplication 112A then uses the direct driver to access a memory image of thesecondary 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 tosecondary database 100 overnetwork 110.Applications 112B on theclient 102B issue calls to localclient driver libraries 114B that communicate with a server/child process 113 on theserver 100 containingsecondary database 122. The server/child process 113, in turn, issues native requests to the direct driver provided by the server libraries for accessing thesecondary database 122. If a client 102 andserver 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 oftransaction logs 124 and periodic refreshes of a disk-resident version of thesecondary database 122. Thetransaction logs 124 are written to disk asynchronously or synchronous with the completion oftransactions 118 and are controlled by the applications 112 at the transaction level. Thetransaction logs 124 can be used to recover atransaction 118 if the application 112 ordatabase 122 fails,undo transactions 118 that are rolled back, replicate changes to other databases, replicate changes in thesecondary database 122 to theprimary database 140, or enable applications 112 to detect changes to database entries. -
Checkpoint files 126 are used to keep a snap shot of thesecondary database 122. In the event of a system failure, thecheckpoint files 126 are used to restore thesecondary database 122 to a last transactionally consistent state. A checkpoint operation scans thesecondary 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, throughcache manager 150, can also cache frequently used subsets of database entries from theprimary database 140. The tables 127 managed exclusively by thesecondary database 122 and the tables 127 cached fromprimary database 140 may all coexist in the samesecondary 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 theprimary database 140 to thesecondary database 122 operating onserver 100. The table fragments are described through an extended SQL syntax and are cached into corresponding tables. For example, tables 128A, 130A, and 132A fromprimary database 140 are cached into corresponding tables 128B, 130B, and 132B in thesecondary database 122. The cached tables 128B, 130B, or 132B may comprise the entire corresponding tables 128A, 130A, or 132B fromprimary 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 theprimary database 140, enabling both reads and updates, and automatically manages data consistency between the cachedsecondary database 122 and theprimary database 140. The applications 112 read and update the cached tables 127 using standard SQL, and thecache manager 150 automatically propagates updates from theprimary database 140 to thesecondary 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 theprimary database 140, and the real-time performance of an application-tier in-memory database system. -
FIG. 2 shows the operations performed by thecache manager 150 in more detail. Thecache manager 150 dynamically varies what subset of tables 127 are cached from theprimary database system 140 into thesecondary database system 122 according to thetransactions 118 received from the applications 112 inFIG. 1 . - The
cache manager 150 first determines whattransactions 118 can be serviced by thesecondary database 122. For example, thecache manager 150 determines if the referenced tables 200A and referencedprimary keys 200B inSQL statement 200 reside insecondary database 122. If the referenced database entries reside in thesecondary database 122, thetransaction 118 is serviced by thesecondary database 122. - When the database entries referenced by the
transaction 118 do not reside in thesecondary database 122, thecache manager 150 may query theprimary database 140 for the missing database entries. For example,table identifier 119A and primarykey identifier 119B reference adatabase entry 204 in a table 130B having a primary key value PK=1. Since thedatabase entry 204 is not currently located in thesecondary database 122, thecache manager 150 queries theprimary database 140. The referenceddatabase entry 204 inprimary database 140 is then inserted into table 130B in thesecondary database 122. Thetransaction 118 may then be serviced by thesecondary database 122 using the uploadeddatabase entry 204. -
FIG. 3 explains some of the operations performed by thecache manager 150 in more detail. Referring both toFIGS. 2 and 3 , inoperation 250 thecache manager 150 receives or monitors thedatabase transactions 118 directed tosecondary database 122. Inoperation 252, thecache manager 150 may identify the database entries associated with the database transaction. For example, thecache manager 150 obtains the table identifiers and keys referenced by thetransaction 118. Thecache manager 150 inoperation 254 searches thesecondary database 122 for the referenced database entries. - If the
secondary database 122 contains the referenced database entries inoperation 254, the transaction is serviced by the secondary database inoperation 256. Otherwise, thecache manager 150 sends one or more queries to theprimary database 140 that reference the database entries that are not contained in thesecondary database 122. - In some embodiments, the
secondary database 122 may contain some, but not all, of the database entries referenced by thetransaction 118. In this situation, thecache manager 150 may send queries referencing only the missing database entries. In other embodiments, when only some of the database entries referenced by thetransaction 118 are currently located in thesecondary database 122, thecache manager 150 may query theprimary database 140 for all of the database entries referenced by thetransaction 118. - The database entries accessed in the
primary database 140 are then uploaded into thesecondary database 122 inoperation 260. For example, thecache manager 150 may generate additional SQL statements that cause the primary database entries to be inserted into thesecondary database 122. Any required commitment is performed on the uploadeddatabase entries 204 inoperation 262. Thetransaction 118 is then serviced by the secondary database inoperation 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. For example, acache 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 thesecondary database 122 and via versa and when database entries are aged out of thesecondary database 122. Thecache 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 thecache 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 withcache group 314. If the referenced database entry is not contained insecondary database 122, thecache manager 150 uploads all of the database entries associated with the cache instance from theprimary 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 thesecondary database 122. This prevents thecache manager 150 from having to determine if all of the foreign keys for a cache group exist in thesecondary database 122. - Referring to
FIGS. 4 and 5 , thecache manager 150 receives atransaction 306 inoperation 350. Thetransaction 306 selects all of the orders for a customer having an ID=100. Thistransaction 306 may be implemented using the followingSQL statement 307. -
- select * from orders with a customer_ID=100
- The
cache manager 150 inoperation 352 determines if thesecondary database 122 contains any database entries in the ORDERS table 304 with the customer_ID=100. If so, theSQL statement 307 is serviced by thesecondary database 122 inoperation 354 by returning the requested database entries. - When the
secondary database 122 does not contain orders with customer_ID=100, thecache manager 150 sends thefollowing query 308 to theprimary database 140 inoperation 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 thecache group 314. Thecache manager 150 identifies the cache group via the foreign keys assigned to orders in table 304. Accordingly, thecache manager 150 inoperation 358 sends the followingsecond query 310 that selects all of the rows from the CUSTOMER table in theprimary database 140 that have an ID=100. -
- select * from customer where ID=100
- The different database entries accessed in the primary database with
queries cache instance 320. It should be understood that the twodifferent queries more database entries 320A-320C from theprimary database 150 than what was actually referenced by thetransaction 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 theprimary database 140 inoperation 360 which cause therows 320A-320C associated withcache instance 320 to be inserted into the secondary database inoperation 360. Thetransaction 306 is then serviced by the secondary database inoperation 354. -
FIG. 6 shows how different aging parameters are used to automatically remove database entries from thesecondary database 122. Assigning different aging parameters to different database tables allows thesecondary database 122 to dynamically cache more relevant user content. For example, an airlines reservation system may use thesecondary 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 thesecondary database 122 andprimary 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. Thecache manager 150 can be programmed to selectively associate different tables insecondary database 122 with these different usage based and time based aging constraints. - 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 incolumn 400A the tables insecondary 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 thesecondary database 122. - High Usage Threshold (HUT) values 400B identify a percentage of used memory space in the
secondary database 122 that trigger thecache 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 thesecondary database 122. When theHUT value 400B is reached, thecache manager 150 removes least recently used database entries until the storage space insecondary database 122 reaches theLUT 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 orclock 404 is monitored bycache manager 150. Thecache manager 150 periodically checks the amount of used memory space in thesecondary database 122 after counter/clock 404 indicates the expiration of each agingcycle 400D. If the amount of used memory space reachesHUT 400B, thecache 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 theprimary database 140. - 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 aginglisting 402. Alifetime value 402B in listing 402 designates how long database entries in table D should reside in thesecondary database 122. Acycle time value 402C defines a time period for thecache manager 150 to periodically evaluate the database entries in table D. Ifdifferent cycle times 402C are defined for different tables, then thecache 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 thesecondary database 122. - Referring both to
FIGS. 6 and 7 , inoperation 450 the tables in thesecondary database 122 are configured with different usage based aging constraints and time based aging constraints as described above. Inoperation 452, thecache manager 150 identifies the different usage based aging tables and time based aging tables as defined inlistings operation 454, the different aging parameters in listing 400 are identified for the usage based tables. For example, thecache manager 150 inoperation 454 identifies thehigh usage thresholds 400B,low usage thresholds 400C and the agingcycles 400D for tables A and C. - In
operation 456 thecache manager 150 waits for one of the aging cycles to be reached for one of the tables A or C. For example, thecache manager 150 determines when the counter/clock 404 reaches the agingcycle 400D for one of the tables A or C. When an aging cycle is reached inoperation 456, thecache manager 150 determines the amount of memory space currently being used in thesecondary database 122. If the highusage threshold value 400A is reached for either table A or table C inoperation 458, the least recently used database entries for that table are removed inoperation 462. - For example, the high
usage threshold value 400B for table A may be set to 75% and the highusage threshold value 400B for table C may be set to 85%. If storage in thesecondary database 122 is 80% full when the counter/clock 404 reaches a next agingcycle time 400D, the least recently used database entry in table A is removed inoperation 462. The LU tag value LU=2 indicates thatdatabase entry 416 is the least recently used entry in table A and is accordingly removed from thesecondary database 122 inoperation 462. - In
operation 464, thecache manager 150 determines the amount of used storage space after thedatabase entry 416 is removed inoperation 462. If the percentage of used memory space does not drop below the lowusage threshold value 400C for table A inoperation 464, the next least recently used database entry is removed from table A inoperation 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 inoperation 464. A next aging cycle is started for table A inoperation 460 and thecache manager 150 waits for the expiration of the next agingcycle 400D inoperation 456 before conducting the next usage based purge inoperation 458. - If the aging
cycles 400D for tables A and C are different, then a same agingcycle 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 agingcycles 400D. - For example, at the next aging cycle for table C, memory utilization in
secondary database 122 may exceed the 85% highusage threshold value 400B assigned to table C. Accordingly, least recently used database entries are removed from table C inoperation 462 until the database storage reaches the lowusage threshold value 400C for table C. In this example, thecache manager 150 removes the least recently used database entries 418 (DB entries # 1, #3, and #4) from table C in order to reach the lowusage 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 thecache manager 150 to remove the least recently used database items for those tables less frequently. Thus, the usage based agingparameters 400 allow automatic customized removal of different types of selectable data from thesecondary database 122. -
FIG. 8 explains in more detail how thecache manager 150 conducts time based aging. Referring toFIGS. 6 and 8 , any tables having time based aging constraints are identified inoperation 480. In this example, table D is assigned alifetime value 402B and an associatedcycle time value 402C inlisting 402. Thecache manager 150 uses the counter/timer 404 inoperation 482 to determine when anext cycle time 402C is reached. Any rows in table D that havetimestamps 414 exceeding thelifetime value 402B are identified inoperation 484 and removed inoperation 486. - For example, the
lifetime value 402B for table D may be set to a particular counter value of say LIFETIME=20. When thecycle time 402C is reached inoperation 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 inoperation 484. In this example, thecounter 404 may have a current value of 28. The difference between the current value of counter 404 (28) and the timestamp value fordatabase entry 420 in table D (TS=7) is greater than thelifetime value 402B (LIFETIME=20). Accordingly, thedatabase entry 420 is removed from table D inoperation 486. Any other database entries in table D with expired lifetimes are also removed inoperation 486. - Similar to usage based aging, different tables can be assigned
different lifetime values 402B andcycle 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 thesecondary database 122 until replaced by updates from theprimary database 140. - Referring back to both
operation 462 inFIG. 7 andoperation 486 inFIG. 8 , database entries associated with the same cache group may be removed according to usage based or time based aging constraints. Referring also back toFIG. 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, theentire cache instance 320 may be removed inoperation 462 inFIG. 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 insecondary 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 inoperation 462 inFIG. 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 thesecondary 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 thesecondary 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 thesame cache instance 320 are removed by thecache 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.
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 (54)
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 |
US20110072217A1 (en) * | 2009-09-18 | 2011-03-24 | Chi Hoang | Distributed Consistent Grid of In-Memory Database Caches |
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 |
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 |
Families Citing this family (73)
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 |
US9477557B2 (en) * | 2013-03-28 | 2016-10-25 | Microsoft Technology Licensing, Llc | Transaction 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 |
US9176801B2 (en) | 2013-09-06 | 2015-11-03 | Sap Se | Advanced data models containing declarative and programmatic constraints |
US9354948B2 (en) | 2013-09-06 | 2016-05-31 | Sap Se | Data models containing host language embedded constraints |
US9639572B2 (en) | 2013-09-06 | 2017-05-02 | Sap Se | SQL enhancements simplifying database querying |
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 |
US9430523B2 (en) | 2013-09-06 | 2016-08-30 | Sap Se | Entity-relationship model extensions using annotations |
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 |
US9734221B2 (en) | 2013-09-12 | 2017-08-15 | Sap Se | In memory database warehouse |
US9734230B2 (en) * | 2013-09-12 | 2017-08-15 | Sap Se | Cross system analytics for in memory data 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 |
US9934266B2 (en) * | 2015-05-14 | 2018-04-03 | Walleye Software, LLC | Memory-efficient computer system for dynamic updating of join processing |
JP6563111B2 (en) * | 2015-07-10 | 2019-08-21 | アビニシオ テクノロジー エルエルシー | Method and architecture for providing database access control in a network using 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 |
US10198469B1 (en) | 2017-08-24 | 2019-02-05 | Deephaven Data Labs Llc | Computer data system data source refreshing using an update propagation graph having a merged join listener |
US11481362B2 (en) * | 2017-11-13 | 2022-10-25 | Cisco Technology, Inc. | Using persistent memory to enable restartability of bulk load transactions in cloud databases |
GB201801679D0 (en) | 2018-02-01 | 2018-03-21 | Microsoft Technology Licensing Llc | Database transaction log writing and integrity checking |
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 |
ES2862428T3 (en) | 2019-03-18 | 2021-10-07 | Advanced New Technologies Co Ltd | Consensus System Downtime Recovery |
US11347598B2 (en) | 2019-03-18 | 2022-05-31 | Advanced New Technologies Co., Ltd. | Consensus system downtime recovery |
US10938750B2 (en) * | 2019-03-18 | 2021-03-02 | Advanced New Technologies Co., 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)
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)
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 |
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 |
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 |
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 |
US5613113A (en) * | 1993-10-08 | 1997-03-18 | International Business Machines Corporation | Consistent recreation of events from activity logs |
US5553279A (en) * | 1993-10-08 | 1996-09-03 | International Business Machines Corporation | Lossless distribution of time series data in a relational data base network |
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 |
AU6678096A (en) * | 1995-07-20 | 1997-02-18 | 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 |
GB2321322B (en) * | 1996-10-28 | 2001-10-10 | Altera Corp | Remote software technical support |
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 |
-
2008
- 2008-02-12 US US12/030,094 patent/US8868504B2/en active Active
- 2008-02-12 US US12/030,113 patent/US20080222111A1/en not_active Abandoned
Patent Citations (6)
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)
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 |
US20110072217A1 (en) * | 2009-09-18 | 2011-03-24 | Chi Hoang | Distributed Consistent Grid of In-Memory Database Caches |
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 |
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 | |
US7774312B2 (en) | Self-managing performance statistics repository for databases | |
KR101315330B1 (en) | System and method to maintain coherence of cache contents in a multi-tier software system aimed at interfacing large databases | |
US9092475B2 (en) | Database log parallelization | |
US9720911B2 (en) | System and method for variable block logging with log-ahead buffers | |
US20180095829A1 (en) | Data replication in a database management system | |
JP5722962B2 (en) | Optimize storage performance | |
US8819074B2 (en) | Replacement policy for resource container | |
US7644063B2 (en) | Apparatus, system, and method for ensuring query execution plan stability in a database management system | |
US20140032614A1 (en) | Database partition management | |
US20210081358A1 (en) | Background dataset maintenance | |
US20160092507A1 (en) | Optimizing a query with extrema function using in-memory data summaries on the storage server | |
US20200175008A1 (en) | Query plan sharing | |
US20180081942A1 (en) | Managing Data Obsolescence in Relational Databases | |
US11789951B2 (en) | Storage of data structures | |
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 | |
US11704199B1 (en) | Data replication with cross replication group references | |
US12141032B2 (en) | Data replication with cross replication group references | |
US20230418711A1 (en) | Repairing unresolved dangling references after failover | |
US20230359622A1 (en) | Blocked index join | |
CN112069192B (en) | Multi-master with ownership transfer |
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 |