Assembly Code Modification for Persistent In-Memory Database Storage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current systems face inefficiencies in fine-grained data management due to a mismatch between in-memory data structures and block-optimized storage, requiring the transfer of entire memory pages for backup, which is resource-intensive and time-consuming.

Innovation Solution

Modifying assembly language code to detect and persist fine-grained updates at the application host computing device, allowing for byte-level persistent storage without transferring entire memory pages, using functions like start tx, add_write_set, and commit tx to manage data updates efficiently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If entire memory pages are transferred to disk for backup, then data persistence is ensured, but storage bandwidth and time are significantly consumed

Engineering Contradiction:
Improvedata persistenceVSAvoidbackup time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments data persistence into two phases: in-memory transaction logging during operation and selective disk flushing only when needed. Instead of continuously transferring entire pages, the system segments updates into transaction blocks that are flushed atomically, reducing backup time while ensuring persistence.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary actions by logging all data updates in memory during normal operation before any failure occurs. Transaction blocks are prepared and buffered in memory, then flushed to disk in batches when appropriate, eliminating the need for time-consuming page-by-page transfers during critical moments.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If entire memory pages are transferred to disk for backup, then data persistence is ensured, but storage bandwidth is significantly consumed

Engineering Contradiction:
Improvedata persistenceVSAvoidstorage bandwidth
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent extracts only the essential update information from entire memory pages and transfers just those changes to disk. By separating the logging function from the storage function, the system extracts minimal data (transaction blocks with change information) rather than transferring complete pages, dramatically reducing storage bandwidth requirements.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

Instead of copying entire memory pages to disk, the system creates lightweight copies of only the changed data in transaction blocks. These minimal copies contain only the necessary update information, allowing persistence with minimal bandwidth consumption compared to full page copies.

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If in-memory fine-grained data structures are mapped to block-I/O-friendly structures, then disk storage compatibility is improved, but data management complexity increases

Engineering Contradiction:
Improvestorage compatibilityVSAvoiddata management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary transaction logging layer between in-memory data structures and disk storage. This intermediary captures fine-grained updates in their original data structure format, then translates them into disk-friendly transaction blocks, eliminating the need for direct mapping complexity while maintaining both adaptability and simplicity.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Stability of the object's composition

If transactions are processed synchronously with disk I/O, then data consistency is ensured, but application performance is reduced

Engineering Contradiction:
Improvedata consistencyVSAvoidapplication performance
Core Design Contradiction:
Stability of the object's compositionVSProductivity

Solution Approach 1:

The system dynamically adjusts the synchronization strategy based on transaction characteristics and disk availability. Transactions can be processed synchronously for critical data or asynchronously for less critical operations, allowing the system to optimize between consistency and performance dynamically rather than using a fixed approach.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent maintains continuity of useful action by buffering transactions in memory and flushing them to disk in batches rather than waiting for each individual transaction to complete synchronously. This allows the application to continue processing without blocking on slow disk I/O operations.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS9934008B2Methods for facilitating persistent storage of in-memory databases and devices thereof
Publication Date: 2018.04.03 NETAPP INC
  • US9934008B2 patent drawing
  • US9934008B2 patent drawing
  • US9934008B2 patent drawing

AI summary

A method, non-transitory computer readable medium, and application host computing device that parses assembly language code to identify a transaction block including an assignment to a memory location, the assembly language code associated with an application and output by a compiler. The assembly language code is modified to insert an invocation of a plurality of functions collectively configured to facilitate persistent storage of one or more data updates associated with the assignment at run-time. The assembly language code is assembled to generate object code and the object code is linked with at least a run-time library including a definition for each of the plurality of inserted functions to generate an executable file for the application.