Optimized record placement in defragmenting graph database

US11880302B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11880302-B2
Application numberUS-202117480258-A
CountryUS
Kind codeB2
Filing dateSep 21, 2021
Priority dateJun 29, 2017
Publication dateJan 23, 2024
Grant dateJan 23, 2024

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Methods and systems are disclosed for optimizing record placement in defragmenting a graph database. Issues with fragmented data within a graph database are addressed on the record level by placing data that is frequently accessed together contiguously within memory. For example, a dynamic rule set may be developed based on dynamically analyzing access patterns of the graph database, policies, system characteristics and/or other heuristics. Based on statistics regarding normal query patterns, the systems and methods may identify an optimal position for certain types of edges that are often traversed with respect to particular types of nodes.

First claim

Opening claim text (preview).

What is claimed is: 1. A system comprising: a processor; and memory coupled to the processor, the memory comprising computer executable instructions that, when executed by the processor, performs a method comprising: receiving a write request to write data to a graph database, the write request including an entity and a property; accessing a dynamic ruleset associated with the write request, wherein the dynamic ruleset optimizes record placement in the graph database and is based on a statistical access pattern associated with at least one of a node or an edge in the graph database, the node or the edge relating to the entity or the property; based on the dynamic ruleset, determining a number of records for storing the entity and the property in the graph database; determining a first memory location for at least one of the entity or the property; and allocating, for the number of records, a contiguous block of records for the first memory location such that the first memory location is located proximate to a second memory location for the node or the edge. 2. The system of claim 1 , wherein receiving the write request comprises: parsing the write request to extract the data; and identifying the entity based on the extracted data. 3. The system of claim 2 , wherein the extracted data is used to create, in the graph database, at least one of an additional node or an additional edge in the graph database. 4. The system of claim 2 , wherein identifying the entity based on the extracted data includes determining a memory location of the entity. 5. The system of claim 1 , wherein the statistical access pattern characterizes traversal of one or more edges from a first node to a second node within the graph database for one or more queries. 6. The system of claim 5 , wherein characterizing the traversal of the one or more edges includes identifying one or more edge types or one or more node types associated with the one or more edges. 7. The system of claim 5 , wherein characterizing the traversal of the one or more edges includes logging a number of node types traversed during the traversal of the one or more edges. 8. The system of claim 1 , wherein at least one rule in the dynamic ruleset defines at least one of: arranging records and a corresponding property contiguously; or placing property data frequently used in a context of the entity in close proximity to the entity. 9. The system of claim 1 , wherein determining the number of records for storing the entity and the property includes identifying memory requirements for types of nodes that represent the entity. 10. The system of claim 1 , wherein the method further comprises: after allocating the contiguous block of records, writing at least one of the entity or the property to the contiguous block of records. 11. The system of claim 1 , wherein allocating the contiguous block of records for the first memory location corresponds to allocating the contiguous block of records for the first memory location adjacent to the second memory location. 12. A method comprising: receiving a write request to write data to a graph database, the write request including an entity and a property; accessing a dynamic ruleset associated with the write request, wherein the dynamic ruleset optimizes record placement in the graph database and is based on a statistical access pattern associated with at least one of a node or an edge in the graph database, the node or the edge relating to the entity or the property; based on the dynamic ruleset, determining a number of records for storing the entity and the property in the graph database; determining a first memory location for at least one of the entity or the property; and allocating, for the number of records, a contiguous block of records for the first memory location such that the first memory location is located proximate to a second memory location for the node or the edge. 13. The method of claim 12 , further comprising: identifying the entity is marked as dirty in the graph database; and in response to identifying the entity is marked as dirty, initiating a defragmentation process. 14. The method of claim 13 , wherein identifying the entity is marked as dirty comprises identifying a dirty flag marking the entity, the dirty flag indicating that one or more rules of the dynamic ruleset have been violated. 15. The method of claim 13 , wherein identifying the entity is marked as dirty comprises adding the entity to a defragmentation queue, the defragmentation process being initiated when a number of entities in the defragmentation queue exceeds a threshold value. 16. The method of claim 13 , wherein identifying the entity is marked as dirty comprises: identifying, in the graph database, two or more records associated with the entity; and marking the two or more records as dirty. 17. The method of claim 12 , further comprising: receiving a read request associated with the entity; and in response to the read request, traversing at least one of a node or an edge associated with the entity in the graph database. 18. The method of claim 17 , wherein traversing the at least one of the node or the edge identifies one or more memory records violating one or more record placement rules. 19. The method of claim 12 , further comprising: determining to execute a defragmentation process based on at least one of: detecting data deletion in one or more records associated with the graph database; detecting expiration of a periodic time period for defragmentation; or detecting an addition of one or more records associated with the graph database. 20. A device comprising: a processor; and memory coupled to the processor, the memory comprising computer executable instructions that, when executed by the processor, performs a method comprising: receiving a write request to write data to a graph database, the write request including an entity and a property; accessing a dynamic ruleset associated with the write request, wherein the dynamic ruleset optimizes record placement in the graph database and is based on a statistical access pattern associated with at least one of a node or an edge in the graph database, the node or the edge relating to the entity or the property; based on the dynamic ruleset, determining a number of records for storing the entity and the property in the graph database; determining a first memory location for at least one of the entity or the property; and allocating, for the number of records, a contiguous block of records for the first memory location such that the first memory location is located proximate to a second memory location for the node or the edge.

Assignees

Inventors

Classifications

  • with centralised address assignment · CPC title

  • Entity relationship models · CPC title

  • Graphs; Linked lists (G06F16/9027 takes precedence) · CPC title

  • G06F40/205Primary

    Parsing · CPC title

  • of query operations · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US11880302B2 cover?
Methods and systems are disclosed for optimizing record placement in defragmenting a graph database. Issues with fragmented data within a graph database are addressed on the record level by placing data that is frequently accessed together contiguously within memory. For example, a dynamic rule set may be developed based on dynamically analyzing access patterns of the graph database, policies, …
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F12/0653. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jan 23 2024 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).