Cache efficiency by social graph data ordering

US10025867B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10025867-B2
Application numberUS-201514869656-A
CountryUS
Kind codeB2
Filing dateSep 29, 2015
Priority dateSep 29, 2015
Publication dateJul 17, 2018
Grant dateJul 17, 2018

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.

Embodiments are disclosed for improving cache or memory efficiency of a social network system. A method according to some embodiments includes steps of: receiving an instruction to improve cache or memory efficiency of social graph data of a social graph; generating based on the social graph a partitioning tree including multiple bottom-level buckets, the partitioning tree dividing the vertices of the social graph into the bottom-level buckets and ordering the bottom-level buckets such that a social network metric regarding the vertices is optimized; assigning user IDs to the vertices of the social network in a numerical sequence based on the ordering of the bottom-level buckets; storing the social graph data of the users in storage locations in an order according to the numeral sequence of the assigned user IDs of the vertices.

First claim

Opening claim text (preview).

We claim: 1. A method for improving storage efficiency of a social network system, comprising: receiving an instruction to improve cache or memory efficiency of social graph data of a social graph, wherein the social graph includes multiple vertices representing social network users and some of the social network users are friends in a social network; generating, based on the social graph, a partitioning tree including multiple bottom-level buckets, the partitioning tree dividing the vertices of the social graph into the bottom-level buckets and ordering the bottom-level buckets such that a social network metric corresponding to the vertices is optimized; assigning user identities (IDs) to the vertices of the social network in a numerical sequence based on the ordering of the bottom-level buckets; storing the social graph data of the users in storage locations in a storage device in an order according to the numeral sequence of the assigned user IDs of the vertices; and responding to a social graph data request for a list of requested users by retrieving social graph data of the requested users together from storage locations that are close to each other in the storage device, wherein the requested users are related users who have been assigned the user IDs that are close to each other. 2. The method of claim 1 , wherein the partitioning tree divides the vertices of the social graph into the bottom-level buckets and orders the bottom-level buckets such that a log cost of the vertices of the social graph is minimized, the log cost being the social network metric. 3. The method of claim 2 , wherein at least some of vertices representing friend users are in the same bucket among the bottom-level buckets corresponding to the minimized log cost of the vertices of the social graph. 4. The method of claim 1 , wherein the partitioning tree divides the vertices of the social graph into the bottom-level buckets and orders the bottom-level buckets such that a log gap cost of the vertices of the social graph is minimized, the log gap cost being the social network metric. 5. The method of claim 4 , wherein vertices representing friends of a particular user tend to stay in the same bucket among the bottom-level buckets corresponding to the minimized log gap cost of the vertices of the social graph. 6. The method of claim 1 , wherein the social graph data of the vertices are stored in blocks of storage devices, and wherein the size of the bottom-level blocks of the partitioning tree is substantially equal to or less than a block size of the blocks of the storage devices. 7. The method of claim 6 , wherein said retrieving social graph data comprises: retrieving social graph data of the requested users together from storage locations that are close to each other, wherein the social graph data of at least two of the requested users are stored in a common block of one of the storage devices. 8. The method of claim 1 , wherein said assigning user IDs to the vertices of the social network comprises: assigning alternative user IDs to the vertices of the social network in a numerical sequence based on the ordering of the bottom-level buckets; wherein the alternative user IDs are different from original user IDs that are assigned to the social network users when accounts of the social network users are created, the original user IDs having no relevance or correlation with relationships between vertices of the social graph. 9. The method of claim 1 , wherein said generating based on the social graph a partitioning tree comprises: recursively dividing the social graph into buckets of vertices such that the social network metric regarding the vertices is optimized, the buckets being nodes of the partitioning tree; determining that bottom-level buckets of the partitioning tree reach a desired level of granularity; and stopping further divisions of the social graph. 10. The method of claim 9 , wherein the partitioning tree is a binary partitioning tree, and the nodes of the binary partitioning tree have two branches respectively. 11. The method of claim 1 , further comprising: swapping two buckets that are child nodes of a common parent node of the partitioning tree such that the social network metric regarding the vertices is further optimized. 12. The method of claim 1 , wherein the social network metric regarding the vertices is calculated by sampling a number of representative vertices from the buckets of the social graph. 13. The method of claim 1 , further comprising: identifying a sub-optimal vertex that falls into a first bucket based on a sub-optimal decision; and moving the sub-optimal vertex into a second bucket so that the social network metric regarding the vertices is further optimized; wherein the first and second buckets belong to a section led by a common ancestor node within a predetermined number of levels. 14. The method of claim 1 , further comprising: receiving an instruction to add a new vertex representing a new user to the social graph; adding the new vertex to a last bucket of the bottom-level buckets of the partitioning tree; re-generating a new partitioning tree using the bottom-level buckets including the new vertex as initialization; and assigning new user IDs to the vertices of the social network in a numerical sequence based on the ordering of the bottom-level buckets of the new partitioning tree. 15. A non-transitory machine-readable storage medium comprising a program containing a set of instructions for causing a machine to execute procedures for improving data compression efficiency of a social network system, the procedures comprising: receiving an instruction to improve data compression efficiency of social graph data of a social graph, the social graph including multiple vertices representing social network users, some of the social network users are friends in a social network; generating based on the social graph a partitioning tree including multiple bottom-level buckets, the partitioning tree dividing the vertices of the social graph into the bottom-level buckets and ordering the bottom-level buckets such that a social network metric regarding the vertices is optimized; assigning user IDs to the vertices of the social network in a numerical sequence based on the ordering of the bottom-level buckets; and storing the social graph data of the users in storage locations in an order according to the numeral sequence of the assigned user IDs of the vertices, wherein the social graph data of the users are stored in a form of differences between the social graph data of respective users and the social graph data of neighboring users. 16. The non-transitory machine-readable storage medium of claim 15 , wherein a respective user and a neighboring user are friends in the social network, and the storage space taken by the respective user is less because the difference between the social graph data of the respective user and the social graph data of the neighboring user is small. 17. The non-transitory machine-readable storage medium of claim 15 , further comprising: responding to a social graph data request for a list of requested users by retrieving social graph data of the requested users together from storage locations that are close to each other, wherein the requested users are related users who have been assigned the user IDs that are close to each other. 18. The non-transitory machine-readable storage medium of claim 15 , wherein the partitioning tree divides the vertices of the social graph into the bottom-level buckets

Assignees

Inventors

Classifications

  • using information identifiers, e.g. uniform resource locators [URL] · CPC title

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

  • using ranking · CPC title

  • Search customisation based on user profiles and personalisation · CPC title

  • G06F16/278Primary

    Data partitioning, e.g. horizontal or vertical partitioning · 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 US10025867B2 cover?
Embodiments are disclosed for improving cache or memory efficiency of a social network system. A method according to some embodiments includes steps of: receiving an instruction to improve cache or memory efficiency of social graph data of a social graph; generating based on the social graph a partitioning tree including multiple bottom-level buckets, the partitioning tree dividing the vertices…
Who is the assignee on this patent?
Facebook Inc
What technology area does this patent fall under?
Primary CPC classification G06F16/9535. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 17 2018 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 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).