IP Library Granted Patent US 9,576,003
Granted Patent B2
US 9,576,003 · App. 14/578,389 · Granted Feb 21, 2017

Providing unique views of data based on changes or rules

Inventors: Robert J. McGrew (Los Altos, CA); Nathan Gettings (Palo Alto, CA); Stephen Cohen (Fremont, CA)
Assignee: Palantir Technologies, Inc.
G06F17/30309G06F17/3023G06F17/30356G06F17/30418G06F21/6218G06Q50/18G06Q50/26
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 9,576,003
App. No.
14/578,389
Granted
Feb 21, 2017
Kind
B2
Abstract

In one embodiment, a method comprises creating and storing, in a revisioning database, one or more data objects; wherein a first plurality of the data objects is associated with a base realm representing data shared across all users of the database; wherein a second plurality of the data objects is associated with one or more child realms, wherein each of the child realms represents data local to a project, wherein each of the users is associated with one or more of the child realms; wherein the revisioning database associates each data object to a realm identifier value and to a version identifier value for a plurality of versions of the data object, wherein each of the versions represents a change to the data object by any of a plurality of users; receiving a request from a first user to view a third plurality of data objects in the revisioning database; selecting, based on the base realm, the particular realm, the version identifier value for the data objects in the third plurality, and one or more rules associated with the particular realm and the first user, data objects in the third plurality that can be viewed by the first user; creating a particular data view that includes only the selected data objects; and providing a display of the particular data view to the first user.

Claims (49)

1. A computer-implemented method, comprising:

storing different versions of data objects in a database comprising a base set of data and a plurality of child sets of data;

wherein the plurality of child sets of data comprises a first child set of data and a second child set of data;

wherein the first child set of data stores a first plurality of data object versions that are inaccessible to the base set of data and the second child set of data;

wherein the base set of data stores a second plurality of data object versions that are accessible to the first child set of data and the second child set of data;

wherein the second child set of data stores a third plurality of data object versions that are inaccessible to the base set of data and the first child set of data;

receiving, from a first user that is currently within a first child set of data, a command to send a particular version of a particular data object from the first child set of data to the base set of data;

in response to the command, sending the particular version of the particular data object but not one or more other versions of the particular data object from the first child set of data to the base set of data; receiving, from a second user that is currently within the second child set of data, a request to access any version of the particular data object that has been sent to the base set of data;

in response to the request, and based at least in part on the sending of the particular version of the particular data object to the base set of data, allowing the second user to access the particular version of the particular data object that has been sent to the base set of data;

wherein the first child set of data is separate from the second child set of data;

wherein the first user is separate from the second user;

wherein the method is performed by one or more computing devices.

2. A method as recited in claim 1 , further comprising:

receiving definitions of one or more rules, wherein each rule restricts access for one or more users to one or more data objects regardless of which set of data contains the one or more data objects;

wherein allowing the second user to access the particular version of the particular data object is based on determining that the one or more rules do not restrict access for the second user to the particular data object as well as being based on the base set of data and a version identifier value for the one or more data objects.

3. A method as recited in claim 1 , further comprising:

detecting that a change has occurred in the particular data object;

wherein allowing the second user to access the particular version of the particular data object is based on determining whether the particular data object can be provided to the second user based on the base set of data and a version identifier value for the particular data object.

4. A method as recited in claim 1 , wherein allowing the second user to access the particular version of the particular data object comprises providing only a selected subset of rows of a revisioning database to the second user.

5. A method as recited in claim 1 , further comprising:

creating and storing an object table comprising rows that represent the first plurality of data object versions and the second plurality of data object versions and columns that represent, for each of the first plurality of data object versions and the second plurality of data object versions, an associated set of data, a version value, and a pointer to a previous version, wherein said associated set of data is different from said version value.

6. A method as recited in claim 5 , further comprising asynchronously receiving, from different users, a plurality of changes to the particular data object, and in response thereto, creating a new row in the object table for each of the changes.

7. A method as recited in claim 1 , wherein sending the particular version of the particular data object to the base set of data comprises sending the particular version of the particular data object to the base set of data without sending data directly between the first user and the second user.

8. A method as recited in claim 1 , further comprising:

creating and storing one or more data object versions in a revisioning database;

wherein the revisioning database associates each data object version of the one or more data versions to a version identifier value and to an identifier value for a set of data.

9. A computer-readable non-transitory storage medium having one or more program instructions recorded thereon, which instructions, when executed by one or more processors, cause the one or more processors to perform:

storing different versions of data objects in a database comprising a base set of data and a plurality of child sets of data;

wherein the plurality of child sets of data comprises a first child set of data and a second child set of data;

wherein the first child set of data stores a first plurality of data object versions that are inaccessible to the base set of data and the second child set of data;

wherein the base set of data stores a second plurality of data object versions that are accessible to the first child set of data and the second child set of data;

wherein the second child set of data stores a third plurality of data object versions that are inaccessible to the base set of data and the first child set of data;

receiving, from a first user that is currently within a first child set of data, a command to send a particular version of a particular data object from the first child set of data to the base set of data;

in response to the command, sending the particular version of the particular data object but not one or more other versions of the particular data object from the first child set of data to the base set of data; receiving, from a second user that is currently within the second child set of data, a request to access any version of the particular data object that has been sent to the base set of data;

in response to the request, and based at least in part on the sending of the particular version of the particular data object to the base set of data, allowing the second user to access the particular version of the particular data object that has been sent to the base set of data;

wherein the first child set of data is separate from the second child set of data;

wherein the first user is separate from the second user.

10. A computer-readable medium as recited in claim 9 , further comprising instructions which when executed cause:

receiving definitions of one or more rules, wherein each rule restricts access for one or more users to one or more data objects regardless of which set of data contains the one or more data objects;

wherein allowing the second user to access the particular version of the particular data object is based on determining that the one or more rules do not restrict access for the second user to the particular data object as well as being based on the base set of data and a version identifier value for the one or more data objects.

11. A computer-readable medium as recited in claim 9 , further comprising instructions which when executed cause:

detecting that a change has occurred in the particular data object;

wherein allowing the second user to access the particular version of the particular data object is based on determining whether the particular data object can be provided to the second user based on the base set of data and a version identifier value for the particular data object.

12. A computer-readable medium as recited in claim 9 , wherein the instructions when executed cause creating and storing an object table comprising rows that represent the first plurality of data object versions and the second plurality of data object versions and columns that represent, for each of the first plurality of data object versions and the second plurality of data object versions, an associated set of data, a version value, and a pointer to a previous version, wherein said associated set of data is different from said version value.

13. A computer-readable medium as recited in claim 12 , further comprising instructions which when executed cause asynchronously receiving, from different users, a plurality of changes to the particular data object, and in response thereto, creating a new row in the object table for each of the changes.

14. A computer-readable medium as recited in claim 9 , wherein sending the particular version of the particular data object to the base set of data comprises sending the particular version of the particular data object to the base set of data without sending data directly between the first user and the second user.

15. A computer-readable medium as recited in claim 9 , further comprising instructions which when executed cause:

creating and storing one or more data object versions in a revisioning database; wherein the revisioning database associates each data object version of the one or more data versions to a version identifier value and to an identifier value for a set of data.

16. A computer-readable medium as recited in claim 9 , wherein allowing the second user to access the particular version of the particular data object comprises providing only a selected subset of rows of a revisioning database to the second user.

Assignments (7)
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
Continuity (2)
Continuation 11709462 · Feb 21, 2007
Related Publication 20150106347A1 · Apr 16, 2015