Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEM AND METHOD FOR SANDBOXING SUPPORT IN A MULTIDIMENSIONAL DATABASE ENVIRONMENT
Document Type and Number:
WIPO Patent Application WO/2017/070385
Kind Code:
A1
Abstract:
In accordance with an embodiment, described herein is a system and method for providing sandboxing support in a multidimensional database environment. A plurality of sandboxes and a baseline data can be provided in a multidimensional database server, with each sandbox created for a particular "what-if" analysis, and configured to store one or more changes to the baseline data. When a request is received for a report on a particular "what-if" analysis from a client/user, the multidimensional database server can split the request into a first query and the second query, with the first query directed to a sandbox associated with the client/user, and the second query directed to the baseline data. The multidimensional database server can merge results from the first query and the second query, and perform aggregations and calculations on the merged data, before sending the merged data to a client.

Inventors:
BELYAEV VICTOR (US)
Application Number:
PCT/US2016/057968
Publication Date:
April 27, 2017
Filing Date:
October 20, 2016
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ORACLE INT CORP (US)
International Classes:
G06F17/30
Foreign References:
US6766325B12004-07-20
US20050262108A12005-11-24
US20110082830A12011-04-07
US20050138013A12005-06-23
Other References:
GUOLIANG ZHOU ET AL: "What-if Analysis in MOLAP Environments", FUZZY SYSTEMS AND KNOWLEDGE DISCOVERY, 2009. FSKD '09. SIXTH INTERNATIONAL CONFERENCE ON, IEEE, 14 August 2009 (2009-08-14), PISCATAWAY, NJ, USA, pages 405 - 409, XP031584609, ISBN: 978-0-7695-3735-1, Retrieved from the Internet [retrieved on 20170118]
BARTOSZ BEBEL ET AL: "Creation and management of versions in multiversion data warehouse", PROCEEDINGS ACM SAC, 1 January 2004 (2004-01-01), pages 717, XP055336248, ISBN: 978-1-58113-812-2, DOI: 10.1145/967900.968049
Attorney, Agent or Firm:
MEYER, Sheldon R. et al. (US)
Download PDF:
Claims:
Claims:

What is claimed is: 1. A system for providing sandboxing support in a multidimensional database environment, comprising:

a computer that includes one or more microprocessors;

a multidimensional database server executing on the computer, wherein the multidimensional database server includes a baseline data, and a plurality of sandboxes, wherein each sandbox is associated with a user, and stores one or more changes to the baseline data;

a query processor in the multidimensional database server, wherein the query processor is configured to

split a query received from a user into a first query and a second query, direct the first query to the baseline data, and the second query to a sandbox associated with the user,

merge results from the first query and the second query, and

return the merged data to the user. 2. The system of Claim 1 , wherein each of the plurality of sandboxes is created for a particular what-if analysis.

3. The system of any preceding Claim, wherein the baseline data is data in a cube in the multidimensional database server.

4. The system of any preceding Claim, wherein if a requested cell exists in a sandbox, the query processor uses the cell value in the sandbox; otherwise, the query processor retrieves the cell value from the baseline data. 5. The system of any preceding Claim, wherein data changes in each sandbox are available only to a user associated with that sandbox.

6. The system of any preceding Claim, wherein data changes in each sandbox are merged into the baseline data, and becomes available to each user.

7. The system of any preceding Claim, wherein each of the plurality of sandboxes and the baseline data is defined as a member in a sandbox dimension in a database outline of the multidimensional database server.

8. The system of any preceding Claim, wherein the database outline further includes a cell properties dimension for describing data in the sandbox dimension.

9. The system of any preceding Claim, wherein the cell properties dimension includes a status member for tracking how each cell in the sandbox dimension is populated, and a transaction identifier for specifying a latest transaction that modifies each cell. 10. A method for providing sandboxing support in a multidimensional database environment, comprising:

providing a multidimensional database server, executing on one or more microprocessors, wherein the multidimensional database server includes a baseline data, and a plurality of sandboxes, wherein each sandbox is associated with a user, and stores one or more changes to the baseline data;

receiving, at a query processor in the multidimensional database server, a query from a user;

splitting the query received from the user into a first query and a second query;

directing the first query to the baseline data, and the second query to a sandbox associated with the user;

merging results from the first query and the second query; and

returning the merged data to the user.

11. The method of Claim 10, wherein each of the plurality of sandboxes is created for a particular what-if analysis.

