IP Library Granted Patent US 10,740,301
Granted Patent B2
US 10,740,301 · App. 15/868,928 · Granted Aug 11, 2020

Associating application-specific methods with tables used for data storage

Inventors: Jeffrey A. Dean (Palo Alto, CA); Sanjay Ghemawat (Mountain View, CA); Andrew B. Fikes (Los Altos, CA); Yasushi Saito (Mountain View, CA)
Assignee: Google LLC
G06F16/182G06F9/5083G06F16/13G06F16/184G06F16/22H04L67/1002H04L67/1004H04L67/1029
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,740,301
App. No.
15/868,928
Granted
Aug 11, 2020
Kind
B2
Abstract

A method of accessing data includes storing a table that includes a plurality of tablets corresponding to distinct non-overlapping table portions. Respective pluralities of tablet access objects and application objects are stored in a plurality of servers. A distinct application object and distinct tablet are associated with each tablet access object. Each application object corresponds to a distinct instantiation of an application associated with the table. The tablet access objects and associated application objects are redistributed among the servers in accordance with a first load-balancing criterion. A first request directed to a respective tablet is received from a client. In response, the tablet access object associated with the respective tablet is used to perform a data access operation on the respective tablet, and the application object associated with the respective tablet is used to perform an additional computational operation to produce a result to be returned to the client.

Claims (55)

1. A method of accessing data, comprising:

at a server system comprising a set of interconnected computers storing a table data structure comprising a plurality of tablets that correspond to distinct table portions:

receiving a client request directed to stored data at the server system; and

in response to the client request:

identifying a data tablet containing the stored data, wherein the data tablet is stored at a first server of the server system;

identifying a second server of the server system storing an access object and an application object associated with the access object, the application object corresponding to a distinct instantiation of an application associated with the table data structure, the access object controlling access to the data tablet, the access object and application object are associated with and distinct from the data tablet, wherein the second server is distinct from the first server;

directing the client request to the second server;

using the access object to enable data access at the second server to perform a data access operation on the data tablet stored at the first server; and

returning a result of the data access operation to the client.

2. The method of claim 1 , further comprising, after performing the data access operation and before returning the result, performing a computational operation to produce the result.

3. The method of claim 2 , wherein the data access operation is a search operation and the computational operation is selected from the group consisting of filtering search results, aggregating search results, and verifying permission.

4. The method of claim 2 , wherein performing the computational operation comprises using the access object at the second server to perform the computational operation.

5. The method of claim 2 , wherein performing the computational operation comprises using the application object to perform the computational operation.

6. The method of claim 1 , wherein the stored data comprises data contained in a plurality of data tablets, the plurality of data tablets including the data tablet and one or more additional data tablets; and

the method further comprises, in response to the client request:

identifying the one or more additional data tablets;

identifying one or more third servers storing the one or more additional data tablets;

identifying one or more fourth servers storing one or more additional access objects for the one or more additional data tablets;

directing the client request to the one or more fourth servers;

using the one or more additional access objects to perform second data access operations on the one or more additional data tablets; and

returning a result of the second data access operations.

7. The method of claim 1 , wherein each tablet of the plurality of tablets corresponds to a distinct range of rows in the table data structure.

8. The method of claim 1 , wherein directing the client request to the second server comprises issuing a remote procedure call to the second server.

9. The method of claim 1 , further comprising:

determining that a load on the second server exceeds one or more load-balancing criterion; and

in accordance with the determination that the load exceeds the one or more load-balancing criterion:

unloading the access object from the second server; and

loading the access object onto a third server of the server system, distinct from the first server and second server.

10. The method of claim 1 , further comprising:

dividing a particular data tablet of the plurality of tablets into first and second new tablets corresponding to distinct non-overlapping portions of the particular tablet; and

associating a first access object with the first new tablet and a second access object with the second new tablet.

11. The method of claim 10 , wherein the dividing and associating are performed in response to a determination that the particular tablet has a size exceeding a first size criterion.

12. The method of claim 10 , wherein the dividing and associating are performed in response to a determination that a load on the particular tablet exceeds a first load criterion.

13. The method of claim 10 , wherein the dividing and associating are performed in response to a user command.

14. The method of claim 1 , wherein the client request is received at a third server of the server system, the third server distinct from the first server and the second server.

15. A server system, comprising:

in a set of interconnected computers:

memory storing a table data structure comprising a plurality of tablets that correspond to distinct table portions;

a plurality of processors; and

one or more programs stored in the memory and configured for execution by the plurality of processors, wherein execution of the one or more programs by the plurality of processors causes the set of interconnected computers to perform operations, including:

receiving a client request directed to stored data at the server system; and

in response to the client request:

identifying a data tablet containing the stored data, wherein the data tablet is stored at a first server of the server system;

identifying a second server of the server system storing an access object and an application object associated with the access object, the application object corresponding to a distinct instantiation of an application associated with the table data structure, the access object controlling access to the data tablet, the access object and application object are associated with and distinct from the data tablet, wherein the second server is distinct from the first server;

directing the client request to the second server;

using the access object to enable data access at the second server to perform a data access operation on the data tablet stored at the first server; and

returning a result of the data access operation to the client.

16. A non-transitory computer-readable storage medium storing one or more programs for use in accessing data, the one or more programs configured to be executed by a server system comprising a set of interconnected computers, wherein execution of the one or more programs by the server system causes the server system to perform operations comprising:

receiving a client request directed to stored data at the server system; and

in response to the client request:

identifying a data tablet of a plurality of data tablets, the data tablet containing the stored data, wherein the plurality of data tablets corresponds to distinct table portions of a table data structure stored at the server system, and the data tablet is stored at a first server of the server system;

identifying a second server of the server system storing an access objects and an application object associated with the access object, the access object controlling access to the data tablet, the access object and application object are associated with and distinct from the data tablet, wherein the second server is distinct from the first server;

directing the client request to the second server;

using the access object to enable data access at the second server to perform a data access operation on the data tablet stored at the first server; and

returning a result of the data access operation to the client.

Assignments (2)
CHANGE OF NAME Recorded Nov 12, 2019
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 050990/0333 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 11, 2019
From: DEAN, JEFFREY A.; GHEMAWAT, SANJAY; FIKES, ANDREW B.; SAITO, YASUSHI
To: GOOGLE INC.
Reel/Frame 050973/0219 →
Continuity (3)
Continuation 13938126 · Jul 9, 2013
Continuation 12247984 · Oct 8, 2008
Related Publication 20180173722A1 · Jun 21, 2018