Abstract:
User Defined Functions (UDFs) for a parallel database system are enhanced by making memory persist even when the UDFs terminate. The memory can be shared between different instances of the UDF and the memory can be custom mapped, encrypted, and use custom security.

Description:
RELATED APPLICATIONS  
       [0001]    The present application is a non provisional application of, is co-pending with, and claims the benefit of Provisional Application Ser. No. 61/329,887, entitled “Global and Persistent Memory for User-Defined Functions in a Parallel Database,” filed on Apr. 30, 2010; the disclosure of which is incorporated by reference herein. 
     
    
     BACKGROUND 
       [0002]    User Defined Functions don&#39;t have the ability to retain data in memory that is retained longer than the length of execution of the function. They are also limited to information passed into them via their parameters. In addition in a parallel database it is not possible to share any data between different parallel instances of the User Defined Functions (UDF) running on different virtual processors and nodes for a request on the database. 
         [0003]    SUMMARY 
         [0004]    In various embodiments, techniques for global and persistent memory of User Defined Functions (UDFs) in a parallel database are presented. According to an embodiment, a method for providing global and persistent memory for UDFs is presented. 
         [0005]    More particularly, a command is received from a user-defined function (UDF) of a database system to map memory that is to be used by the UDF. Next, a block of data is mapped in the database system, the block of data acquired from one or more tables in response to the command. Finally, the mapping is provided within the memory, and the mapping is accessed and is managed by the UDF via set commands issued to the mapping within the memory. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0006]      FIG. 1  is a method for providing global and persistent memory for UDFs, according to an example embodiment. 
           [0007]      FIG. 2  is a diagram of another method for providing global and persistent memory for UDFs, according to an example embodiment. 
           [0008]      FIG. 3  is a diagram of a global and persistent memory system, according to an example embodiment. 
       
    
    
     DETAILED DESCRIPTION 
       [0009]    The embodiments (methods and techniques) presented herein are implemented in computer or processor-readable storage medium as instructions that execute on processors (hardware devices). The processors are specifically configured to execute the techniques taught herein and below. 
         [0010]    The embodiments presented herein create a variety of capabilities, such as:
       1. The ability to define preset data that can be mapped by a UDF.   2. The ability to modify that data individually specific to each instance of the UDF executing in each virtual processor.   3. The ability to share that data globally so that every instance sees the same data.   4. The ability to retain the data for subsequent invocations of the UDF.   5. The ability to reinitialize specific subsets of the mapped data at specific SQL boundaries pertaining to SQL transaction logic. Individual mapped memory can be automatically reinitialized on the following boundaries:
           a. System boundary—persistent until the database is restarted.   b. Session boundary—reinitialized for every new database session and local to the session.   
           c. Transaction boundary—reinitialized at the start of every transaction for a session.
           d. Request boundary—reinitialized at the start of every request for a session.   e. User boundary—established once with each new user and persists across sessions for the same logged in user. It persists until the database is restarted.   f. Role boundary—established once with each usage of a role by a session. It persists until the database is restarted.   g. External Routine boundary—established once for each specific routine. All instances of the same external routine share the same mapped memory. It persists until the database is restarted.   
           6. The ability to map different mappings based on the current user, role, or external routine based on current context.   7. The ability to define read only, read/write and globally modifiable memory mappings of the data   8. The ability to lock read/write memory so that it can be updated without interference from other update UDFs or readers trying to read it while it is being updated.   9. The ability to share the mappings across boundaries for mappings of different types as indicated in point 5.   10. The ability to specify which page of a multiple pages of read only memory to map.   11. The ability to specify which revisions are mapped and when based on defined conditions.       
 
         [0029]    The embodiments herein provide a database containing the user defined global &amp; persistent data in ordinary database tables. The data is organized into sets with each set containing predefined data of specific length and type. The initial data is either provided with a BLOB containing the data to be established or it can be null in which case when it is mapped it is initialized to zero for the specific length. 
         [0030]    The data for the sets is updated via provided system procedures to add a new set, remove a set, or change data in the set and to provide revisions of a set that are activated at specific predetermined conditions. The procedures update the normal specific database tables with the data and provide integrity checking and access rights checking. 
         [0031]    When a UDF is associated with a set by adding a new clause “USING GLOP SET name” to the UDF create statement the UDF can map all data associated with that set by providing a call FNC_Get_GLOP_Map that provides the access to the mappings in the set in the prescribed manner as defined by the set. 
         [0032]    The UDF can then read or write the mapped data as needed for its own purposes. It can lock the data with an FNC_GLOP_Lock and unlock it with an FNC_GLOP_Unlock call for update purposes. 
         [0033]    The UDF can remap the original context of the specific type of read/write mapped memory with an FNC_GLOP_Map_Page call. It can also use that same call to map different “pages” of read only mapped memory by specifying the page to map. 
         [0034]    The particular UDF instance can share mapped memory globally to all processors on all nodes by calling FNC_GLOP_Global_Copy to do that. 
         [0035]    The memory is managed and mapped as needed upon first usage. On first usage if the set has never been accessed processing is undertaken to establish the set and map it on every virtual processor and all nodes on the database system. This ensures that everyone sees exactly the same data initially. If two UDFs try to establish the same set at the same type one will win out since it requires a global semaphore to allow only one instance to access to the setup logic. Once set up, the second caller sees the established set. The mapping information is retained in a memory cache. This cache has the mapping information for each set and all associations needed to track what is using the set according to the set type (see point 5). When an instance of a UDF maps a set (what is called a Quick Access structure) is created so that on subsequent calls to the UDF the complicate logic to find the appropriate set information does not have to be executed again. 
         [0036]    The memory in a set is mapped based on the current context of the request that is executing:
       1. For session type mapping each session has its own version of that memory.   2. For transaction type mapping each transaction of a session has its own version of that memory. This is different and separate from the session type mapping. It is discarded at the end of the transaction.   3. For a request type mapping each request of a session has its own version of that memory. It is discarded at the end of the request.   4. For a ‘user’ type mapping each different user can have a different version. If no mapping is specified for a particular user it maps nothing.   5. For a ‘role’ type mapping each different role can have a different version. If no mapping is specified for a particular role it maps nothing.   6. For an ‘external routine’ type mapping it only maps something if the specified external routine (UDF) is executing otherwise nothing is mapped. Different external routines can have different data mapped for this mapping even though they belong to the same set.       
 
         [0043]    Conventional approaches simply provide a scratch pad that a UDF can use on subsequent calls. This does not provide a way to provide preset configurable data to the UDF. While that can be done by accessing a file or some pipe logic to transfer the data, the process is slow and awkward to manage and it can&#39;t be shared among all virtual processors on multiple nodes. Conventional techniques do not solve the problems discussed herein in the elegant manner taught by embodiments of the invention and conventional approached do not provide all the flexibility that the teachings herein encompass. 
         [0044]    The following benefits are achieved with the teachings presented herein:
       1. It is easy to set up a GLOP set simple standard SQL invoked stored procedures.   2. It is easy for a UDF to map the data.   3. It is flexible in that a site can provide business rules in the mapped sets that a UDF can access and act upon without forcing it to be passed as a parameter.   4. Data encryption keys can be provided in the mapped memory set to encrypt or decrypt data. The keys can be provided in the user mapped memory. That way the keys can be different for different users providing decryption capabilities based on user privileges. This is because the mapping calls always maps the correct ‘USER’ type of mapped memory associated with that user and does not map anything if the user does not have an associated mapping in the set.   5. It is fast because mappings are set up and not torn down unless needed. Only the memory address and length information has to be provided to the UDF.       
 
         [0050]    It is within this context that specific embodiments of the invention are now discussed with reference to the  FIGS. 1-3 . 
         [0051]      FIG. 1  is a method  100  for providing global and persistent memory for UDFs, according to an example embodiment. The method  100  (hereinafter referred to as “external memory manager”) is implemented, resides, and is programmed within a non-transitory machine-readable storage medium for execution by one or more processors of a network. The network may be wired, wireless, or a combination of wired and wireless. 
         [0052]    At  110 , the external memory manager receives a command from a UDF of a database system to map memory that is to be used by the UDF. This can be done on initialization of the UDF or after the UDF is up and running and makes the request via the command. The external memory manager is a process of a parallel database system and provides persistent and globally accessible memory to UDFs in the manners discussed above and below. 
         [0053]    At  120 , the external memory manager maps a block of data in the database system. The block of data is acquired from one or more tables of the database system. This mapping occurs in response to the command for the mapping from the UDF. It is noted that a profile or configuration of the UDF may send the command or trigger an event that generates the command to produce the mapping. Also, the data is stored in the database as persistent and non volatile storage, so it can be used even when the UDF is terminated or restarted, as discussed above and some more below. The location of the data, the type of the data, and the length of the data can be defined via configuration or policies. In some cases, the UDF can define the block of data as well with management operations, discussed below. 
         [0054]    At  130 , the external memory manager provides a mapping within the memory. The mapping is accessed and managed by the UDF via set commands issued to the mappings within the memory. 
         [0055]    According to an embodiment, at  140 , the external memory manager makes management operations available to the UDF for managing the mapping and the data within the tables, which are accessed via the mappings. 
         [0056]    Continuing with the embodiment of  140  and at  141 , the external memory manager re-maps the block of data via a remap management operation issued by the UDF. 
         [0057]    Continuing with the embodiment of  140  and at  142 , the external memory manager selectively makes portions of the block of data read only, read and write accessible, and globally modifiable via the mapping as instructed by the UDF using a particular management operation. 
         [0058]    Continuing with the embodiment of  140  and at  143 , the external memory manager locks portions of the mapping associated with specific portions of the block of data based on a particular management operation received from the UDF to ensure that updates to the data affected can be made without interference from other UDFs accessing the mapping. 
         [0059]    Continuing with the embodiment of  140  and at  144 , the external memory manager permits selective portions of the mapping to be shared with other mappings as instructed by the UDF via a particular management operation. 
         [0060]    Continuing with the embodiment of  140  and at  145 , the external memory manager receives revisions to selective portions of the block of data along with conditions from the UDF via a particular management operation where the revisions are not made to the block of data until the conditions are satisfied. 
         [0061]    Continuing with the embodiment of  140  and at  146 , the external memory manager shares the mappings with other instances of the UDF based on a particular management operation received from the UDF. 
         [0062]    In another case, at  150 , the external memory manager alters or changes the mappings based on a role that is dynamically assigned or assumed by the UDF during processing of the UDF. 
         [0063]    In another scenario, at  160 , the external memory manager permits different mappings to the block of data to be accessed by other UDFs and allows each UDF to maintain its own version of the block of data without interfering with remaining UDFs that are modifying the block of data with their independent mappings. 
         [0064]    In yet another situation, at  170 , the external memory manager retains a state of the block of data upon termination of the UDF to provide that state of the block of data back to the UDF when it is subsequently reestablished for processing. 
         [0065]    In another embodiment, at  180 , the external memory manager automatically reinitializes the mappings on a database boundary, a session boundary, a transaction boundary, a request boundary, a user boundary, a role boundary, and/or an external routine boundary. 
         [0066]    Still further, at  190 , the external memory manager permits different mappings to the block of data to be accessed by others based on a current user, a current role of the user, and/or a current context of an external routine that wants to access the mappings. 
         [0067]      FIG. 2  is a diagram of another method  200  for providing global and persistent memory for UDFs, according to an example embodiment. The method (herein after referred to as “UDF memory manager”) is implemented, resides, and is programmed within a non-transitory machine-readable storage medium for execution by one or more processors of a network. The network may be wired, wireless, or a combination of wired and wireless. 
         [0068]    The UDF memory manager presents another and in some cases enhanced perspective of the external memory manager represented by the method  100  and discussed above with reference to the method  100 . 
         [0069]    At  210 , the UDF memory manager superimposes a set data structure onto a block of data housed in one or more database tables of a database. That is, the UDF memory manager logically represents the block of data as if it were a set data structure. 
         [0070]    At  220 , the UDF memory manager generates mappings for addressing data represented in the set data structure. Examples of this were provided above with reference to GLOP addressing. 
         [0071]    At  230 , the UDF memory manager provides the mappings in memory for access by the one or more UDFs. 
         [0072]    At  240 , the UDF memory manager designates a particular UDF to act as a manager of the mappings. 
         [0073]    According to an embodiment, at  250 , the UDF memory manager reestablishes the mapping when a particular UDF that had terminated processing is reestablished and is reprocessed. 
         [0074]    In another situation, at  260 , the UDF memory manager creates custom versions of the mappings within the memory for use by different ones of the UDFS. 
         [0075]    In yet another case, at  270 , the UDF memory manager enforces integrity checking and access control against the set data structure based on policy when the set data structure is accessed by the UDFs via the mappings from the memory. 
         [0076]    In another scenario, at  280 , the UDF memory manager provides set operations to the UDFS for use against the mappings to access and manipulate the data associated with the set data structure. 
         [0077]      FIG. 3  is a diagram of a global and persistent memory system  400 , according to an example embodiment. The components of the global and persistent memory system  400  are implemented, reside, and are programmed in non-transitory machine-readable storage medium. Moreover, the global and persistent memory system  400  includes processors that are specifically configured to process the components and the global and persistent memory system  400  is operational over a network. The network may be wired, wireless, or a combination of wired and wireless. 
         [0078]    In an embodiment, the global and persistent memory system  400  implements among other things the method  100  of the  FIG. 1  and the method  200  of the  FIG. 2 . 
         [0079]    The global and persistent memory system  400  includes a set manager  301  and a UDF  302 . Each of these and their interactions with one another will now be discussed in turn. 
         [0080]    A processor is configured with the set manager  301 . The set manager  301  is implemented, resides, and is programmed in a non-transitory machine-readable medium and executes on the processor. Example aspects of the set manager  301  were provided above in detail with reference to the methods  100  and  200  of the  FIGS. 1 and 2 , respectively. 
         [0081]    The set manager  301  is configured to organize blocks of data acquired from database tables of a database into a set data structure and provide access to data underlying the set data structure via mappings. The mappings are then provided to the UDF via memory. 
         [0082]    The processor or another different processor is configured with the UDF  302 . The UDF  302  is implemented within, resides within, and is programmed within a non-transitory machine-readable medium and executes on the processor and/or the different processor. Example aspects of the UDF  302  were provided above with reference to the methods  100  and  200  of the  FIGS. 1 and 2 , respectively. 
         [0083]    The UDF  302  is configured to use the mappings to manipulate and manage the data that underlies the set data structure. 
         [0084]    According to an embodiment, the UDF  302  is further configured to share the mappings with other UDFs, request the mappings be re-mapped, and perform other administrative functions on the mappings. 
         [0085]    The above description is illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. The scope of embodiments should therefore be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.