12. The method of Claim 10 or 11 , wherein the baseline data is data in a cube in the multidimensional database server. 13. The method of any of Claims 10 to 12, wherein if a requested cell exists in a sandbox, the query processor uses the cell value in the sandbox, otherwise, the query processor retrieves the cell value from the baseline data.

14. The method of any of Claims 10 to 13, wherein data changes in each sandbox are available only to a user associated with that sandbox.

15. The method of any of Claims 10 to 14, wherein data changes in each sandbox are merged into the baseline data, and becomes available to each user.

16. The method of any of Claims 10 to 15, wherein each of the plurality of sandboxes and the baseline data is defined as a member in a sandbox dimension in a database outline of the multidimensional database server.

17. The method of Claim 16, wherein the database outline further includes a cell properties dimension for describing data in the sandbox dimension.

18. The method of Claim 17, wherein the cell properties dimension includes a status member for tracking how each cell in the sandbox dimension is populated, and a transaction identifier for specifying a latest transaction that modifies each cell. 19. A non-transitory computer readable storage medium, including instructions stored thereon which when read and executed by one or more computers cause the one or more computers to perform the steps comprising:

providing a multidimensional database server, executing on one or more microprocessors, wherein the multidimensional database server includes a baseline data, and a plurality of sandboxes, wherein each sandbox is associated with a user, and stores one or more changes to the baseline data;

receiving, at a query processor in the multidimensional database server, a query from a user;

splitting the query received from the user into a first query and a second query;

directing the first query to the baseline data, and the second query to a sandbox associated with the user;

merging results from the first query and the second query; and

returning the merged data to the user. 20. The non-transitory computer readable storage medium of Claim 19, wherein each of the plurality of sandboxes is created for a particular what-if analysis.

21. A non-transitory computer readable storage medium, including instructions stored thereon which when read and executed by one or more computers cause the one or more computers to perform any method of Claims 10 to 18.

22. A computer program comprising program instructions in machine-readable format that when executed by a computer system causes the computer system to perform the method of any of Claims 10 to 18.

23. A computer program product comprising the computer program of Claim 22 stored in a non-transitory machine readable data storage medium.

Description:
SYSTEM AND METHOD FOR SANDBOXING SUPPORT IN A MULTIDIMENSIONAL DATABASE ENVIRONMENT

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.

Claim of Priority:

[0001] This application claims the benefit of priority to U.S. Provisional Application titled SYSTEM AND METHOD FOR SANDBOXING SUPPORT IN A MULTIDIMENSIONAL DATABASE", Application No. 62/245,889, filed October 23, 2015, which application is herein incorporated by reference.

Field of Invention:

[0002] Embodiments of the invention are generally related to databases and data warehousing, and are particularly related to a system and method for sandboxing support in a multidimensional database environment.

Background:

[0003] Scenario management can help enterprises stay competitive by identifying upcoming opportunities and threats early and integrating them into strategic planning on time. Scenario management requires the use of what-if analyses. In a what-if analysis, one or more data values in a set of data stored in a multidimensional database can be changed to see how the changes will affect the outcome of a formula or a forecasting model that is based on the set of data. Scenario management requires that the underlying multidimensional database stores a different set of data for each what-if analysis in an isolated space so that the data set does not impact a baseline data

Summary:

[0004] In accordance with an embodiment, described herein is a system and method for providing sandboxing support in a multidimensional database environment. A plurality of sandboxes and a baseline data can be provided in a multidimensional database server, with each sandbox created for a particular what-if analysis and configured to store one or more changes to the baseline data. When a request is received for a report on a particular what-if analysis from a user, the multidimensional database server can split the request into a first query and the second query, with the first query directed to a sandbox associated with the user, and the second query directed to the baseline data. The multidimensional database server can merge results from the first query and the second query, and perform aggregations and calculations on the merged data before sending the merged data to a client.

Brief Description of the Figures:

[0005] Figure 1 illustrates an example of a multidimensional database environment, in accordance with an embodiment.

[0006] Figure 2 illustrates a system for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[0007] Figure 3 further illustrates a system for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[0008] Figure 4 further illustrates a system for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[0009] Figure 5 further illustrates a system for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[00010] Figure 6 illustrates a method for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

Detailed Description:

