Pre-optimized writes to the database based on intelligence gathered from the read cache
The Intelligence Cache Graph Builder optimizes database write operations by evaluating cache data to preemptively discard invalid requests, enhancing database performance and query efficiency by reducing unnecessary accesses and maintaining synchronized caches across replicas.
Patent Information
- Application Number
- JP2024510453
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-08-31
- Filing Date
- 2022-08-22
- Publication Date
- 2026-01-20
- Estimated Expiration
- 2042-08-22
AI Technical Summary
Large data volumes pose challenges to efficient storage and access requirements in database technology, with caching strategies impacting system design and performance, particularly in handling frequent read operations.
The implementation of an Intelligence Cache Graph Builder (ICGB) that uses existing database caching to optimize write operations by evaluating requested database write operations based on data from relevant caches, preemptively discarding invalid requests without accessing the database, and maintaining synchronized read, write, and discard caches across replicas.
This approach enhances database performance by reducing unnecessary database accesses, optimizing write operations, and maintaining cache synchronization across replicas, thereby improving query efficiency and reducing system load.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to pre-optimization of a database based on data in a cache. [Background technology]
[0002] Large data volumes pose challenges to efficient storage and access requirements in database technology. Caching strategies impact system design and resulting performance. Data caching can improve query performance by storing data locally instead of accessing it directly from the data source. Database caches traditionally complement the primary database by reducing unnecessary pressure on the primary database in the form of frequently accessed read data when a requester wants to retrieve data from the database. Summary of the Invention
[0003] According to one aspect, a computer-implemented method implemented by an information handling system including a processor and memory accessible by the processor includes receiving a request to write an entry to a database, and determining whether some of the entries are missing or whether one or more database caches are empty. check To do and that check a computer-implemented method including determining whether to write an entry to a database based on the determined value; returning an error in response to determining that the entry cannot be written to the database, wherein the error is returned without accessing the database; and writing the entry to the database in response to determining that the entry can be written to the database.
[0004] According to another aspect, an information processing system includes one or more processors, a memory coupled to at least one of the processors, and a set of computer program instructions stored in the memory and executed by at least one of the processors to perform actions, the actions including receiving a request to write an entry to a database, and detecting whether some of the entries are missing or whether one or more database caches are full. check To do and that check and returning an error in response to determining that the entry cannot be written to the database, the error being returned without accessing the database; and writing the entry to the database in response to determining that the entry can be written to the database.
[0005] According to another aspect, a computer program product includes a computer readable storage medium including computer program code that, when executed by an information processing system, performs actions, the actions including receiving a request to write entries to a database and updating one or more database caches for missing or missing entries. check To do and that check and returning an error in response to determining that the entry cannot be written to the database, wherein the error is returned without accessing the database.
[0006] A method is provided for receiving a request to write an entry to a database. The database cache is then checked to see if any parts of that entry exist, such as the part containing the primary key. check It will be. checkBased on this, the technique determines whether to write the entry to the database. In response to a determination that the entry cannot be written to the database, an error is returned, and the error is returned by accessing only the cache without accessing the database. Meanwhile, in response to a determination that the entry can be written to the database, the entry is written to the database.
[0007] The foregoing is a summary and thus contains, by definition, simplifications, generalizations, and omissions of detail. As such, those skilled in the art will appreciate that this summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages will become apparent in the non-limiting detailed description set forth below.
[0008] Preferred embodiments of the present invention will now be described, by way of example only, with reference to the following drawings: [Brief explanation of the drawings]
[0009] [Figure 1] 1 is a block diagram illustrating a data processing system capable of implementing the methods described herein, in accordance with a preferred embodiment of the present invention; [Figure 2] FIG. 2 illustrates an extension of the information handling system environment shown in FIG. 1 according to a preferred embodiment of the present invention, illustrating that the methods described herein may be performed on a variety of information handling systems operating in a networked environment. [Figure 3] FIG. 10 illustrates how a preferred embodiment of the present invention analyzes writes to a database and rejects some errors without accessing the actual database. [Figure 4] FIG. 1 illustrates how an intelligence cache graph builder is constructed based on various database caches in accordance with a preferred embodiment of the present invention. [Figure 5]FIG. 1 illustrates pre-optimized writes to a database based on intelligence gleaned from a cache operating on a replicated database, according to a preferred embodiment of the present invention. [Figure 6] 1 is a flowchart illustrating the steps taken to process database requests using intelligence gleaned from one or more database caches, in accordance with a preferred embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION
[0010] Figures 1 through 6 show a technique for pre-optimizing database write operations based on data available in one or more caches. Whenever a read operation is performed, traditional database implementation strategies populate a cache, commonly referred to as a "read" cache. This technique uses data from this cache to optimize write operations. This technique builds an Intelligence Cache Graph Builder (ICBG) component that uses existing database caching to determine and automatically evaluate requested database write operations (incoming insert / update requests). The evaluation is based on data found in the relevant caches. If the write operation is found to be invalid, the request can be discarded without actually accessing the database.
[0011] The method in this technique deals with repeated or inappropriate data inserts / updates and preemptively discards invalid requests instead of processing them. For example, before an insert statement, the method checks whether the primary key (primary identifier) already exists. check If it already exists, this technique returns an error without actually hitting the database and attempting to perform such an insert on the actual database.
[0012] In one embodiment, the Intelligence Cache Builder Component (ICGB) is essentially an add-on to existing L1, L2, and L3 cache technologies that organizes all existing cache hits into a readable, understandable graph of tenant-level objects. This data is further subdivided into in-memory blocks of information that are self-constructed based on access counts and used for further analysis of incoming write operations. In this way, this technique uses intelligence gathered during lower-authorization level operations, such as read operations, to optimize higher-authorization (or more privileged) operations, such as write operations.
[0013] In a traditional database management system (DBMS), users accessing an application require DB traversals, which involve accessing multiple DB tables. These accesses, which are typically "read" in nature, are used to build an extensive ICGB-based graph infrastructure, and this information is used to further process write statements. The ICGB is not only built during read accesses, but is also enriched using write operations. When an end user requests a database write, the success or failure of that write (insert / update) is also captured in the ICGB, and this information is used for future write operations (insert / update).
[0014] The following example illustrates a possible use case in which the techniques described herein may be advantageously employed in a DBMS. In this example, (1) an existing user requests to log in to an application. The login request is made by check(2) If the password is valid, the user is allowed access to the site. (3) The read cache is updated (created) with a new graph entry indicating that the user table has a user identifier of UID1000. (4) A new user registration request comes in, in which the user tries to create a new user identifier of UID1000. The existing user table graph is used (from the read cache), and an error is thrown saying that a user with identifier UID1000 already exists in the database table. This error occurs without ever hitting the actual database, not even using a SQL "select" statement. Similarly, non-SQL databases also use read caching and use this technique (for example, checking for existing Java(R)(TM) Scripting Notation (JSON) entries, etc.) to preemptively optimize write operations (for example, updates or inserts). check (Java(R) and all Java(R)-based trademarks and logos are trademarks or registered trademarks of Oracle or its affiliates.)
[0015] In the process of discarding write operations such as inserts, this technique implicitly avoids cache inserts that would have resulted in further database accesses. In one embodiment, there is a distributed read cache between the various copies of a replicated database. This may be implemented as an integral part of the DB or as an external service.
[0016] When an external entity attempts to read data from the database and the operation is successful, metadata about that data (e.g., primary keys, indexes, etc.) is stored in a cache, allowing the system to check the data for duplicates. In a distributed database environment, the various read caches of different replicas can be synchronized. This way, even if one replica has not yet read anything, it has knowledge of all successful lookups that have occurred at other replicas.
[0017] This technique also handles delete operations. A successful delete removes the read, write and tombstone cache entries for the deleted entry, and in a distributed environment allows various replicas to synchronize their caches. When an external entity attempts to delete or remove an entry from the database, and the operation is successful, the read, tombstone and write caches are updated to remove the entries corresponding to the deleted entry.
[0018] This approach is based on the following novel ideas: A write operation identifies the possibility that data can be discarded at an early stage. A write operation flushes all caches that have been updated by heterogeneous operations, such as read caches. check If the read cache has an entry similar to the one the user is trying to create, the system will not attempt to write this entry to the database; instead, the approach will deny the operation at this early stage without ever accessing the database. In a distributed database environment, all read cache replicas are kept synchronized, so even relatively new replicas will quickly gain intelligence from other replicas.
[0019] If the read cache is a hit-miss, the system searches the discard cache. The discard cache is updated with all writes that have been "discarded" or "rejected" by the system during the recent period. If the system finds a match in the discard cache, it preempts instead of searching the larger and more cumbersome "write cache" and instead of searching the actual database for the data. If both the read cache and discard cache are hit-miss, the technique searches the write cache, which contains all write entries, and if this also misses, the system accesses the actual database. In one embodiment, the technique also includes a "custom cache" that the system administrator can manually or programmatically update to implement an intelligent rejection process.
[0020] The following detailed description generally follows the above summary, further explaining and expanding upon the definitions of various aspects and embodiments as needed. To that end, the detailed description first describes a computing environment in Figure 1 suitable for implementing software and / or hardware techniques related to the present disclosure in accordance with preferred embodiments. Figure 2 illustrates a networked environment in accordance with preferred embodiments of the present invention as an extension of the basic computing environment to emphasize the ability to implement modern computing techniques across multiple individual devices.
[0021] FIG. 1 illustrates information handling system 100, a simplified example of a computing system capable of performing the computing operations described herein. Information handling system 100 includes one or more processors 110 coupled to a processor interface bus 112. Processor interface bus 112 connects processor 110 to a northbridge 115, also known as a memory controller hub (MCH). Northbridge 115 connects to system memory 120 and provides a means for the processor to access the system memory. A graphics controller 125 also connects to northbridge 115. In one embodiment, a PCI Express bus 118 connects northbridge 115 to graphics controller 125. Graphics controller 125 connects to a display device 130, such as a computer monitor.
[0022] The Northbridge 115 and Southbridge 135 connect to each other using a bus 119. In one embodiment, the bus is a Direct Media Interface (DMI) bus, which transfers data between the Northbridge 115 and the Southbridge 135 at high speeds in each direction. In another embodiment, a Peripheral Component Interconnect (PCI) bus connects the Northbridge and the Southbridge. The Southbridge 135, also known as an I / O Controller Hub (ICH), is a chip that generally implements functions that run at slower speeds than those provided by the Northbridge. The Southbridge 135 typically provides various buses used to connect various components. These buses include, for example, PCI and PCI Express buses, ISA buses, System Management Buses (SMBus or SMB), and / or Low Pin Count (LPC) buses. The LPC bus often connects low-bandwidth devices, such as Boot ROM 196 and "legacy" I / O devices (which use "super I / O" chips). "Legacy" I / O devices (198) may include, for example, serial and parallel ports, a keyboard, a mouse, or a floppy disk controller, or a combination thereof. The LPC bus also connects the southbridge 135 to a trusted platform module (TPM) 195. Other components often included in the southbridge 135 include a direct memory access (DMA) controller, a programmable interrupt controller (PIC), and a storage device controller that uses bus 184 to connect the southbridge 135 to a non-volatile storage device 185, such as a hard disk drive.
[0023] The ExpressCard 155 is a slot that connects hot-pluggable devices to the information handling system. The ExpressCard 155 connects to the Southbridge 135 using both a Universal Serial Bus (USB) and a PCI Express bus, thereby supporting both PCI Express and USB connections. The Southbridge 135 includes a USB controller 140 that provides USB connectivity for devices that connect to the USB. These devices include a webcam (camera) 150, an infrared (IR) receiver 148, a keyboard and trackpad 144, and a Bluetooth device 146 that enables wireless personal area networks (PANs). The USB controller 140 also provides USB connectivity to various other USB-connected devices 142, such as a mouse, a removable non-volatile storage device 145, a modem, a network card, an ISDN connector, a fax machine, a printer, a USB hub, and many other types of USB-connected devices. While the removable non-volatile storage device 145 is shown as a USB-connected device, the removable non-volatile storage device 145 may be connected using a different interface, such as a Firewire interface.
[0024] A wireless local area network (LAN) device 175 connects to the Southbridge 135 via a PCI or PCI Express bus 172. The LAN device 175 typically implements one of the IEEE 802.11 standards for wireless modulation technology, all of which use the same protocol for wireless communication between the information handling system 100 and another computer system or device. An accelerometer 180 connects to the Southbridge 135 and measures the device's acceleration or movement. An optical storage device 190 connects to the Southbridge 135 using a Serial ATA (SATA) bus 188. Serial ATA adapters and devices communicate over a high-speed serial link. The Serial ATA bus also connects the Southbridge 135 to other forms of storage devices, such as hard disk drives. An audio circuit 160, such as a sound card, connects to the Southbridge 135 via bus 158. Audio circuitry 160 also provides features such as audio line-in and optical digital audio input port 162, optical digital output and headphone jack 164, built-in speaker 166, and built-in microphone 168. Ethernet® controller 170 connects to southbridge 135 using a bus such as a PCI bus or PCI Express bus. Ethernet® controller 170 connects information handling system 100 to computer networks such as local area networks (LANs), the Internet, and other public and private computer networks.
[0025] 1 illustrates an information handling system, an information handling system may be a device that can take many forms. For example, an information handling system may take the form of a desktop device, a server device, a handheld device, a laptop device, a notebook device, or other form factor device. Additionally, an information handling system may take other form factors, such as a personal digital assistant (PDA), a gaming device, an ATM machine, a mobile phone device, a communications device, or other device that includes a processor and memory.
[0026] The Trusted Platform Module (TPM 195) shown in FIG. 1 and described herein for providing security functions is merely one example of a Hardware Security Module (HSM). Accordingly, the TPM described and claimed herein includes any type of HSM, including, but not limited to, hardware security devices that conform to the Trusted Computing Group (TCG) standard entitled "Trusted Platform Module (TPM) Specification Version 1.2." A TPM is a hardware security subsystem that can be incorporated into any number of information processing systems, such as those shown generally in FIG. 2.
[0027] FIG. 2 illustrates an expansion of the information handling system environment shown in FIG. 1 according to a preferred embodiment of the present invention to illustrate that the methods described herein can be implemented on various types of devices operating in a networked environment. The types of information handling systems range from small handheld devices, such as handheld computer / cell phone 210, to large mainframe systems, such as mainframe computer 270. Examples of handheld computers 210 include personal digital assistants (PDAs), personal entertainment devices such as MP3 players, portable televisions, and compact disc players. Other examples of information handling systems include pen or tablet devices 220, laptop or notebook devices 230, workstation devices 240, personal computer system devices 250, and server devices 260. Other types of information handling system devices not individually shown in FIG. 2 are represented by information handling system device 280. As shown, various information handling system devices can be networked together using computer network 200. Types of computer networks that can be used to interconnect various information processing systems include local area networks (LANs), wireless local area networks (WLANs), the Internet, public switched telephone networks (PSTNs), other wireless networks, and any other network topology that can be used to interconnect information processing systems. Many information processing systems include non-volatile data stores, such as hard drives and / or non-volatile memory. Some of the information processing systems shown in FIG. 2 show separate non-volatile data stores (server 260 uses non-volatile data store 265, mainframe computer 270 uses non-volatile data store 275, and information processing system 280 uses non-volatile data store 285). The non-volatile data stores can be components external to the various information processing systems or can be internal to one of the information processing systems.Additionally, the removable non-volatile storage device 145 can be shared by two or more information handling systems using various techniques, such as connecting the removable non-volatile storage device 145 to a USB port or other connector on the information handling system.
[0028] Figure 3 illustrates how writes to a database are analyzed and some errors are rejected without accessing the actual database, according to a preferred embodiment of the present invention. For simplicity, only database read and write operations are illustrated. A database requester 300 issues a request to retrieve / update data from database 360. Database read requests are processed by a database read operation 320, which retrieves data from database 360 if the information is not more readily available from one or more database caches 340. Database read operation 320 searches cache 340 for the requested database entry. check If the entry is found in the cache, it is returned to the requester 300 without having to actually access the database 360. If the requested entry is not found in the cache 340, the database read operation retrieves the requested data from the database 360 and updates the cache 340 with the retrieved entry data. Updating the cache provides for faster access from the cache rather than the database if a subsequent request for the same entry is received.
[0029] A database write request (update or insert) is handled by database write operation 380. The database write operation also queries cache 340 to determine if the entry already exists in the database. checkIf the entry already exists, the update operation is allowed to proceed, but the insert operation will return an error. In this case, the insert operation error is returned to the requester 300 without ever having to actually access the database 360. Similarly, if the entry does not exist in the database (e.g., because it was previously deleted), the insert operation is allowed to proceed, but the update operation will cause an error to be returned to the requester 300, as there is no entry in the database to update. Again, this error is returned to the requester without ever having to actually access the database 360.
[0030] Figure 4 illustrates how an Intelligent Cache Graph Builder (ICGB) is constructed based on data in various database caches in accordance with a preferred embodiment of the present invention. The ICGB essentially builds a graph by combining multiple caches. check Checks the ICGB cache for write operations (inserts and updates) without the need to check At 400, the process receives a user request. At 410, the user request is formulated as an application server request. The application access is translated into a typical database access request (e.g., a database read). At 420, the Intelligent Cache Graph Builder (ICGB) runs and the process checks the ICGB data store 430 for data related to the request. check The ICGB data includes caching data from accesses to the database 360, and the caching data may be cached across multiple caches. check individually without checkThe data is intelligently combined as ICGB data 430, which can be used to create a T1 cache entry. An example ICGB flow is shown in box 440. In step 450, the process receives a select query that is sent to an ICGB processor 460. In decision 470, the ICGB process determines the type of ICGB tenant for updating the cache 340. If the tenant is a T1 cache entry, decision 470 branches to the "T1" branch and updates the T1 cache 480. On the other hand, if the tenant is a T2 cache entry, decision 470 branches to the "T2" branch and updates the T2 cache 490.
[0031] 5 illustrates pre-optimized writes to a database based on intelligence gleaned from caches operating on replicated databases, in accordance with a preferred embodiment of the present invention. A database requester 500 issues a database request (read, write, delete, etc.) that is processed, and the caches 340 (read cache 510, discard cache 520, write cache 530, etc.) corresponding to database 360 are updated accordingly.
[0032] In a replicated database environment, changes made to cache 340 are synchronized with caches 540 (e.g., read cache 550, discard cache 560, write cache 570) that correspond to replicated copies of database 580. In this way, when a second requester makes a database request, such as an "insert" request, to replicated database 580, replicated cache 540 check These replicated caches are synchronized with cache 340 so that the processes can take advantage of database operations made to database 360.
[0033] In the "insert" example above, if the entry has already been written to database 360, the insert activity will be reflected in both cache 340 and synchronized cache 540. Thus, if a second requester makes an insert request for the same entry to replicated database 580, it will be able to access replicated cache 540 without ever accessing replicated database 580. check will return an error, even though the insert operation was originally performed in database 360 and not in replicated database 580.
[0034] Figure 6 is a flowchart illustrating steps taken to process database requests using intelligence gathered from one or more database caches, in accordance with a preferred embodiment of the present invention. The process of Figure 6 begins at 600 and illustrates steps taken by a process for performing optimized database operations, including reading, writing, and deleting data from a database. At step 604, the process receives a request from an entity, such as an application, a user, or a database process. The process determines what type of operation is being requested (decision 608). The type of operation can be a "read" operation (processing branches to the "read" branch), a "write" operation (processing branches to the "write" branch), or a "delete" operation (processing branches to the "delete" branch).
[0035] If the operation is a "read" operation, decision 608 branches to the "read" branch and performs steps 612 through 628. In step 612, the process checks whether there is an entry for the database "read" cache. checkThe process determines whether an entry was found in the "read" cache (decision 616). If an entry was found, decision 616 branches to the "yes" branch, and in step 620 the process retrieves the requested entry from the read cache. However, if the entry was not found in the database read cache, decision 616 branches to the "no" branch, and steps 624 and 628 are performed. In step 624, the process retrieves the requested entry from the database, and in step 628 the process updates the database read cache with the entry data so that the next time the entry is requested, the data will be available in the read cache.
[0036] If the operation is a "delete" operation, decision 608 branches to the "delete" branch, which performs steps 632 through 640. In step 632, the process deletes the entry from the actual database. In step 636, the process deletes the entry data, if any, from the database cache (e.g., database read cache, database write cache, etc.). In one embodiment, in step 640, the process updates a special delete cache used to track entries that have been deleted from the database. In this embodiment, the delete cache is updated to reflect that the entry has been deleted from the database.
[0037] If the operation is a "write" operation, decision 608 branches to the "write" branch and performs steps 644 through 695. The process determines what type of operation is being requested (decision 644). If the write request is an "insert" type write operation, decision 644 branches to the "insert" branch and performs steps 648 through 668. Conversely, if the write request is an "update" type write operation, decision 644 branches to the "update" branch and performs steps 672 through 695.
[0038] Steps 648 through 668 are performed for an insert-type write operation. In step 648, the process checks whether the entry key already exists in the database or cache (e.g., database read cache). check Based on the cache, the process determines whether the entry already exists in the database, thereby disallowing insertion of the same entry into the database because there would be two entries with the same primary key, which would violate database integrity rules (decision 652). If the entry already exists in the database, decision 652 branches to the "yes" branch and performs steps 656 and 660. On the other hand, if the entry does not already exist in the database, decision 652 branches to the "no" branch and performs steps 664 and 668.
[0039] Steps 656 and 660 are performed if an entry already exists in the database based on the information found in the cache. In step 656, the process returns an error to the requester, and the error is returned without accessing the actual database at all, only the cache. In step 660, the process updates a "discard" cache. The discard cache is used to record errors that occur when writing to the database. This cache is likely to be smaller than the read cache, so it is searched before the read cache to determine if an error has previously occurred for that entry. check It is possible.
[0040] Steps 664 and 668 are performed if the entry does not already exist in the database. In step 664, the process inserts the entry into the actual database, and in step 668, the process updates one or more caches (e.g., read caches) with the entry data.
[0041] Steps 672 through 695 are performed for an update write operation. In step 672, the process checks the cache to see if any part of the entry (e.g., the primary key) has been previously deleted. check The process determines whether the entry no longer exists in the database, thereby disabling the update (decision 676). If the entry no longer exists in the database, decision 676 branches to the "yes" branch and performs steps 680 and 684. On the other hand, if the entry does exist in the database, decision 676 branches to the "no" branch and performs steps 688 and 695.
[0042] Steps 680 and 684 are performed if the entry no longer exists in the database, thereby making it impossible to update the entry. In step 680, the process returns an error to the requester without actually accessing the database at all. In step 684, the process updates the "token" cache to reflect the error that occurred during the write operation.
[0043] Steps 688 and 695 are performed if the entry exists in the database, thereby allowing the entry to be updated. In step 688, the process updates the entry in the actual database. In step 695, the process updates one or more caches (e.g., database read caches, etc.) with the entry data.
[0044] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. Also, it should be understood that the terms "comprises" and / or "comprising," when used herein, specify the presence of stated features, integers, steps, operations, elements, or components, or any combination thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups or combinations thereof.
[0045] Corresponding structure, materials, acts, and equivalents of all means or step-plus-function elements in the following claims are intended to include any structure, material, or acts for performing the functions in combination with other claimed elements as specifically claimed. The detailed description has been provided for purposes of illustration, but is not intended to be exhaustive or to limit the invention to the form disclosed. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the invention. The embodiments have been chosen and described to best explain the principles and practical applications of the invention and to enable those skilled in the art to understand the invention in various embodiments with various modifications as suited to the particular uses contemplated.
[0046] As will be appreciated by one skilled in the art, aspects may be embodied as a system, method, or computer program product. Accordingly, aspects may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which may be collectively referred to herein as a "circuit," "module," or "system." Aspects of the present disclosure may also take the form of a computer program product embodied in one or more computer-readable medium(s) having computer-readable program code embodied therein.
[0047] Any combination of one or more computer-readable storage media may be used. A computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination thereof. More specific examples (non-exhaustive list) of computer-readable storage media would include an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination thereof. In the context of this specification, a computer-readable storage medium may be any tangible medium that contains or is capable of storing a program for use by or in connection with an instruction execution system, apparatus, or device. As used herein, a computer-readable storage medium does not include a transitory signal.
[0048] Computer program code for carrying out operations of aspects of the present disclosure can be written in any combination of one or more programming languages, including object-oriented programming languages such as Java®, Smalltalk, C++, etc., and conventional procedural programming languages such as the "C" programming language or similar programming languages. The program code may run entirely on the user's computer as a standalone software package, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider).
[0049] Aspects of the present disclosure are described below with reference to flowchart illustrations and / or block diagrams that illustrate methods, apparatus (systems), and computer program products. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be supplied to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing device to cause the machine to implement the functions / acts specified in the flowchart illustrations and / or block diagrams, such that the instructions, executed by the processor of the computer or other programmable data processing device, form means for implementing the functions / acts specified in the blocks of the flowchart illustrations and / or block diagrams.
[0050] These computer program instructions may be stored on a computer-readable medium that can direct a computer, other programmable data processing apparatus, or other device to function in a particular manner, such that the instructions stored on the computer-readable medium result in an article of manufacture that includes instructions that implement aspects of the functions / operations specified in the flowchart and / or block diagram blocks.
[0051] The computer program instructions may be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to realize a computer-implemented process, such that the instructions, which execute on the computer, other programmable apparatus, or other device, provide a process that implements the functions / operations specified in the flowchart and / or block diagram blocks.
[0052] While particular embodiments have been shown and described, it will be apparent to those skilled in the art that, based on the teachings herein, changes and modifications can be made without departing from the present disclosure and its broader aspects. Accordingly, the appended claims are intended to encompass within their scope all such changes and modifications as are within the true spirit and scope of the present disclosure. It is also to be understood that the present invention is defined solely by the appended claims. Where a particular number of introductory claim elements is intended, such intention will be expressly recited in the claim; those skilled in the art will recognize that, in the absence of such recitation, no such limitation exists. As a non-limiting example, and as an aid to understanding, the appended claims include the use of the introductory phrases "at least one" and "one or more" to introduce claim elements. However, the use of such phrases should not be interpreted as implying that the introduction of a claim element by the indefinite article "a" or "an" limits a particular claim that includes such an introductory claim element to other claims that include only one such element, even if the same claim includes the introductory phrase "one or more" or "at least one" and an indefinite article such as "a" or "an." The same applies to the use of definite articles in the claims.
Claims
1. 1. A computer-implemented method implemented by an information handling system including a processor and a memory accessible by the processor, the computer-implemented method comprising: receiving a write request to write an entry to a database; checking whether some of the entries are present or absent in one or more database caches; determining whether to write the entry to the database based on the check; returning an error in response to determining that the entry cannot be written to the database, the error being returned without accessing the database; and writing the entry to the database in response to determining that the entry can be written to the database; and Including, Returning said error, writing an entry associated with the request to a database discard cache. Computer-implemented methods.
2. the write request is an insert request, and the computer-implemented method comprises: checking whether the portion of the entries is present or absent in a database read cache included in the one or more database caches; returning the error in response to determining that the portion of the entry is present in the database read cache; writing the entry to the database in response to determining that the portion of the entry is not present in the database read cache; The computer-implemented method of claim 1 , further comprising:
3. the write request is an update request, and the computer-implemented method comprises: checking whether the portion of the entries is present or absent in a database discard cache included in the one or more database caches; returning the error in response to determining that the portion of the entries are not present in the database discard cache; writing the entry to the database in response to determining that the portion of the entry is present in the database discard cache; The computer-implemented method of claim 1 , further comprising:
4. 2. The computer-implemented method of claim 1, further comprising: before receiving the request, combining the read cache, the discard cache, and the write cache into an intelligent cache graph builder (ICGB) that includes caching data from each of the read cache, the discard cache, and the write cache, and wherein the database cache is checked with the ICGB.
5. 2. The computer-implemented method of claim 1, further comprising: in a replicated database environment, synchronizing the one or more database caches corresponding to the database with one or more secondary database caches, each secondary database cache corresponding to a replica of the database.
6. The computer-implemented method of claim 1, wherein the database cache is a database read cache, a database write cache, or a database discard cache.
7. The computer-implemented method of claim 1 , wherein the portion of the entry includes a primary key.
8. one or more processors; a memory coupled to at least one of the processors; a set of computer program instructions stored in said memory and executed by at least one of said processors to perform actions, The action is receiving a request to write an entry to a database; checking one or more database caches for some of the entries; determining whether to write the entry to the database based on the check; returning an error in response to determining that the entry cannot be written to the database, the error being returned without accessing the database; and writing the entry to the database in response to determining that the entry can be written to the database; and Including, Returning said error, writing an entry associated with the request to a database discard cache. Information processing system.
9. the write request is an insert request, and the action is checking whether the portion of the entries is present or absent in a database read cache included in the one or more database caches; returning the error in response to determining that the portion of the entry is present in the database read cache; writing the entry to the database in response to determining that the portion of the entry is not present in the database read cache; The information processing system of claim 8 further comprising:
10. the write request is an update request, and the action is checking whether the portion of the entries is present or absent in a database discard cache included in the one or more database caches; returning the error in response to determining that the portion of the entries are not present in the database discard cache; writing the entry to the database in response to determining that the portion of the entry is present in the database discard cache; The information processing system of claim 8 further comprising:
11. The action is 9. The information processing system of claim 8, further comprising: before receiving the request, combining the read cache, the discard cache, and the write cache into an intelligent cache graph builder (ICGB) including caching data from each of the read cache, the discard cache, and the write cache; and wherein the database cache is checked with the ICGB.
12. The action is 9. The information handling system of claim 8, further comprising, in a replicated database environment, synchronizing the one or more database caches corresponding to the database with one or more secondary database caches, each corresponding to a replica of the database.
13. The information processing system of claim 8, wherein the database cache is a database read cache, a database write cache, or a database discard cache.
14. 9. The information handling system of claim 8, wherein the portion of the entry includes a primary key.
15. A computer program product for causing a computer to carry out the method according to any one of claims 1 to 7.
16. A computer-readable storage medium having a computer program recorded thereon, the computer program causing a computer to execute the method according to any one of claims 1 to 7.