Patent Publication Number: US-2011078199-A1

Title: Systems and methods for the distribution of data in a hierarchical database via placeholder nodes

Description:
FIELD 
     The present teachings relate to systems and methods for the distribution of data in a hierarchical database via placeholder nodes, and more particularly to systems and techniques for inserting programmatic placeholder nodes into hierarchical data stores to insert subsequent child nodes to perform data spreading or other operations. 
     BACKGROUND OF RELATED ART 
     In networked database technologies, hierarchical databases such as online analytical processing (OLAP) databases, extensible markup language (XML)-based data stores, and others are known. During operations with hierarchical data stores, it is sometimes necessary or desirable to add or insert additional data values into nodes which lie beneath the parent node in the hierarchy. For instance, if a parent node stores financial data reflecting annual profit for a corporation or other entity, it may be desired at the same time or a later time to insert lower-level breakdowns of that data over smaller intervals. For example, it may be desired to insert child nodes which store quarterly or monthly profit for that entity. In general, the process of pushing or distributing data down to child nodes or other destinations in the database structure can be referred to as “spreading” the data. 
     In known database platforms, the ability to perform spreading operations can be constrained or limited by limitations in the data structures and logical operations permitted on those platforms. For one, while platforms may exist which permit a user to insert a new child node at a lower level in relation to a parent node, data may only be distributed down from one parent at a time. If, for instance, annual profit is intended to be expanded or spread down to quarterly profit entries over the last ten years or some other group of years, the user may be forced to manually insert the child nodes and manually perform the spreading, year by year. 
     For another, when performing distribution of data between nodes or levels in a hierarchical data store, the order in which spreading is performed can have effects which the database engine does not take into account. For instance, when spreading annual profit down to quarterly nodes, it may be necessary to check for special charge offs or other factors against profit in a given quarter, or profit for a first fiscal quarter may be affected by a carry-over entry from the previous fiscal year end. Other factors or dependencies can apply, but existing database platforms do not permit the incorporation of dependency rules or other logic to ensure data accuracy or integrity. Other shortcomings in existing database engines exist. It may be desirable to provide systems and methods for the distribution of data in a hierarchical database via placeholder nodes which permit the insertion of child levels and distribution of data from multiple parent nodes at the same time, and which permit dependency rules or other logic to be applied. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the present teachings and together with the description, serve to explain the principles of the present teachings. In the figures: 
         FIG. 1  illustrates an overall system in which for systems and methods for the distribution of data in a hierarchical database via a placeholder can be implemented, according to various embodiments; 
         FIG. 2  illustrates an illustrative distribution of data from one or more parent levels to one or more child levels in a hierarchical data store, according to various embodiments; 
         FIG. 3  illustrates an illustrative hardware configuration of hardware that can implement a database engine, consistent with various embodiments of the present teachings; and 
         FIG. 4  illustrates overall data aggregation processing to generate distributions of data to lower hierarchical levels via placeholder nodes, according to various embodiments. 
     
    
    
     DESCRIPTION OF EMBODIMENTS 
     Embodiments of the present teachings relate to systems and methods for the distribution of data in a hierarchical database via placeholder nodes. More particularly, embodiments relate to platforms and techniques for accessing a set of hierarchical data, such as data stored in OLAP, XML, or other data sources, and manipulating that data for distribution or spreading to lower hierarchical levels. In embodiments, a set of placeholder nodes can be associated with a set of parent nodes, to act as points for insertion for child nodes or other lower level structures, at a current or later time. In embodiments, the placeholder nodes can store linkages to one or more parent nodes, and in embodiments can be invisible to users of the associated database engine until viewing or spreading operations are desired. In embodiments, the set of placeholder nodes can also further represent programmatically manipulable objects, which, for instance, encode inheritance rules, output pipes, or other linkages, or other logic or functions for the subsequent child nodes inserted in their place or at their location. In embodiments, the set of placeholder nodes can be generated, configured, and managed by a spreading tool of an associated database engine which manages the overall hierarchical data store. 
     When the spreading of data to child nodes or levels is desired, a user can access the spreading tool and view and manipulate the set of placeholder nodes to insert one or more sets of child nodes configured to receive data from, or data derived from, the corresponding parent node. In embodiments, the spreading tool and/or other logic can access the set of placeholder nodes involved in distribution activity, and use those nodes as insertion points to populate the hierarchical data store with new, additional, and/or updated child nodes to receive data. In embodiments, identical, and/or or related placeholder nodes can be associated with more than one parent node, so that, among other things, a set of child nodes and subsequent distribution of data can be performed from multiple parent nodes at the same time. In embodiments, the spreading tool can delete the set of placeholder nodes when a spreading operation or other distribution has been completed. In embodiments, the spreading tool can in addition or instead retain any placeholder nodes used in a distribution of data to child nodes, for instance to maintain a record of the distribution activity. In embodiments, the spreading tool can access and apply a set of spreading rules and/or other logic to ensure data integrity or accuracy in view of potential data dependencies, data formatting requirements, and/or other factors affecting the distribution or computation of data stored in or related to the hierarchical database. 
     Reference will now be made in detail to exemplary embodiments of the present teachings, which are illustrated in the accompanying drawings. Where possible the same reference numbers will be used throughout the drawings to refer to the same or like parts. 
       FIG. 1  illustrates an overall system  100  in which systems and methods for the distribution of data in a hierarchical database via placeholder nodes can operate, according to various embodiments. A set of clients  108  can communicate with a database engine  102  via one or more network  130 . database engine  102  can be or include storage, hardware, software, and/or other resources to execute database operations, such as accessing and manipulating OLAP data stores, XML data stores, other database stores, engines, or applications, statistical applications, spreadsheet applications, or other services or applications. database engine  102  can communicate with and manage a hierarchical data store  104 , such as an OLAP database, an XML-based database, and/or other data store. Set of clients  108  can be or include, for example, a set of local or remote desktop computers, laptop computers, wireless devices, and/or other machines or devices which communicate with one or more network  130  can be or include, for example, the Internet or other public or private networks. database engine  102  can be or include a server with associated memory, storage, and other resources configured to receive database requests from one or more clients in set of clients  108 , and interpret that request to perform database operations on data maintained in data store  104 . 
     As likewise shown in  FIG. 1 , a user of a client in set of clients  108  can invoke or instantiate spreading tool  106  of database engine  102  via a local application or interface, such as a Web browser, database application, or other software. Spreading tool  106  can, in general, contain logic, storage, and/or other resources to effectuate the distribution, transfer, copying, or other communication of data from parent or other upper-level nodes in data store  104  to child nodes or other destinations via a set of placeholder nodes. In aspects, the set of placeholder nodes can as placeholders, and can be stored in reserve storage and/or memory locations which can act as insertion points for new or modified child nodes for levels of data that a user may later choose to insert. In embodiments, each placeholder node  114  can act not merely or only as a temporary, shadow, or otherwise passive storage location or object, but as a programmatically configurable object which is capable of establishing inheritance and other properties for the set of child nodes derived from that placeholder. In embodiments, during the distribution of data to any inserted child nodes, spreading tool  120  can access a set of spreading rules  132  to ensure that functional or other dependencies, data formatting, and other data integrity requirements are met. 
     More particularly, as shown, for example, in  FIG. 2 , the hierarchical data store  104  can comprise hierarchical data structures including, for instance, a set of parent nodes  112 . Set of parent nodes  112  can be linked to a root node  136 , illustratively shown as profit for a corporation, although it will be understood that any other data type, category, or format can be used. Set of parent nodes  112  are illustratively shown as encoding a set of annual profit data arranged in parent nodes each representing one year, although, again, other data types and configurations can be used. In aspects, data other than financial data, such as, for example, medical, technical, scientific, and/or other data can be processed according to embodiments of the present teachings. 
     In embodiments as shown, the set of parent nodes  112  can have an associated set of placeholder nodes  114  linked to them. In embodiments, each parent node in set of parent nodes  112  can have one or more placeholder nodes associated with it. In embodiments, only a subset of set of parent nodes  112  can have an associated set of placeholder nodes  114  established or linked to them. In embodiments, each of the placeholder nodes can constitute a “leaf” node, that is, a node not having any further child nodes. In embodiments, each placeholder node in set of placeholder nodes  114  can occupy a lower level in data store than  104  than its associated parent node, although in aspects the set of placeholder nodes  114  need not all occupy the same level of data store  104 . In embodiments, set of placeholder nodes  114  can define data fields and formats that can be used to populate a set of child nodes  116  that will be inserted into data store  104 . 
     In embodiments, when a user of set of clients  108  or other user wishes to access data store  104  and insert new or updated child nodes in that data structure, the user can access spreading tool  106  via network  130 . The user can use spreading tool  106  to locate one or more placeholder nodes in set of placeholder nodes  114  via which the user wishes to add one or more set of child nodes  116 . In aspects, a user may for instance access a placeholder node in set of placeholder nodes  114  associated with an annual profit node for the year 2001 in set of parent nodes  112 . The user can insert, for instance, set of four child nodes representing quarterly profit derived from the annual profit parent node for that year. According to embodiments, the user can direct spreading tool  106  to initiate the spreading or distribution of annual profit data down to the lower-level set of child nodes  116 . 
     Spreading tool  106  can perform the distribution by dividing the annual profit data encoded in the associated parent node (e.g. year 2001 profit as shown) equally into four quarters, and transmitting the resulting set of spread data  134  to each of the set of child nodes  116  associated with that parent node. In embodiments, the set of spread data  134  need not be equally divided over all child nodes associated with the parent node. In embodiments, the same or different set of spread data  134  can be generated and distributed from more than one parent in set of parent nodes  112  at the same time, or as part of the same operation. Other types of child nodes, levels, and formats of set of spread data  134  can be used, including, for instance, monthly profit nodes, as likewise shown in  FIG. 2 . Other structures, layers, and relationships between levels of information stored in data store  104  can be used. 
     In embodiments, in addition to defined data structures, each node in set of placeholder nodes  114  can encode or represent a set of specifications for inheritance by set of child nodes  116 , or other programmatic information for determining the configuration of set of child nodes  116  or any aspect of their operation. In embodiments, set of placeholder nodes  114  can serve as passive data-structure objects, acting as a reserve storage or insertion point, a database flag, a database event trigger. In embodiments, increased flexibility in data spreading operations can be enhanced by establishing and utilizing set of placeholder nodes with a set of attributes and/or metadata to allow those nodes to operate as programmatic objects in themselves. For instance, in embodiments, set of placeholder nodes  114  can be configured as an event or function that triggers a rule, and can for example form part of the object inheritance from one or more parent nodes, themselves. For example, set of placeholder nodes  114  can be configured to force set of spread data  134  to conform to U.S. dollar figures or format, and for instance to perform currency conversions to that denomination automatically. For further example, set of placeholder nodes  114  can store linkages, interfaces, mappings, and/or relationships to other nodes that will require outputs from the set of child nodes  116 , once those nodes are installed and populated with data. Other programmatic settings can be configured in set of placeholder nodes  114 . In embodiments, the programmatic settings stored in or associated with set of child nodes  114  can be updated or extended at any time. 
     It may be noted that in embodiments, spreading tool  106  can condition or process the set of spread data  134  transmitted to one or more child nodes before sending that information, to ensure data integrity or consistency. In embodiments, spreading tool  106  can invoke or access set of spreading rules  132  and/or other logic to ensure that data spread from set of parent nodes  112  is distributed to child nodes in a correct or consistent order. In embodiments, set of spreading rules  132  can specify that certain child nodes whose data or output is needed by other nodes are the first to receive set of spread data  134 . In embodiments, set of spreading rules  132  can specify that set of spread data  134  be encoded in or converted to formats required by recipient nodes or other destinations. In embodiments, set of spreading rules  132  can enforce or apply other logic or rules to ensure that set of spread data  134  is transmitted, formatted, computed, or otherwise manipulated to preserve the consistency or integrity of set of spread data  134  and/or any calculations, outputs, and/or services that use or depend on that data. It may be noted that in embodiments, the same or different spreading rules in set of spreading rules  132  can be applied to distributions from two or more parent nodes, in cases where a distribution is carried out from more than one parent node at a time. 
       FIG. 3  illustrates an exemplary configuration of database engine  102  which can be used in systems and methods for the distribution of data in a hierarchical database via placeholder nodes, according to embodiments. In embodiments as shown, database engine  102  can comprise a processor  120  communicating with memory  122 , such as electronic random access memory, operating under control of or in conjunction with operating system  126 . Operating system  126  can be, for example, a distribution of the Linux™ operating system, the Unix™ operating system, or other open-source or proprietary operating system or platform. Processor  120  also communicates with data store  104 , such as a local or remote database, which can be stored, for instance, on one or more hard drives, optical drives, magnetic drives, electronic memory, and/or other storage. Processor  120  further communicates with network interface  124 , such as an Ethernet or wireless data connection, which in turn communicates with one or more network  130 , such as the Internet or other public or private networks. Processor  120  can, for example, communicate with set of clients  108  via one or more network  130 . Processor  120  also communicates with database engine  102 , spreading tool  106 , and/or and other resources to control the processing of hierarchical data including transfer of data between set of parent nodes  112 , set of placeholder nodes  114 , set of child nodes  116 , and/or other nodes, entries, fields, and/or locations. Other configurations of database engine  102 , associated network connections, and other hardware and software resources are possible. 
       FIG. 4  illustrates a flowchart of data processing operations that can be used in systems and methods for the distribution of data in a hierarchical database via placeholder nodes, according to various embodiments. In  402 , processing can begin. In  404 , a hierarchical data store  104  can be accessed via database engine  102 , for instance, by request from a client in set of clients  108 , or other request. In  406 , one or more parent nodes in set of parent nodes  110  can be selected with which or in which to insert a set of placeholder nodes  114 . In  408 , set of placeholder nodes  114  can be associated with one or more parent nodes in set of parent nodes  110 , for instance, by selection or input by a user. In embodiments, a functional relationship between the one or more parent nodes and set of placeholder nodes  114  can be defined, such as, for example, to define set of placeholder nodes  114  to contain or represent a division of annual profit stored in the associated parent node over quarters or other periods. In embodiments, a functional relationship need not be defined when configuring set of placeholder nodes  114 . In embodiments, a functional relationship can be defined or updated at various later times. 
     In  410 , set of placeholder nodes  114  can be stored to data store  104  or other storage, as appropriate. In  412 , spreading tool  106  and/or other logic can receive user input or other instructions to insert one or more child nodes of one or more corresponding parent node(s) at one or more insertion points represented by one or more placeholder nodes in set of placeholder nodes  114 . For example, a set of four child nodes representing annual quarters can be established as lower level nodes of a parent node encoding annual profit for a corporation or other entity. In embodiments, the inserted set of child nodes  116  can each occupy the same hierarchical level in data store  104 . It may be noted that in embodiments, there may be a one-to-one relationship between a placeholder node and a child node to be introduced at the insertion point represented by the placeholder node. In embodiments, more than one child node may be inserted at the insertion point represented by the placeholder node. Likewise, in embodiments, two or more child nodes in the set of child nodes  116  can occupy different hierarchical levels in data store  104 . In embodiments, the inserted set of child nodes  116  can be associated with more than one parent node. For example, in instances the same set of child nodes  116  can be duplicated as newly inserted nodes linked to two or more parent nodes. 
     In  414 , the set of child nodes  116  identified or configured for insertion can be established and/or built in data store  104 , for instance, by storing links to one or more parent nodes along with metadata such as functional relationships with the parent node(s) and/or fellow child nodes. Other configuration data can be specified and/or stored. In  416 , spreading tool  106  can access a set of spreading rules  132  to ensure that dependencies are observed, and/or other rules are applied in the generation of set of child nodes  116  and/or the distribution or insertion of data into those nodes. For instance, before storing profit to a child node, for example, for Q2 of year 2010, spreading tool  106  can check set of spreading rules  132  whether another node for charge-offs or other special transactions or modifications applies to that time period. For further instance, spreading tool  106  can check set of spreading rules  132  to determine whether a certain type of data format is required for compatibility with the corresponding parent node, an additional node which will receive output from the child node, or by other nodes or functions of data store  104  or otherwise. 
     In  418 , data from the corresponding parent node(s) can be inserted, distributed, and/or spread to one or more associated child nodes in set of child nodes  116 . For instance, data for annual profit can be divided over four quarters and spread or inserted into a set of child nodes  116  representing that set of time periods or other intervals. In  420 , data engine  102  can run or perform database operations on data store  104 , including set of parent nodes  110  and/or any newly configured or updated set of child nodes  116 , for instance, to run reports on that information, merge data between nodes or files, or perform other computations/operations. In  422 , spreading tool  106  can store one or more nodes of set of placeholder nodes  114 , for instance to data store  104  or other local or remote storage, to store a log of the configuration history of data store  104 , data distributions performed in data store  104 , or other records of database operations. In embodiments, spreading tool  106  can also or instead delete one or more nodes of set of placeholder nodes  114 , for instance, when it is determined that the placeholder node(s) will no longer be needed for spreading or other data operations. In  424 , processing can repeat, return to a prior processing point, jump to a further processing point, or end. 
     The foregoing description is illustrative, and variations in configuration and implementation may occur to persons skilled in the art. For example, while embodiments have been described in which data store  104  can consist of or contain explicit OLAP and/or XML-based databases, in embodiments, other types or categories of data sources or formats can be included in data store  104 . 
     Similarly, while embodiments have been described in which a single database engine  102  generates and manages data store  104 , in embodiments multiple database engines, for example hosted on multiple servers, can cooperate to generate multiple parent/child mappings, placeholder linkages, distributions, and/or other actions to manage and manipulate hierarchical data. Similarly, while embodiments have been described in which data is hosted and managed in one data store  104 , in embodiments, multiple data stores can be used. For further example, while embodiments have been described in which database engine  102  supports database operations including data spreading in connection with a set of local or remote clients  108 , in networked fashion, in embodiments database engine  102  and/or other machines or resources can be configured to operate on a stand-alone basis. Other resources described as singular or integrated can in embodiments be plural or distributed, and resources described as multiple or distributed can in embodiments be combined. The scope of the present teachings is accordingly intended to be limited only by the following claims.