[00011] The foregoing, together with other features, will become apparent upon referring to the enclosed specification, claims, and drawings. Specific details are set forth in order to provide an understanding of various embodiments. However, it will be apparent that various embodiments may be practiced without these specific details. The enclosed specification and drawings are not intended to be restrictive.

[00012] Multidimensional database environments, an example of which includes Oracle Essbase, can be used to integrate large amounts of data, in some instances from multiple data sources, and distribute filtered information to end-users, in a manner that addresses those users' particular requirements.

[00013] Figure 1 illustrates an example of a multidimensional database environment 100, in accordance with an embodiment.

[00014] As illustrated in Figure 1 , in accordance with an embodiment, a multidimensional database environment, operating as a database tier, can include one or more multidimensional database server system(s) 102, each of which can include physical computer resources or components 104 (e.g., microprocessor/CPU, physical memory, network components), an operating system 106, and one or more multidimensional database server(s) 110 (e.g., Essbase Servers).

[00015] In accordance with an embodiment, a middle tier 120 can include one or more service(s), such as, for example, provider services 122 (e.g., Hyperion Provider Services), administration services 124 (e.g., Essbase Administration Services), or studio/integration services 126 (e.g., Essbase Studio / Essbase Integration Services). The middle tier can provide access, via ODBC/JDBC 127, 128, or other types of interfaces, to a metadata catalog 129, and/or one or more data source(s) 130 (for example, a relational database), for use with the multidimensional database environment.

[00016] In accordance with an embodiment, the one or more data source(s) can also be accessed, via ODBC/JDBC 132, or other types of interfaces, by the one or more multidimensional database server(s), for use in providing a multidimensional database.

[00017] In accordance with an embodiment, a client tier 140 can include one or more multidimensional database client(s) 142 (e.g., Essbase Server clients), that enable access to a multidimensional database (such as, for example, Smart View, Spreadsheet Add-in, Smart Search, Administration Services, MaxL, XMLA, CAPI or VB API Applications, Oracle Business Intelligence Enterprise Edition Plus, or other types of multidimensional database clients). The client tier can also include consoles, for use with services in the middle tier, such as for example an administration services console 144, or a studio/integration services console 146.

[00018] In accordance with an embodiment, communication between the client, middle, and database tiers can be provided by one or more of TCP/IP, HTTP, or other types of network communication protocols.

[00019] In accordance with an embodiment, the multidimensional database server can integrate data from the one or more data source(s), to provide a multidimensional database, data structure, or cube(s) 150, which can then be accessed to provide filtered information to end-users.

[00020] Generally, each data value in a multidimensional database is stored in one cell of a cube; and a particular data value can be referenced by specifying its coordinates along dimensions of the cube. The intersection of a member from one dimension, with a member from each of one or more other dimensions, represents a data value.

[00021] For example, as illustrated in Figure 1 , which illustrates a cube 162 that might be used in a sales-oriented business application, when a query indicates "Sales", the system can interpret this query as a slice or layer of data values 164 within the database that contains all "Sales" data values, where "Sales" intersect with "Actual" and "Budget". To refer to a specific data value 166 in a multidimensional database, the query can specify a member on each dimension, for example by specifying "Sales, Actual, January". Slicing the database in different ways, provides different perspectives of the data; for example, a slice of data values 168 for "February" examines all of those data values for which a time/year dimension is fixed for "February".

Database Outline

[00022] In accordance with an embodiment, development of a multidimensional database begins with the creation of a database outline, which defines structural relationships between members in the database; organizes data in the database; and defines consolidations and mathematical relationships. Within the hierarchical tree or data structure of the database outline, each dimension comprises one or more members, which in turn may comprise other members. The specification of a dimension instructs the system how to consolidate the values of its individual members. A consolidation is a group of members within a branch of the tree.

Dimensions and Members

[00023] In accordance with an embodiment, a dimension represents the highest consolidation level in the database outline. Standard dimensions may be chosen to represent components of a business plan that relate to departmental functions (e.g., Time, Accounts, Product Line, Market, Division). Attribute dimensions, that are associated with standard dimensions, enable a user to group and analyze members of standard dimensions based on member attributes or characteristics. Members (e.g., Product A, Product B, Product C) are the individual components of a dimension.

Dimension and Member Relationships

[00024] In accordance with an embodiment, a multidimensional database uses family (parents, children, siblings; descendants and ancestors); and hierarchical (generations and levels; roots and leaves) terms, to describe the roles and relationships of the members within a database outline.

