Content addressable data storage and compression for semi-persistent computer memory for a database management system including providing a data structure that associates data identifiers and retrieval keys for memory blocks for storing in semi-persistent memory data from the database management system; searching for a segment of a chunk of data from the database management system that matches a memory block from semi-persistent memory; and if a matching segment is found: discarding the matching segment; storing in the data structure in the database management system a retrieval key for the matching segment in association with a data identifier; identifying an unmatched portion of the chunk that does not match the memory block; storing the unmatched portion semi-persistently in a free memory block from a file system; and storing in the data structure in the database management system a retrieval key for the unmatched portion in association with the data identifier.
Drawings
Claims18
A method of content addressable data storage and compression for semi-persistent computer memory for a database management system comprising:
providing in the database management system a data structure that associates data identifiers and retrieval keys for memory blocks for storing in semi-persistent memory data from the database management system;
storing in the data structure a data identifier;
providing a chunk of data comprising a quantity of input data from the database management system;
retrieving a memory block from semi-persistent computer memory;
searching at a repeating memory interval through a search section of the chunk for a segment of the chunk that matches a memory block from computer memory, including:
calculating a weak checksum for the memory block:
calculating rolling weak checksums for segments of the search section of the chunk;
comparing the rolling weak checksums for the segments with the checksum for the memory block;
and if a segment is found with a rolling weak checksum equal to the weak checksum of the memory block:
calculating a strong checksum for the memory block;
calculating a strong checksum for the segment with the matching rolling weak checksum;
comparing the strong checksum of the memory block and the strong checksum for the segment with the equal rolling weak checksum;
determining that the search has found a segment having contents that match the contents of the memory block if the strong checksum of the memory block and the strong checksum for the segment with the matching rolling weak checksum are equal;
if a matching segment is found:
discarding the matching segment;
providing to the database management system a retrieval key for the memory block as a retrieval key for the matching segment;
storing in the data structure in the database management system the retrieval key for the matching segment in association with the data identifier;
identifying an unmatched portion of the chunk that does not match the memory block;
identifying a free memory block of a file system;
storing the unmatched portion semi-persistently in the free memory block;
providing to the database management system a retrieval key for the unmatched portion;
and
storing in the data structure in the database management system the retrieval key for the unmatched portion in association with the data identifier.
20 more elements
A system of content addressable data storage and compression for semi-persistent computer memory for a database management system comprising:
means for providing in the database management system a data structure that associates data identifiers and retrieval keys for memory blocks for storing in semi-persistent memory data from the database management system;
means for storing in the data structure a data identifier;
means for providing a chunk of data comprising a quantity of input from the database management system;
means for retrieving a memory block from semi-persistent computer memory;
means for searching at a repeating memory interval through a search section of a chunk for a segment of the chunk that matches a memory block from computer memory, including means for:
calculating a weak checksum for the memory block;
calculating rolling weak checksums for segments of the search section of the chunk;
comparing the rolling weak checksums for the segments with the checksum for the memory block;
and if a segment is found with a rolling weak checksum equal to the weak checksum of the memory block:
calculating a strong checksum for the memory block;
calculating a strong checksum for the segment with the matching rolling weak checksum;
comparing the strong checksum of the memory block and the strong checksum for the segment with the equal rolling weak checksum;
means for determining that the search has found a segment having contents that match the contents of the memory block if the strong checksum of the memory block and the strong checksum for the segment with the matching rolling weak checksum are equal;
means for discarding a matching segment;
means for providing to the database management system a retrieval key for the memory block as a retrieval key for the matching segment;
means for storing in the data structure in the database management system the retrieval key for the matching segment in association with the data identifier;
means for identifying an unmatched portion of the chunk that does not match the memory block;
means for identifying a free memory block of a file system;
means for storing the unmatched portion semi-persistently in the free memory block;
means for providing to the database management system a retrieval key for the unmatched portion;
and
means for storing in the data structure in the database management system the retrieval key for the unmatched portion in association with the data identifier.
19 more elements
A computer program product of content addressable data storage and compression for semi-persistent computer memory for a database management computer program product comprising:
a recording medium;
means, recorded on the recording medium, for providing in the database management computer program product a data structure that associates data identifiers and retrieval keys for memory blocks for storing in semi-persistent memory data from the database management computer program product;
means, recorded on the recording medium, for storing in the data structure a data identifier;
means, recorded on the recording medium, for providing a chunk of data comprising a quantity of input data from the database management computer program product;
means, recorded on the recording medium, for retrieving a memory block from semi-persistent computer memory;
means, recorded on the recording medium, for searching at a repeating memory interval through a search section of a chunk for a segment of the chunk that matches a memory block from computer memory, including means, recorded on the recording medium, for:
calculating a weak checksum for the memory block;
calculating rolling weak checksums for segments of the search section of the chunk;
comparing the rolling weak checksums for the segments with the checksum for the memory block;
and if a segment is found with a rolling weak checksum equal to the weak checksum of the memory block:
calculating a strong checksum for the memory block;
calculating a strong checksum for the segment with the matching rolling weak checksum;
comparing the strong checksum of the memory block and the strong checksum for the segment with the equal rolling weak checksum;
means, recorded on the recording medium, for determing that the search has found a segment having contents that match the contents of the memory block if the strong checksum of the memory block and the strong checksum for the segment with the matching rolling weak checksum are equal;
means, recorded on the recording medium, for discarding a matching segment;
means, recorded on the recording medium, for providing to the database management computer program product a retrieval key for the memory block as a retrieval key for the matching segment;
means, recorded on the recording medium, for storing in the data structure in the database management computer program product the retrieval key for the matching segment in association with the data identifier;
means, recorded on the recording medium, for identifying an unmatched portion of the chunk that does not match the memory block;
means, recorded on the recording medium, for identifying a free memory block of a file computer program product;
means, recorded on the recording medium, for storing the unmatched portion semi-persistently in the free memory block;
means, recorded on the recording medium, for providing to the database management computer program product a retrieval key for the unmatched portion;
and
means, recorded on the recording medium, for storing in the data structure in the database management computer program product the retrieval key for the unmatched portion in association with the data identifier.
2 Feb 2025Estimated · howhide20 years from earliest known nonprovisional domestic filing plus recorded patent term adjustment, including 427 days of adjustment. Maintenance-fee lapses, terminal disclaimers and statutory extensions have not been checked. The continuity chain may be incomplete; this is not an enforceability determination.
#The field of the invention is data processing, or, more specifically, methods, systems, and products for content addressable data storage and compression for semi-persistent computer memory for a database management system.
#FIG. 1 sets forth a block diagram of an exemplary architecture in which may be implemented content addressable data storage and compression for semi-persistent computer memory according to embodiments of the present invention.
#FIG. 2 sets forth a block diagram of a further exemplary architecture in which may be implemented content addressable data storage and compression for semi-persistent computer memory according to embodiments of the present invention.
#FIG. 3 sets forth a flow chart illustrating an exemplary method of content addressable data storage and compression for semi-persistent computer memory.
Detailed description6,015 words
#The present invention is described to a large extent in this specification in terms of methods for content addressable data storage and compression for semi-persistent computer memory for a database management system. Persons skilled in the art, however, will recognize that any computer system that includes suitable programming means for operating in accordance with the disclosed methods also falls well within the scope of the present invention. Suitable programming means include any means for directing a computer system to execute the steps of the method of the invention, including for example, systems comprised of processing units and arithmetic-logic circuits coupled to computer memory, which systems have the capability of storing in computer memory, which computer memory includes electronic circuits configured to store data and program instructions, programmed steps of the method of the invention for execution by a processing unit.
#The invention also may be embodied in a computer program product, such as a diskette or other recording medium, for use with any suitable data processing system. Embodiments of a computer program product may be implemented by use of any recording medium for machine-readable information, including magnetic media, optical media, or other suitable media. Persons skilled in the art will immediately recognize that any computer system having suitable programming means will be capable of executing the steps of the method of the invention as embodied in a program product. Persons skilled in the art will recognize immediately that, although most of the exemplary embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware or as hardware are well within the scope of the present invention.
#Methods, systems, and products for content addressable data storage and compression for semi-persistent computer memory for a database management system are explained with reference to the accompanying drawings, beginning with FIG. 1. FIG. 1 sets forth a block diagram of an exemplary architecture in which may be implemented content addressable data storage and compression for semi-persistent computer memory for a database management system according to embodiments of the present invention. The architecture of FIG. 1 includes a database management system (150) and a memory management system (152). Database management system (150) is an aggregation of computer hardware or software that writes to or reads from computer memory, traditional file system memory as well as semi-persistent memory, and provides database management services to application programs (149). Database management system (149) provides database management services to application program (148) through application programming interface (149). An example of an API through which a database management system may provide database management services to application programs is an interface for the Structured Query Language (“SQL”) supporting database management services such as creating tables, writing data into records in tables, reading data out of records in tables, selecting groups of records with queries, deleting records from tables, deleting tables, sorting data in tables, and establishing indices for records in tables, maintaining indices, conducting selection queries with indices, and so on. Memory management system (152) is a combination of computer hardware and software that implements methods for content addressable data storage and compression for semi-persistent computer memory for a database management system according to embodiments of the present invention. Memory management system (152) operates to write (130) data to semi-persistent computer memory (324) and to read (132) data from semi-persistent computer memory. In writing (130) data to semi-persistent computer memory, memory management system (152) receives data (136) typically through an input stream and returns to its writing memory client (150) retrieval keys (134) that the client can later use to read the written data back from memory. In reading (132) data from semi-persistent computer memory, memory management system (152) receives from a reading memory client (150) a stream of retrieval keys (140) and returns to the client data (138) previously written to memory.