A system for a metadata driven catalog definition includes an interface and a processor. The interface is configured to receive an indication to generate a catalog. The processor is configured to traverse a set of data to generate a set of metadata tags, determine a set of sub-categories, wherein a sub-category of the set of subcategories comprises a group of metadata tags associated with the sub-category, and determine a set of categories. A category of the set of categories comprises a group of sub-categories associated with the category. The processor is also configured to provide the catalog comprising a set of filters for filtering data according to the set of categories and the set of sub-categories.
|
22. A method for a metadata driven catalog definition, comprising:
receiving an indication to generate a catalog comprising a set of filters;
generating the catalog comprising the set of filters, wherein generating the catalog comprises:
traversing, using a processor, a set of data associated with a tenant to generate a set of metadata tags, wherein the set of data associated with the tenant is stored in a tenant data storage unit, wherein a metadata tag indicates a category or sub-category to which data associated with the metadata tag belongs;
determining a set of sub-categories based on the set of metadata tags, wherein a sub-category of the set of subcategories comprises a group of metadata tags associated with the sub-category; and
determining a set of categories based on the set of metadata tags, wherein a category of the set of categories comprises a group of sub-categories associated with the category;
providing to a system associated with the tenant the catalog comprising the set of filters for filtering data according to the set of categories and the set of sub-categories;
receiving from the system associated with the tenant one or more indications associated with the set of categories and the set of sub-categories, wherein the one or more indications indicate whether data associated with a category of the set of categories or data associated with a sub-categories of the set of sub-categories is to be included in a transfer of data associated with the tenant from the tenant data storage unit to a commingled storage unit;
providing, from the tenant data storage unit to the commingled storage unit, the data associated with the tenant that is indicated to be included in the transfer, wherein the data associated with the tenant stored in the tenant data storage unit is stored separately from data associated with one or more other tenants, wherein the data associated with the one or more other tenants is stored in one or more corresponding tenant data storage units, and wherein data associated with the tenant included in the transfer is stored and mixed together with data associated with one or more other tenants in the commingled storage unit;
filtering report data using the set of filters to obtain filtered report data, wherein filtering the report data does not pass data associated with an other tenant of the one or more other tenants; and
providing the filtered report data to the tenant.
1. A system for a metadata driven catalog definition, comprising:
an interface configured to receive an indication to generate a catalog comprising a set of filters; and
a processor configured to:
generate the catalog comprising the set of filters, wherein to generate the catalog comprising the set of filters, the processor is configured to:
traverse a set of data associated with a tenant to generate a set of metadata tags, wherein the set of data associated with the tenant is stored in a tenant data storage unit, wherein a metadata tag indicates a category or sub-category to which data associated with the metadata tag belongs;
determine a set of sub-categories based on the set of metadata tags, wherein a sub-category of the set of subcategories comprises a group of metadata tags associated with the sub-category; and
determine a set of categories based on the set of metadata tags, wherein a category of the set of categories comprises a group of sub-categories associated with the category;
provide to a system associated with the tenant the catalog comprising the set of filters for filtering data according to the set of categories and the set of sub-categories;
receive from the system associated with the tenant one or more indications associated with the set of categories and the set of sub-categories, wherein the one or more indications indicate whether data associated with a category of the set of categories or data associated with a sub-categories of the set of sub-categories is to be included in a transfer of data associated with the tenant from the tenant data storage unit to a commingled storage unit;
provide, from the tenant data storage unit to the commingled storage unit, the data associated with the tenant that is indicated to be included in the transfer, wherein the data associated with the tenant stored in the tenant data storage system is stored separately from data associated with one or more other tenants, wherein the data associated with the one or more other tenants is stored in one or more corresponding tenant data storage units, and wherein data associated with the tenant included in the transfer is stored and mixed together with data associated with one or more other tenants in the commingled storage unit;
filter report data using the set of filters to obtain filtered report data, wherein filtering the report data does not pass data associated with an other tenant of the one or more other tenants; and
provide the filtered report data to the tenant.
23. A computer program product for a metadata driven catalog definition, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
receiving an indication to generate a catalog comprising a set of filters;
generating the catalog comprising the set of filters, wherein generating the catalog comprises:
traversing, using a processor, a set of data associated with a tenant to generate a set of metadata tags, wherein the set of data associated with the tenant is stored in a tenant data storage unit, wherein a metadata tag indicates a category or sub-category to which data associated with the metadata tag belongs;
determining a set of sub-categories based on the set of metadata tags, wherein a sub-category of the set of subcategories comprises a group of metadata tags associated with the sub-category; and
determining a set of categories based on the set of metadata tags, wherein a category of the set of categories comprises a group of sub-categories associated with the category;
providing to a system associated with the tenant the catalog comprising the set of filters for filtering data according to the set of categories and the set of sub-categories;
receiving from the system associated with the tenant one or more indications associated with the set of categories and the set of sub-categories, wherein the one or more indications indicate whether data associated with a category of the set of categories or data associated with a sub-categories of the set of sub-categories is to be included in a transfer of data associated with the tenant from the tenant data storage unit to a commingled storage unit;
providing, from the tenant data storage unit to the commingled storage unit, the data associated with the tenant that is indicated to be included in the transfer, wherein the data associated with the tenant stored in the tenant data storage unit is stored separately from data associated with one or more other tenants, wherein the data associated with the one or more other tenants is stored in one or more corresponding tenant data storage units, and wherein data associated with the tenant included in the transfer is stored and mixed together with data associated with one or more other tenants in the commingled storage unit;
filtering report data using the set of filters to obtain filtered report data, wherein filtering the report data does not pass data associated with an other tenant of the one or more other tenants; and
providing the filtered report data to the tenant.
2. The system of
3. The system of
4. The system of
5. The system of
6. The system of
7. The system of
8. The system of
9. The system of
10. The system of
receive an opt-in indication associated with an opt-in filter selection; and
indicate to pass data as filtered using the opt-in filter selection.
11. The system of
12. The system of
receive an opt-out indication associated with an opt-out filter selection; and
indicate to not pass data as filtered using the opt-out filter selection.
13. The system of
14. The system of
filter tenant data using the set of filters of the catalog before transferring data from the tenant data storage unit to the commingling storage unit.
15. The system of
generate a set of opt-in indications and a set of opt-out indications associated with the catalog based at least in part on a previous set of opt-in indications and a previous set of opt-out indications associated with a previous catalog.
16. The system of
prompt a user to update the set of opt-in indications and the set of opt-out indications.
17. The system of
18. The system of
19. The system of
20. The system of
21. The system of
|
A system for a multitenanted database stores data for a plurality of tenants (e.g., organizations utilizing database services). Each tenant comprises a plurality of users (e.g., company employees). The multitenanted database stores user data for each user of each tenant (e.g., name, identification number, title, salary, etc.). Tenant data is stored on a set of data partitions securely separated by tenant (e.g., on different computers, on different hard drives, on different virtual machines, etc.) in order to prevent users from accessing data belonging to other tenants. The system for a multitenanted database, comprising the large set of tenant data, has the capability to produce data analyses that would be valuable to each tenant (e.g., typical group size within organizations of different sizes, average salaries for different employee roles, etc.). However, performing these data analyses creates a problem in that a tenant loses control of their data as it is mixed together for the analysis.
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
A system for a metadata driven catalog definition is disclosed. The system comprises an interface and a processor. The interface is configured to receive an indication to generate a catalog. The processor is configured to traverse a set of data to generate a set of metadata tags; determine a set of sub-categories, wherein a subcategory of the set of subcategories comprises a group of metadata tags associated with the sub-category; determine a set of categories, wherein a category of the set of categories comprises a group of sub-categories associated with the category; and provide the catalog comprising a set of filters for filtering data according to the set of categories and the set of sub-categories. In some embodiments, the system for a metadata driven catalog definition additionally comprises a memory coupled to the processor and configured to provide the processor with instructions.
A system for a metadata driven catalog definition comprises a system for generating a set of metadata based filters. The metadata-based filters are filters for filtering data objects by metadata tags associated with the data objects. Data objects are stored in an object based database and comprise data attributes (e.g., data values associated with a data object) and data relations (e.g., links to other data objects). Some data attributes or relations comprise metadata tags. The system for a metadata driven catalog definition first determines a set of all metadata tags in the object-based database. The object-based database is traversed (e.g., using a depth-first traversal, using a breadth-first traversal, using a recursive traversal, etc.) to build the set of metadata tags. A set of sub-categories is then determined, each sub-category comprising a set of one or more metadata tags, and a set of categories is determined, each category comprising a set of one or more sub-categories.
A system user (e.g., a user representing a tenant) provides a set of opt-in and opt-out indications corresponding to the categories and sub-categories of the catalog. A set of opt-out metadata tags is determined from the set of opt-in and opt-out indications and used to create a set of filters for filtering data objects. Any data object associated with an opt-out metadata tag is prevented from passing through the set of metadata-based filters. The set of metadata-based filters is applied by a system for commingled data analysis when transferring data from a tenant data storage to a commingled data storage (e.g., preventing the system from storing any data associated with opt-out categories or sub-categories from being stored on the commingled data storage). A set of opt-in metadata tags is determined from the set of opt-in and opt-out indications and used to create a set of filters for filtering data objects. Any data object associated with an opt-in metadata tag is allowed to pass through the set of metadata-based filters. The set of metadata-based filters is applied by a system for commingled data analysis when transferring data from a tenant data storage to a commingled data storage (e.g., preventing the system from storing any data associated with opt-out categories or sub-categories from being stored on the commingled data storage and allowing the system to store data associated with opt-in categories or sub-categories to be stored on the commingled data storage). The set of metadata based filters is additionally applied by the system for commingled data analysis when providing report data (e.g., report data provided to a tenant user is filtered using the set of metadata based filters, preventing the tenant from viewing other tenants' data associated with categories or sub-categories it has opted out of—for example, to enforce that a tenant does not receive data of data types that it is not willing to share).
Tenant data storage system 104 initially receives an indication to generate a catalog (e.g., from administrator system 102, from tenant system 108, etc.). Tenant data storage system 104, using its processor, traverses a set of data stored by a plurality of tenant data storage units. Tenant data storage system 104 determines metadata tags associated with each piece of stored data to create the set of metadata tags. The system then groups metadata tags into sub-categories and groups of sub-categories into categories. The catalog includes the listing of categories, sub-categories, and the metadata tags, and has filters associated with these categories, sub-categories, and the metadata tags. The catalog is provided to a tenant using tenant system 108 and opt-in and opt-out information associated with the catalog is requested from the tenant. Opt-in and opt-out information associated with the catalog comprises an indication associated with each sub-category indicating whether the tenant opts-in to share data associated with the sub-category. The catalog and one or more sets of tenant opt-in information are additionally provided to a process for secure data transfer and a process for reporting. The process for secure data transfer transfers data from a tenant data storage unit to a commingling storage unit indicated by the tenant as opt-in data without transferring any data indicated by the tenant as opt-out data. The process for reporting generates a report for a tenant and filters from the report data indicated by the tenant as opt-out data.
Administrator system 102 comprises an administrator system for use by an administrator. An administrator uses administrator system 102 to access tenant data storage system 104 and multitenant database system 106 to perform setup and configuration commands, to query a system state, to indicate to rebuild a catalog, to indicate to rebuild an analysis database, or to perform any other appropriate administrator action. Tenant system 108 comprises a tenant system for use by a tenant (e.g., a client of multitenant database system 106). A tenant uses tenant system 108 to access multitenant database system 106 to perform tenant database functions (e.g., providing data, querying a database, running reports, etc.). A tenant additionally uses tenant system 108 to access tenant data storage system 104 to interact with an analysis database (e.g., providing opt-in and opt-out information, requesting data analyses, etc.).
Tenant data storage system 104 comprises a tenant data storage system for storing data in a database for a set of tenants. Tenant data storage system 104 comprises a set of distinct tenanted storage systems (for example—separate hard drives, separate virtual machines, etc.) for storing tenant data in such a way that tenants cannot access each other's data. Tenant data storage system 104 additionally comprises a commingling storage system for storing commingled tenant data for analysis purposes. Tenant data storage system 104 additionally comprises a secure data commingling system for managing data transfer from the tenanted storage systems to the commingling storage and for executing data analyses and reporting on the commingling storage unit. Multitenant database system 106 comprises a system for performing database actions (e.g., storing data, modifying data, querying data, performing reports, etc.) on tenant data stored by tenant data storage system 104.
In some embodiments, secure data commingler 218 comprises a system for filtering data stored in tenant data storage units based at least in part on the catalog and storing the filtered data in commingling storage unit 208. In some embodiments, tenant data is transferred upon request (e.g., a tenant request, an administrator request, etc.). In some embodiments, secure data commingler 218 comprises a system for creating a report based on data stored in commingling storage unit 208 and filtering the report data based at least in part on the catalog. In some embodiments, data stored on commingling storage unit 208 is used for a service (e.g., determination of statistics, reporting, benchmarking, etc.). In some embodiments, secure data commingler 218 comprises a system for determining a set of tenants associated with the tenant data stored on commingling storage unit 208.
In various embodiments, the plurality of tenant data storage units comprise tenant data storage units associated with separate computers, tenant data storage units associated with separate hard drives, tenant data storage units associated with separate virtual machines, tenant data storage units associated with separate storage partitions, or tenant data storage units separated in any other appropriate way. In various embodiments, tenant data storage system 200 comprises 1, 2, 5, 22, 89, or any other appropriate number of tenant data storage units.
In some embodiments, an example category comprises leadership and management effectiveness with subcategories of span of control and leadership. For the subcategory of span of control, the benchmark comprises a calculation of an average number of direct reports within an organization. For the subcategory of leadership, benchmarks comprise percentage female leaders, percentage male leaders, percentage all leaders, and ratio of male to female leaders.
In some embodiments, an example category comprises turnover with subcategories of terminations and talent. For the subcategory of terminations, the benchmarks comprise overall turnover, voluntary turnover, and involuntary turnover. For the subcategory of talent, the benchmarks comprise high potential total turnover, high potential voluntary turnover, and high potential involuntary turnover.
In some embodiments, an example category comprises usage with subcategories of system utilization, business process, headcount, diversity, age, and length of service. For the subcategory of system utilization, the benchmarks comprise count of custom reports and count of customer-defined calculated fields. For the subcategory of business process, the benchmarks comprise count of business process definitions, average steps in business process definitions, and average number of days to complete business process. For the subcategory of headcount, the benchmarks comprise percent contingent workers and percent active workers. For the subcategory of diversity, the benchmark comprises male to female ratio. For the subcategory of age, the benchmark comprise average retirement age, percentage retirement for those of retirement age, and average age of worker. For the subcategory of length of service, the benchmarks comprise female percentage, male percentage, average length of service, average time in job profile, and average time in position.
In some embodiments, the set of metadata tags generated in 502 additionally comprises a structure based at least in part on the data traversal (e.g., data is stored in a data structure, e.g., a tree, a table, etc., and the metadata tags are stored in a related structure). In some embodiments, the set of sub-categories determined in 504 is determined automatically (e.g., the set of groupings of metadata tags is determined by an automatic process using a predefined table or set of rules). In various embodiments, the set of sub-categories determined in 504 is determined using machine learning, using a clustering algorithm, using a structure determined during a data traversal, or in any other appropriate way. In some embodiments, the set of sub-categories determined in 504 is determined manually (e.g., by receiving a manually indicated set of groupings of metadata tags). In some embodiments, the set of categories determined in 506 is determined automatically (e.g., the set of groupings of sub-categories is determined by an automatic process). In various embodiments, the set of categories determined in 506 is determined using machine learning, using a clustering algorithm, using a structure determined during a data traversal, or in any other appropriate way. In some embodiments, the set of categories determined in 506 is determined manually (e.g., by receiving a manually indicated set of groupings of sub-categories). In various embodiments, the catalog is provided in 508 to a user for indicating opt-in information, to a process for transferring data to a commingling storage unit, to a process for reporting, or to any other appropriate location. In some embodiments, data is filtered using the set of filters before it is transferred from a tenant data storage unit to a commingling storage unit (e.g., to protect data the tenant does not wish to share). In some embodiments, report data is filtered using the set of filters of the catalog before providing the report data as part of a report (e.g., to enforce that a tenant does not receive data of data types that it is not willing to share).
In some embodiments, traversing not yet checked related objects of the set of related objects using the process of
In some embodiments, the set of opt-in and opt-out indications indicating an opt-in data set to pass and an opt-out data set to not pass is received as a result of a tenant using a tenant system interacting with a catalog.
In some embodiments, it is determined (e.g., by a system administrator, by the tenant data storage system) that tenant data has changed enough such that the catalog and analytic database need to be rebuilt. In various embodiments, tenant data changes because a new tenant joins the system, because a new data type is added, because the database is restructured, or for any other appropriate reason. In some embodiments, determining a new set of opt-in and opt-out indications comprises automatically determining a new set of opt-in and opt-out indications. In some embodiments, a new set of opt-in and opt-out indications is based at least in part on a previous set of opt-in and opt-out indications associated with a previous catalog. In some embodiments, when a new set of opt-in and opt-out indications is automatically determined, it is automatically determined in such a way that only metadata tags that were opted into in the previous set of opt-in and opt-out indications are opted into in the new set of opt-in and opt-out indications. In some embodiments, after a new set of opt-in and opt-out indications is automatically determined, a user is prompted to update the set of opt-in and opt-out indications (e.g., in the event the user desires to change any of the opt-in and opt-out settings).
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
Gulsen, Denis, Guney, Erol, Ranstrom, Eric James, Afghani, Amir Ali, Dhanjal, Chandni K.
Patent | Priority | Assignee | Title |
11765035, | Apr 30 2021 | PEOPLE CENTER, INC. | Management of computing devices via reference to linked employee records |
ER3349, |
Patent | Priority | Assignee | Title |
10216449, | Dec 23 2016 | EMC IP HOLDING COMPANY LLC | Extended snapshot using backup and microservice |
20070234291, | |||
20080201299, | |||
20090282045, | |||
20100217758, | |||
20130018890, | |||
20130232156, | |||
20130347078, | |||
20140095966, | |||
20150120763, | |||
20150134694, | |||
20180262864, | |||
20180357226, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Sep 01 2017 | Workday, Inc. | (assignment on the face of the patent) | / | |||
Oct 05 2017 | GUNEY, EROL | WORKDAY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044006 | /0978 | |
Oct 05 2017 | RANSTROM, ERIC JAMES | WORKDAY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044006 | /0978 | |
Oct 05 2017 | AFGHANI, AMIR ALI | WORKDAY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044006 | /0978 | |
Oct 05 2017 | DHANJAL, CHANDNI K | WORKDAY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044006 | /0978 | |
Oct 16 2017 | GULSEN, DENIS | WORKDAY, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044006 | /0978 |
Date | Maintenance Fee Events |
Sep 01 2017 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Apr 02 2024 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 13 2023 | 4 years fee payment window open |
Apr 13 2024 | 6 months grace period start (w surcharge) |
Oct 13 2024 | patent expiry (for year 4) |
Oct 13 2026 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 13 2027 | 8 years fee payment window open |
Apr 13 2028 | 6 months grace period start (w surcharge) |
Oct 13 2028 | patent expiry (for year 8) |
Oct 13 2030 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 13 2031 | 12 years fee payment window open |
Apr 13 2032 | 6 months grace period start (w surcharge) |
Oct 13 2032 | patent expiry (for year 12) |
Oct 13 2034 | 2 years to revive unintentionally abandoned end. (for year 12) |