[00025] In accordance with an embodiment, a parent is a member that has a branch below it. For example, "Margin" may be a parent for "Sales", and "Cost of Goods Sold" (COGS). A child is a member that has a parent above it. In the above example, "Sales" and "Cost of Goods Sold" are children of the parent "Margin". Siblings are children of the same immediate parent, within the same generation.

[00026] In accordance with an embodiment, descendants are members in branches below a parent. For example, "Profit", "Inventory", and "Ratios" may be descendants of Measures; in which case the children of "Profit", "Inventory", and "Ratios" are also descendants of Measures. Ancestors are members in branches above a member. In the above example, "Margin", "Profit", and Measures may be ancestors of "Sales".

[00027] In accordance with an embodiment, a root is the top member in a branch. For example, Measures may be the root for "Profit", "Inventory", and "Ratios"; and as such for the children of "Profit", "Inventory", and "Ratios". Leaf (level 0) members have no children. For example, Opening "Inventory", Additions, and Ending "Inventory" may be leaf members.

[00028] In accordance with an embodiment, a generation refers to a consolidation level within a dimension. The root branch of the tree is considered to be "generation 1", and generation numbers increase from the root toward a leaf member. Level refers to a branch within a dimension; and are numbered in reverse from the numerical ordering used for generations, with level numbers decreasing from a leaf member toward its root.

[00029] In accordance with an embodiment, a user can assign a name to a generation or level, and use that name as a shorthand for all members in that generation or level.

Sparse and Dense Dimensions

[00030] Data sets within a multidimensional database often share two characteristics: the data is not smoothly and uniformly distributed; and data does not exist for a majority of member combinations.

[00031] In accordance with an embodiment, to address this, the system can recognize two types of standard dimensions: sparse dimensions and dense dimensions. A sparse dimension is one with a relatively low percentage of available data positions filled; while a dense dimension is one in which there is a relatively high probability that one or more cells is occupied in every combination of dimensions. Many multidimensional databases are inherently sparse, in that they lack data values for the majority of member combinations. Data Blocks and the Index System

[00032] In accordance with an embodiment, the multidimensional database uses data blocks and an index to store and access data. The system can create a multidimensional array or data block for each unique combination of sparse standard dimension members, wherein each data block represents the dense dimension members for its combination of sparse dimension members. An index is created for each data block, wherein the index represents the combinations of sparse standard dimension members, and includes an entry or pointer for each unique combination of sparse standard dimension members for which at least one data value exists.

[00033] In accordance with an embodiment, when the multidimensional database server searches for a data value, it can use the pointers provided by the index, to locate the appropriate data block; and, within that data block, locate the cell containing the data value. Administration Services

[00034] In accordance with an embodiment, an administration service (e.g., Essbase Administration Services) provides a single-point-of-access that enables a user to design, develop, maintain, and manage servers, applications, and databases.

Studio

[00035] In accordance with an embodiment, a studio (e.g., Essbase Studio) provides a wizard-driven user interface for performing tasks related to data modeling, cube designing, and analytic application construction.

Spreadsheet Add-in

[00036] In accordance with an embodiment, a spreadsheet add-in integrates the multidimensional database with a spreadsheet, which provides support for enhanced commands such as Connect, Pivot, Drill-down, and Calculate.

Integration Services

[00037] In accordance with an embodiment, an integration service (e.g., Essbase Integration Services), provides a metadata-driven environment for use in integrating between the data stored in a multidimensional database and data stored in relational databases.

Provider Services

[00038] In accordance with an embodiment, a provider service (e.g., Hyperion Provider Services) operates as a data-source provider for Java API, Smart View, and XMLA clients.

Smart View

[00039] In accordance with an embodiment, a smart view provides a common interface for, e.g., Hyperion Financial Management, Hyperion Planning, and Hyperion Enterprise Performance Management Workspace data.

Developer Products

[00040] In accordance with an embodiment, developer products enable the rapid creation, management, and deployment of tailored enterprise analytic applications. Lifecycle Management

[00041] In accordance with an embodiment, a lifecycle management (e.g., Hyperion Enterprise Performance Management System Lifecycle Management) provides a means for enabling enterprise performance management products to migrate an application, repository, or individual artifacts across product environments.

OLAP

