Buffered message queue architecture for database management systems with unlimited buffered message queue with limited shared memory
First Claim
1. A method for managing messages in a database system, the method comprising the computer-implemented steps of:
- determining whether an amount of available space in a message queue that is disposed in a volatile memory of the database system is less than a specified amount;
if the amount of available space in the message queue is less than the specified amount, thenmoving a message from the message queue in the volatile memory to a persistent message queue disposed on a non-volatile storage in the database system, andgenerating and storing in the message queue, message header data that identifies that the message is stored in the persistent message queue.
1 Assignment
0 Petitions
Accused Products
Abstract
A buffered message queue architecture for managing messages in a database management system is disclosed. A “buffered message queue” refers to a message queue implemented in a volatile memory, such as a RAM. The volatile memory may be a shared volatile memory that is accessible by a plurality of processes. The buffered message queue architecture supports a publish and subscribe communication mechanism, where the message producers and message consumers may be decoupled from and independent of each other. The buffered message queue architecture provides all the functionality of a persistent publish-subscriber messaging system, without ever having to store the messages in persistent storage. The buffered message queue architecture provides better performance and scalability since no persistent operations are needed and no UNDO/REDO logs need to be maintained. Messages published to the buffered message queue are delivered to all eligible subscribers at least once, even in the event of failures, as long as the application is “repeatable.” The buffered message queue architecture also includes management mechanisms for performing buffered message queue cleanup and also for providing unlimited size buffered message queues when limited amounts of shared memory are available. The architecture also includes “zero copy” buffered message queues and provides for transaction-based enqueue of messages.
-
Citations
21 Claims
-
1. A method for managing messages in a database system, the method comprising the computer-implemented steps of:
-
determining whether an amount of available space in a message queue that is disposed in a volatile memory of the database system is less than a specified amount; if the amount of available space in the message queue is less than the specified amount, then moving a message from the message queue in the volatile memory to a persistent message queue disposed on a non-volatile storage in the database system, and generating and storing in the message queue, message header data that identifies that the message is stored in the persistent message queue. - View Dependent Claims (2, 3, 4, 7)
-
-
5. A method for managing messages in a database system, the method comprising the computer-implemented steps of:
-
receiving a request to store a first message in a message queue in a volatile memory of the database system; in response to receiving the request to store the first message in the message queue, determining whether the message queue has a sufficient amount of available space to store the first message; if the message queue does not have a sufficient amount of available space to store the first message, then storing the first message in a persistent message queue disposed on a nonvolatile storage in the database system, and generating and storing in the message queue first message header data that identifies that the first message is stored in the persistent message queue. - View Dependent Claims (6)
-
-
8. A computer-readable storage medium for managing messages in a database system, the computer-readable medium carrying one or more sequences of instructions which, when executed by one or more processors, cause the one or more processors to perform the steps of:
-
determining whether an amount of available space in a message queue that is disposed in a volatile memory of the database system is less than a specified amount; if the amount of available space in the message queue is less than the specified amount, then moving a message from the message queue in the volatile memory to a persistent message queue disposed on a non-volatile storage in the database system, and generating and storing in the message queue, message header data that identifies that the message is stored in the persistent message queue. - View Dependent Claims (9, 10, 11, 14)
-
-
12. A computer-readable storage medium for managing messages in a database system, the computer-readable medium carrying one or more sequences of instructions which, when executed by one or more processors, cause the one or more processors to perform the steps of:
-
receiving a request to store a first message in a message queue in a volatile memory of the database system; in response to receiving the request to store the first message in the message queue, determining whether the message queue has a sufficient amount of available space to store the first message; if the message queue does not have a sufficient amount of available space to store the first message, then storing the first message in a persistent message queue disposed on a nonvolatile storage in the database system, and generating and storing in the message queue first message header data that identifies that the first message is stored in the persistent message queue. - View Dependent Claims (13)
-
-
15. An apparatus for managing messages in a database system, the apparatus comprising a memory carrying one or more sequences of instructions which, when executed by one or more processors, cause the one or more processors to perform the steps of:
-
determining whether an amount of available space in a message queue that is disposed in a volatile memory of the database system is less than a specified amount; if the amount of available space in the message queue is less than the specified amount, then moving a message from the message queue in the volatile memory to a persistent message queue disposed on a non-volatile storage in the database system, and generating and storing in the message queue, message header data that identifies that the message is stored in the persistent message queue. - View Dependent Claims (16, 17, 18, 21)
-
-
19. An apparatus for managing messages in a database system, the apparatus comprising a memory carrying one or more sequences of instructions which, when executed by one or more processors, cause the one or more processors to perform the steps of:
-
receiving a request to store a first message in a message queue in a volatile memory of the database system; in response to receiving the request to store the first message in the message queue, determining whether the message queue has a sufficient amount of available space to store the first message; if the message queue does not have a sufficient amount of available space to store the first message, then storing the first message in a persistent message queue disposed on a nonvolatile storage in the database system, and generating and storing in the message queue first message header data that identifies that the first message is stored in the persistent message queue. - View Dependent Claims (20)
-
Specification