[00042] In accordance with an embodiment, online analytical processing (OLAP) provides an environment that enables users to analyze enterprise data. For example, finance departments can use OLAP for applications such as budgeting, activity- based costing, financial performance analysis, and financial modeling, to provide "just- in-time" information. Sandboxing Support (5693US1)

[00043] In accordance with an embodiment, the system and method described herein can provide sandboxing support in a multidimensional database server to support what-if analyses. The multidimensional database server can include a plurality of sandboxes and a baseline data. Each sandbox is created for a particular what-if analysis and configured to store one or more changes to the baseline data. Each of the sandboxes and the baseline data is accessible from their respective views through a graphical user interface.

[00044] Existing solutions for performing what-if scenario analyses require that an end user provide a customized multidimensional database client to store different copies of a baseline data set. For a large baseline data set which may include thousands of rows, the existing solutions can be inefficient in terms of system performance and memory consumption.

[00045] Embodiments of the present invention can overcome the inefficiency of the existing solutions by providing server-side features that can be used out-of-box without additional work from end users. Additional advantages of the present invention include saving disk space by storing only data changes to the baseline data in each sandbox; and improving system performance by reducing memory footprints in the system, and data traffic between the multidimensional database client and the multidimensional database server.

[00046] In accordance with an embodiment, when a request is received for a report on a particular what-if analysis, the multidimensional database server can split the request into a first query and a second query from a user, with the first query directed to a sandbox associated with the user, and the second query directed to the baseline data. The multidimensional database server can merge results from the first query and the second query, and perform aggregations and calculations on the merged data before sending the merged data to a client.

[00047] In accordance with an embodiment, the baseline data can represent transactional data, and can serve as a basis for various what-if analyses. A separate sandbox can be created based on a set of data from the baseline data for a different what-if analysis. When a what-if analysis is completed, one or more cells in the set of data can be modified to generate an expected result. The modified cell values can be saved to the sandbox, while the cell values that are not modified remains in the baseline data.

[00048] In accordance with an embodiment, the system can include one or more sandboxes for each of a plurality of users, and a baseline data which can be a database cube shared by the plurality of users. Data changes in a sandbox created for a user can be available only to the user, and not available to every other user who has access to the baseline data. A user can publish the data changes in a particular sandbox, for example, when the user determines that a what-if scenario analysis using the data changes yields an expected result. Published data changes from a sandbox are available to other users.

[00049] In accordance with an embodiment, each sandbox and the baseline data can be represented by a member in a sandbox dimension in a database outline of the multidimensional database server. When a user creates a sandbox at a graphical user interface, the system can automatically create a corresponding member representing the newly created sandbox in the sandbox dimension of the database outline.

[00050] In an accordance with an embodiment, each sandbox can be a private virtual place created for a particular user. A newly created sandbox does not include any data. When the particular user works in a view of the sandbox, the system can trigger the query processor to retrieve a particular set of data specified by the user using a multidimensional expression (MDX) query, and display the retrieved data in the sandbox view. The user can subsequently modify the retrieved data and save only the modification to the sandbox.

[00051] The system enables a user to model different business scenarios using one or more private spaces in the database/cube, in which the user can modify one or more cells for each business scenarios to see the impact of the modification.

[00052] In accordance with an embodiment, a user can be associated with a plurality of sandboxes, and each sandbox can be associated with a different scenario.

[00053] Figure 2 illustrates a system for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[00054] As shown in Figure 2, the system can include a plurality of cubes 223 and a database outline 225 that defines the plurality of cubes in the multidimensional database server. A user (for example, a database user or system administrator) can enable support for sandboxes when a multidimensional database application is created.

[00055] In accordance with an embodiment, the plurality of cubes can include a baseline data cube 235, and a plurality of sandboxes (for example, sandbox A 237 and sandbox B 239). Each of the plurality of sandboxes can store a modified data that represents one or more updates to cell values in the baseline data cube.

[00056] In accordance with an embodiment, each sandbox can be created for a particular user, and the modified data in a sandbox is accessible only to user A.

[00057] In accordance with an embodiment, user A can access the data in sandbox A through a corresponding sandbox view displayed in a graphical user interface (for example, Oracle Smart View for Office) in a multidimensional database client 230.

[00058] For example, sandbox A is created for user A 201 , and sandbox B is created for user B 203. User A can access the modified data in sandbox A in sandbox view A 21 1 , and user B can access the modified data in sandbox B in sandbox view B 213.

[00059] In accordance with an embodiment, each sandbox can be created for a particular what-if analysis.

[00060] For example, the baseline data can include sales data for a beverage distribution company that owns a plurality of stores in different cities in the Bay area of the United States. If user A, while examining a set of data retrived from the baseline data, needs to perform an analysis that the impact that numbers of bottles of beverages sold in Cupertino over a period of five years have on the profitability of the company, the user can create a sandbox ( for example, Sanbox A) through the graphical interface interface.

[00061] In accordance with an embodiment, data initially displayed in a sandbox view (for example, sandbox view A) can be a set of data from the baseline data, which a user can modify based on the needs of a particular what-if analysis. The modified data can be saved to the corresponding sandbox.

[00062] In accordance with an embodiment, a user can request a report describing a what-if analysis. As shown in Figure 2, a query processor 217 on the multidimensional database server can receive a request for a report on a what-if analysis associated with sandbox A. A query splitter 219 can split the request into a first query and the second query, with the first query directed to sandbox A, and the second query directed to the baseline data.

[00063] In accordance an embodiment, the first query and the second query can include the same syntax requesting a same set of data. For example, both queries can request data representing numbers of bottles of beverages sold in Cupertino in 2015 and profitability value each year of the company over the same period of time.

[00064] As described above, since a sandbox only stores updated values to the baseline data, a query directed to the sandbox may retrieve a result that contains missing values, for example, values in cells that are not updated for a particular what-if analysis.

[00065] In accordance with an embodiment, a query result processor 221 can include a plurality of functions to merge the results from the first query and the second query based on a set of pre-defined rules.

[00066] In accordance with an embodiment, if a requested cell exists in a sandbox, the query processor can use the cell value in the sandbox. If the requested cell does not exist in the sandbox, the query processor can use the cell value from the baseline data. The above rules apply when the query processor calculates dynamic hierarchies, or aggregates stored hierarchies for the merged data.

[00067] As further shown in Figure 2, the merged data, for which aggregations and calculations have been performed, can be displayed in sandbox view A.

[00068] Figure 3 further illustrates a system for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[00069] As shown in Figure 3, sandbox A can be created by user A at the multidimensional database client while use A is working in a baseline view 311 on a baseline data set 313 from the baseline data.

[00070] In accordance with an embodiment, user A can subsequently switch to sandbox view A view to perform a what-if analysis on the baseline data that is initially displayed in user A view. Any change to the baseline data set can be saved as one or more updated cell values 314 to sandbox A in the multidimensional database server.

[00071] In accordance with an embodiment, any changes that user A makes to sandbox view A cannot be viewed by another user. The multidimensional database server can enforce a plurality of sandbox ownership and security rules to grant access to a particular sandbox only to an authorized user.

[00072] In accordance with an embodiment, changes saved to sandbox A can be published. Published data from a sandbox can be merged into the baseline. After the changes in sandbox A are applied to the baseline data, sandbox A can be deleted.

[00073] In accordance with an embodiment, data in a sandbox can be compared against the baseline data, or against data in other sandboxes. A dashboard can be provided to display a side-by-side comparison between different sandboxes or between a sandbox and the baseline data. Alternatively, an ad hoc grid can be provided to display different versions of data from a particular sandbox or from the baseline data.

[00074] Figure 4 further illustrates a system for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[00075] More particularly, Figure 4 illustrates the database outline that defines the structure of the plurality of cubes in the multidimensional database server for use in storing the baseline data and the plurality of sandboxes described above.

[00076] In accordance with an embodiment, the database outline can include measures 41 1 , a time dimension 413, and a cell properties dimension 415, and a sandbox dimension 433.

[00077] In accordance with an embodiment, the sandbox dimension can include a plurality of members that represent the plurality of cubes in the multidimensional database server. As shown in Figure 4, the sandbox dimension includes a baseline data member 435, and a plurality of sandbox members (for example, sandbox A 437 and sandbox B 439).

[00078] In accordance with an embodiment, each sandbox can be created for a particular user, and the modified data in a sandbox is accessible only to user A.

[00079] In accordance with an embodiment, to enable sandboxes in the multidimensional database server, the first sparse dimension in the database outline needs to be marked as the sandbox dimension, which can have a "sandbox" dimension type, and be flat. In addition, each member (for example, the baseline data member, sandbox A and sandbox B) in the sandbox dimension can be associated with a tilde (~) as the consolidation operator.

[00080] In accordance with an embodiment, the consolidation operator tilde (~) associated with each member in the sandbox dimension can represent a consolidation property which indicates that children do not rollup to the parent within the dimension.

[00081] In accordance with an embodiment, the first member in the sandbox dimension can be a baseline data member, and the rest of the members can be sandbox members.

[00082] As shown in Figure 4, the cell properties dimension can be an attribute dimension that includes a value member 417, a status member 419 and a transaction identifier (TID) member 421 , for use in describing the data in the sandbox dimension.

[00083] For example, the value member can be associated with a plurality of properties to describe the values in each cell in the sandbox dimension. The cell status member can be used to track when and how a particular cell in the sandbox dimension was populated. Exemplary values of the cells status member INPUT, LOAD, CALC, MANUAL ENTRY, and DYNAMIC. The transaction identifier member can specify the latest transaction that modified the cell.

[00084] Figure 5 further illustrates a system for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[00085] As shown in Figure 5, data in a sandbox of a user can be merged into the baseline data, or another sandbox of the user. The merging process can be triggered at the multidimensional database client, and performed by a sandbox merging processor 511 residing on the multidimensional database server.

[00086] For example, at the request of user A, data in sandbox A can be published and merged into the baseline data. At the request of user B that is associated with sandbox B and sandbox N 513, data in both sandboxes can be merged into the baseline data. In addition, user B can request that data in sandbox B be merged into sandbox N, or data in sandbox N be merged into sandbox B.

[00087] In accordance with an embodiment, when merging data from a source sandbox to a target sandbox or the baseline data, the sandbox merging processor can perform the merging for a slice of a sandbox or an entire sandbox.

[00088] In accordance with an embodiment, the sandbox merging processor can execute a merging process with a command with the following exemplary syntax: DATAMERGE scrMbrName trgMbrName [NOCAL] [ SOURCE | ARGE ]

In the above command, scrMbrName is a single sandbox member or a member combination, and trgMbrName is a single sandbox member. As described above, the members of the sandbox dimension can include the baseline data and the plurality of sandboxes. NOCALC indicates that only cells with a status INPUT or LOAD can be copied in the merging process. The value of SOURCE|TARGET is defaulted to SOURCE, which indicates that when the source and target have different values, the source value is used. A user can select TARGET, which indicates that when a target value is missing, or the target status has an associated MERGED flag, the cell is overwritten with a value from the source; otherwise the cell is ignored.

[00089] In accordance with an embodiment, the sandbox merging processor can iterate over each non-missing cells in a source sandbox, and determine if the cell should be coped into a target (i.e. target sandbox or the baseline data) in accordance with the value of the SOURCE|TARGET modifier. If a cell from the source sandbox is determined to be merged into the target, the sandbox merging processor can copy the value, status and transaction identifier of the cell to the target. The merging processor can additionally add a MERGED flag to the cell status.

[00090] Figure 6 illustrates a method for sandboxing support in a multidimensional database environment, in accordance with an embodiment.

[00091] As shown in Figure 6, at step 613, a multidimensional database server executing on one or more microprocessors is provided, wherein the multidimensional database server includes a baseline data, and a plurality of sandboxes, wherein each sandbox is associated with a user, and stores one or more changes to the baseline data.

[00092] At step 615, a query is received at a query processor in the multidimensional database server from a user.

[00093] At step 617, the query received from the user into a first query and a second query.

[00094] At step 619, the query processor directs the first query to the baseline data, and the second query to a sandbox associated with the user.

[00095] At step 621 , the query processor merges results from the first query and the second query.

[00096] At step 623, the query processor returns the merged data to the user. [00097] The present invention may be conveniently implemented using one or more conventional general purpose or specialized computer, computing device, machine, or microprocessor, including one or more processors, memory and/or computer readable storage media programmed according to the teachings of the present disclosure. Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the software art.

[00098] In some embodiments, the present invention includes a computer program product which is a non-transitory storage medium or computer readable medium (media) having instructions stored thereon/in which can be used to program a computer to perform any of the processes of the present invention. The storage medium can include, but is not limited to, any type of disk including floppy disks, optical discs, DVD, CD-ROMs, microdrive, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.

[00099] The foregoing description of the present invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations will be apparent to the practitioner skilled in the art. The modifications and variations include any relevant combination of the disclosed features. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling others skilled in the art to understand the invention for various embodiments and with various modifications that are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalents.