WO2013046360A1 - オブジェクト管理装置、およびオブジェクト管理方法 - Google Patents

オブジェクト管理装置、およびオブジェクト管理方法 Download PDF

Info

Publication number
WO2013046360A1
WO2013046360A1 PCT/JP2011/072212 JP2011072212W WO2013046360A1 WO 2013046360 A1 WO2013046360 A1 WO 2013046360A1 JP 2011072212 W JP2011072212 W JP 2011072212W WO 2013046360 A1 WO2013046360 A1 WO 2013046360A1
Authority
WO
WIPO (PCT)
Prior art keywords
proxy
proxy object
objects
reference information
function
Prior art date
Application number
PCT/JP2011/072212
Other languages
English (en)
French (fr)
Inventor
康志 宮田
博泰 西山
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to JP2013535711A priority Critical patent/JP5668146B2/ja
Priority to PCT/JP2011/072212 priority patent/WO2013046360A1/ja
Publication of WO2013046360A1 publication Critical patent/WO2013046360A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation

Definitions

  • the present invention relates to an object management apparatus and an object management method for managing objects that realize indirect data access.
  • the thread A writes (rewrites) the numerical value C held in the internal information of the object
  • the thread B reads (reads) the numerical value C.
  • the write is performed to decrease the numerical value C by 1.
  • the thread B obtains the numerical value C as 1 by reading, executes write, and sets the numerical value C to 0.
  • thread A executes a write with a numerical value C of 0 between read and write by thread B
  • thread B executes a write even though numerical value C is 0, C is set to ⁇ 1, and the numerical value C is different from the expected 0.
  • C is set to ⁇ 1
  • the numerical value C is different from the expected 0.
  • the proxy object is a reference to an object to be read / write, an interface for reading / writing the internal information (data) of the object, and a reference object by detecting the write to the thread.
  • This object has a function to copy to the local area.
  • each thread holds this proxy object in its local area, and accesses (indirect reference) an object that is accessed from multiple threads in the cache through the proxy object, thereby realizing Copy on Write.
  • Patent Document 1 discloses a technique for generating a proxy object in a case where a plurality of objects to be persisted are connected by a reference relationship and hold a multi-level reference relationship.
  • a proxy object PA and a proxy object PB are generated and transferred to the object A and the object B, respectively. Indirect reference is realized.
  • the reference C is changed from the object A to the proxy object PB.
  • Proxy object holds the reference information to the object that the proxy object refers to. Therefore, if the proxy object is held in the memory in order to realize data processing using the proxy object, the proxy object consumes the memory in addition to the normal object. In the technique described in Patent Document 1, one proxy object is generated for one object. Therefore, memory consumption by proxy objects occurs in proportion to the number of objects, and the number of objects that can be cached in memory decreases.
  • An object management apparatus includes a memory capable of storing an object and a processor.
  • the processor stores a preceding object and one or more succeeding objects that can be referenced from the preceding object in a memory, includes reference information for the preceding object, and provides a reference function that makes it possible to refer to the preceding object.
  • a proxy object in the former stage and a latter proxy object that includes reference information for the latter object and provides a reference function for the latter object are generated and stored in the memory, and the latter proxy object is stored in the former proxy object. Stores reference information to the object.
  • FIG. 1 is an example of a configuration diagram of a computer according to the first embodiment.
  • FIG. 2 is an example of an object management table according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of the data structure of the proxy object according to the first embodiment.
  • FIG. 4 is a flowchart of object registration processing according to the first embodiment.
  • FIG. 5 is an example of an object index table according to the first embodiment.
  • FIG. 6 is a flowchart of the proxy object generation / setting process according to the first embodiment.
  • FIG. 7 is a flowchart of object acquisition processing according to the first embodiment.
  • FIG. 8 is a flowchart of object data manipulation processing according to the first embodiment.
  • FIG. 9 is a flowchart of object re-registration processing according to the first Hub.
  • FIG. 10 is an example of a configuration diagram of a computer according to the second embodiment.
  • FIG. 11 is a flowchart of object registration processing according to the second embodiment.
  • FIG. 12 is a flowchart of representative proxy object provision processing according to the second embodiment.
  • FIG. 13 is a diagram illustrating the object state before the delayed proxy object reference setting process according to the fourth embodiment.
  • FIG. 14 is a flowchart of object acquisition processing according to the fourth embodiment.
  • FIG. 15 is a flowchart of object operation processing according to the fourth embodiment.
  • FIG. 16 is a diagram illustrating the object state after the delayed proxy object reference setting process according to the fourth embodiment.
  • FIG. 17 is a diagram illustrating the object state before the delayed proxy object generation process according to the fourth embodiment.
  • FIG. 18 is a flowchart of the delayed proxy object generation process according to the fifth embodiment.
  • FIG. 19 is a diagram illustrating the object state after the delayed proxy object generation process according to the fifth embodiment.
  • FIG. 20 is a diagram illustrating proxy objects that represent indirect references to collections according to the sixth embodiment.
  • FIG. 21 is a flowchart of the indirect reference process to the collection element according to the sixth embodiment.
  • FIG. 22 is a schematic diagram illustrating an example of the data configuration of a proxy object that implements indirect reference to an object according to the second embodiment.
  • FIG. 23 is a diagram illustrating an example in which the representative proxy object according to the second embodiment is duplicated and used.
  • FIG. 24 is a schematic diagram illustrating an example of program code for generating a proxy object according to the first embodiment.
  • FIG. 25 is a schematic diagram illustrating an example of program code for generating a reference from a proxy object to an object according to the first embodiment.
  • FIG. 26 is an example of a program code management table according to the first embodiment.
  • FIG. 27 is a flowchart of proxy object program code generation processing according to the first embodiment.
  • xxx table various types of information may be described using the expression “xxx table”, but the various types of information may be expressed using a data structure other than the table. In order to show that it does not depend on the data structure, the “xxx table” can be called “xxx information”.
  • the subject of the process may be a processor in order to perform the determined process appropriately using a storage resource (for example, a memory) and / or a communication device.
  • the processing described with the xx part and the xx object as the subject may be processing performed by the processor.
  • a hardware circuit that performs part or all of the processing performed by the processor may be included.
  • the program may be installed in the computer from a program source.
  • the program source may be, for example, a program distribution server or a storage medium.
  • a data structure of a proxy object that can reduce the number of references to be followed when an indirect reference is made to an arbitrary object through a proxy object among objects having a reference relationship, and an example of an object management device Will be explained.
  • FIG. 1 is a configuration diagram of a computer according to the first embodiment.
  • a computer 101 which is an example of an object management apparatus, includes a memory 111, a CPU 112, a communication device 113, and a storage device 114 such as a hard disk.
  • the computer 101 can be realized using a general computer.
  • An input device 115 and a display device 116 can be connected to the computer 101.
  • the input device 115 is a device for inputting an instruction to the computer 101 such as a keyboard and a mouse, and accepts an input of an instruction such as starting a program.
  • the display device 116 is a display or the like, and displays the execution status and execution result of the processing by the computer 101.
  • the communication device 113 exchanges various data and commands with other devices via a LAN (Local Area Network) or the like.
  • the storage device 114 stores various programs 121 and data 122 for the computer 101 to execute processing.
  • the memory 111 holds various programs 121 executed by the computer 101 and temporary data 122.
  • the CPU 112 executes various programs stored in the memory 111. Specifically, the CPU 112 reads the program 121 and data 122 stored in the storage device 114 into the memory 111 and executes them.
  • the program 121 includes a user program execution unit 131, an object management unit 132, an object holding unit 133, an object structure analysis unit 134, a proxy object generation unit 135, a proxy object holding unit 136, and a proxy object reference setting unit 137.
  • the user program execution unit 131 includes program code for generating a proxy object and program code for generating a reference from the proxy object to the object.
  • FIG. 24 is a schematic diagram illustrating an example of a program code for generating a proxy object according to the first embodiment.
  • FIG. 25 is a schematic diagram illustrating an example of program code for generating a reference from a proxy object to an object according to the first embodiment.
  • the user program execution unit 131 includes program codes such as a program code (proxy object program code) 2501 that defines a proxy object and a program code (object program code) 2502 that defines an object.
  • program codes such as a program code (proxy object program code) 2501 that defines a proxy object and a program code (object program code) 2502 that defines an object.
  • the user program execution unit 131 gives data 250 (in this case, for example, 100) to data_1 (data 1) based on the definition of the object program code 2502, thereby creating the object 2504. Generated and held in the memory 111. At this time, the user program execution unit 131 also causes the object 2504 to retain information (ID or address of the object program code) that uniquely identifies the object program code 2502 that is the definition. According to this information, the object program code 2502 used for generation from the object 2504 can be specified.
  • ID information
  • the object program code 2502 used for generation from the object 2504 can be specified.
  • the proxy object generation unit 135 generates a proxy object 2503 based on the definition of the proxy object program code 2501 and stores it in the memory 111. At this time, the proxy object generation unit 135 causes the proxy object 2503 to retain information (the proxy object program code ID and address) that uniquely identifies the proxy object program code 2501 as the definition. According to this information, the proxy object program code 2502 used for generation from the proxy object 2503 can be specified.
  • the proxy object reference setting unit 137 calls the set description unit 2505 surrounded by a dotted line in FIG. 25, and inputs an address (reference information) to the object 2504 to the proxy object 2503. By this input operation, as indicated by an arrow 2506 in FIG. 25, a reference that can follow the object 2504 from the proxy object 2503 is set.
  • the proxy object program code 2501 that defines the proxy object 2503 that refers to the object 2504 needs to hold the address of the object 2504.
  • the proxy object program code 2501 may be created by the program creator who created the object program code 2502 and included in the user program execution unit 131. Further, when the CPU 112 reads the program 121 of the storage device 114 into the memory 111, the proxy object generation unit 135 may generate the proxy object program code 2501 based on the object program code 2502.
  • FIG. 27 is a flowchart of proxy object program code generation processing according to the first embodiment.
  • This proxy object program code generation process is executed, for example, before the user program execution unit 131 executes the process for the object.
  • the proxy object program code generation process reads the class, Runs before creating the object.
  • the proxy object generation unit 135 reads an object program code 2502 that defines an object (step 2801).
  • the proxy object generation unit 135 is a data I / F that operates on data_1 described in the object program code 2502, a data I / F that calls read and write, and an object address that materializes the object program code 2502.
  • Proxy object program code 2501 including a data structure having (reference information) is generated (step 2802).
  • the proxy object generation unit 135 gives an arbitrary proxy object ID to the generated proxy object program code (step 2803).
  • the proxy object ID, the proxy object program code name, and the object program code name are written in the same row of the program code management table 2600 (see FIG. 26) in the memory 111 (step 2804).
  • step 2802 Copy processing of the reference destination object is added. Specifically, for example, the copy process of the reference destination object indicated by copyOf is added to the head of the write process of the proxy object program code 2501. By this copy processing, it is possible to realize Copy on write for copying an object at the time of write.
  • the program code management table 2600 in which the object code name and the proxy object program code name are linked by the proxy object ID can be generated.
  • FIG. 26 is an example of a program code management table according to the first embodiment.
  • the program code management table 2600 stores a proxy object ID 2601, a proxy object program code 2602, and an object program code 2603 in association with each other.
  • the proxy object ID 2601 is identification information for uniquely identifying a proxy object.
  • the proxy object program code 2602 is the name of the proxy object program code for creating the corresponding proxy object.
  • the object program code 2603 is the name of the object program code for creating an object referenced by the corresponding proxy object.
  • the user program execution unit 131 is a user program created by a user who uses the computer 101.
  • the object management unit 132 displays the specific object and all of the objects that can be directly or indirectly referenced from the specific object in the object holding unit 133. Register as an object group.
  • the object structure analysis unit 134 generates the object management table 200 (see FIG. 2) by analyzing the object group registered in the object holding unit 133 and the reference destination of each object in the object group. For example, the object structure analysis unit 134 identifies the object program code associated with the object, identifies the proxy object ID corresponding to the object program code from the program code management table 2600, and registers it in the object management table 200.
  • FIG. 2 is an example of an object management table according to the first embodiment.
  • the object management table 200 stores an object ID 201, a reference destination ID 202, and a proxy object ID 203 in association with each other.
  • the object ID 201 is an ID that uniquely identifies a registered object.
  • the reference destination ID 202 is an object ID that uniquely identifies an object (subsequent object) that is a reference destination of the corresponding object. In addition, if there is no reference destination in the corresponding object, the reference destination ID is not stored.
  • the proxy object ID 203 is an ID that uniquely identifies a proxy object program code for realizing indirect reference to the corresponding object.
  • the proxy object ID 203 corresponds to the one registered in the program code management table 2600.
  • the proxy object generation unit 135 uses the object management table 200 to collect proxy objects that hold data structures that realize indirect references to objects registered in the object holding unit 136 and direct references to other proxy objects. (Proxy object group) is generated and registered in the proxy object holding unit 136.
  • FIG. 3 is a diagram illustrating an example of the data structure of the proxy object according to the first embodiment.
  • the object OBJ includes an ID 301 that uniquely identifies the object, data 302, 303,... (Data 1, data 2,%) Managed by the object,
  • the data structure includes a reference destination 304 (reference destination 1) for storing reference information indicating another object (subsequent object) to be referred to.
  • reference destination 304 reference destination 1 for storing reference information indicating another object (subsequent object) to be referred to.
  • the proxy object POB has an ID 311 that uniquely identifies the proxy object, a reference 312 (O reference) that holds reference information to the object OBJ that is an indirect reference destination by the proxy object, and an object OBJ that is an indirect reference destination by the proxy object.
  • Data I / F 313 that defines an access interface to the data to be referred to, and reference information to other proxy objects (following proxy objects) that have other objects referenced by the object OBJ that is an indirect reference destination as an indirect reference destination
  • the data structure includes a reference 314 to be held (see P). Note that after the proxy object generation unit 135 generates the proxy object group with reference to the object management table 200, the object management table 200 may be discarded from the memory 111 or may be retained as it is.
  • the proxy object reference setting unit 137 executes the following reference information setting process on the object group registered in the object holding unit 133.
  • the proxy object reference setting unit 137 performs a proxy object (indirect reference to an object (previous object) as a reference source) for an object group that holds a multi-level reference relationship registered in the object holding unit 133 (
  • the proxy object in the previous stage and the proxy object (the proxy object in the subsequent stage) that realizes the indirect reference to the object (the object in the subsequent stage) that is the reference destination of the object in the previous stage are identified.
  • the reference information for the subsequent object is set, and the reference information for the subsequent object is set in the O reference 312 of the subsequent proxy object.
  • the proxy object reference setting unit 137 sets reference information for the proxy object at the subsequent stage in the P reference 314 of the proxy object at the previous stage.
  • the proxy object reference setting unit 137 generates a one-way reference relationship from each proxy object POB of the proxy object group as shown in FIG. 3 to the corresponding object OBJ of the object group.
  • the starting point of the arrow indicates the reference source
  • the end point of the arrow indicates the reference destination.
  • the user program execution unit 131 registers and acquires an object with respect to the object holding unit 133 via the object management unit 132. In addition, the user program execution unit 131 executes read (read) and write (write) on data held by the object acquired from the object management unit 132 with the proxy object. Further, the user program execution unit 131 re-registers the object for which the write has been performed via the object management unit 132.
  • FIG. 4 is a flowchart of the object registration process according to the first embodiment.
  • the object management unit 132 waits until an object registration request is generated from the user program execution unit 131 (step 401).
  • the object registration may be, for example, a key or value type registration in which a user program execution unit 131 generates a key for identifying an object to be registered, and an object uniquely identified by the key is a value.
  • the object management unit 132 may generate a key or pointer for accessing the registration target object and send it to the user program execution unit 131.
  • an index may be created using the internal information of the object and managed so that it can be searched.
  • a description will be given by taking as an example a key and value type that cause the user program execution unit 131 to generate a registration request with a key for uniquely identifying an object.
  • the object management unit 132 copies or moves all the objects that can be reached by following the reference from the registration target object to the object holding unit 133 (step 402). .
  • the registered object may be ignored and registered as another object, or the registered object may be overwritten. .
  • the object management unit 132 receives key information for uniquely identifying an object to be registered (starting object) from the object group from the user program execution unit 131, and moves or duplicates the starting object that is moved or copied with the key.
  • the starting object IDs shown are registered in the key and starting object ID of the object index table (see FIG. 5), respectively (step 403).
  • FIG. 5 is an example of an object index table according to the first embodiment.
  • the object index table 500 stores a key 501, a starting object ID 502, and a starting proxy object ID 503 in association with each other.
  • the key 501 is key information for uniquely identifying the origin object.
  • the starting object ID 502 is the ID of the corresponding starting object.
  • the starting proxy object ID 503 is an ID of a proxy object (starting proxy object) for indirectly referring to the starting object.
  • Proxy object generation / setting process is executed after object group registration is completed by object registration process.
  • the object structure analysis unit 134 analyzes the structure of the object group. Next, using the analysis result, the proxy object generation unit 135 generates a proxy object that realizes indirect reference to the object group, and the proxy object reference setting unit 137 refers to the proxy object and the object, and the reference between the proxy object and the proxy object. Set. Next, the proxy object generation / setting process will be described with reference to a flowchart.
  • FIG. 6 is a flowchart of proxy object generation / setting processing according to the first embodiment.
  • the object structure analysis unit 134 analyzes the object group registered in the object holding unit 133 to acquire the object ID, the reference destination ID, and the proxy object ID of each object, and generates the object management table 200.
  • the proxy object generation unit 135 takes over the processing (step 601).
  • the proxy object generation unit 135 identifies the object program code that is the definition from the type information of the object registered in the object holding unit 133 (step 601-1). Next, the proxy object generation unit 135 acquires a proxy object program code that is linked with the same proxy object ID as the identified object program code (step 601-2). Then, the proxy object generation unit 135 obtains the data access IF 313 (data I / F) to each object registered in the object holding unit 133, the O reference 312 and the P reference 314 from the acquired proxy object program code. A proxy object POB having a data field to be realized is generated and registered in the proxy object holding unit 136 (step 602). In step 602, the process of registering the reference destination in the O reference 312 and the P reference 314 of the proxy object POB is not performed. Note that the process of registering the reference destination in the O reference 312 and the P reference 314 is executed thereafter.
  • the proxy object generation unit 135 displays the ID (starting proxy object ID) of the proxy object (starting proxy object ID) that realizes indirect reference to the starting object of the object group in the object index table.
  • 500 is registered as the starting proxy object ID of the corresponding row of 500, and the processing is taken over by the proxy object reference setting unit 137 (step 603).
  • the proxy object reference setting unit 137 selects the origin proxy object as a target proxy object (reference setting proxy object) for setting the O reference and the P reference (step 604). Subsequently, the proxy object reference setting unit 137 specifies an object that is indirectly referenced by the reference setting proxy object from the proxy object ID and the object ID acquired in step 601, and the object specified in the O reference 312 of the reference setting proxy object. ID is registered (step 605).
  • the proxy object reference setting unit 137 determines whether or not there is an ID (reference destination ID) of another object referred to by the object corresponding to the ID of the O reference 312 of the reference setting proxy object in step 601. Confirmation is performed using the ID and the reference destination ID (step 606). If the reference destination ID does not exist (No in step 606), the process proceeds to step 608. On the other hand, if the reference destination ID exists (Yes in step S606), the proxy object reference setting unit 137 acquires the proxy object ID for indirect reference to the object of the reference destination ID from the object management table 200, and acquires it. The proxy object indicated by the proxy object ID is registered in the P reference 314 of the reference setting proxy object, and the process proceeds to step 608 (step 607).
  • step 608 it is confirmed whether there is an unselected proxy object as a reference setting proxy object from the proxy object group generated by the proxy object generation unit 135 in step 602. If there is an unselected proxy object (Yes in Step 608), a reference setting proxy object for setting O reference and P reference is selected from the unselected proxy objects, and the processing from Step 604 is executed. If there is no unselected proxy object (No in step 608), the process ends.
  • This proxy object generation / setting process may be executed when an object is registered, or may be executed after receiving an object acquisition request. Also, the proxy object generation / setting process (proxy object generation process) and proxy object reference setting process (proxy object setting process) are divided into the proxy object generation process and the proxy object generation process when registering objects. And the proxy object setting process may be executed when the object is acquired. Further, the proxy object setting process may be further divided so that a process for setting a P reference for a proxy object is executed at the time of object registration, and a process for setting an O reference for a proxy object may be performed at the time of object acquisition.
  • FIG. 7 is a flowchart of object acquisition processing according to the first embodiment.
  • the object management unit 132 waits until an object acquisition request with a key for uniquely identifying the object is generated from the user program execution unit 131 (step 701). If an object acquisition request is generated (Yes in step 701), the object management unit 132 acquires the corresponding object ID and origin proxy object ID from the object index table 500 using a key associated with the object acquisition request (Ste 702). Then, the object management unit 132 transmits the proxy object indicated by the acquired starting proxy object ID to the user program execution unit 131 (step 703). As a result, the user program execution unit 131 acquires a proxy object that reads out the target object of the acquisition request or a proxy object that can reach the proxy object.
  • the object management unit 132 may copy and transmit the proxy object and the proxy object referenced from the proxy object to the user program execution unit 131. After sending, the same proxy object may be generated again.
  • the user program execution unit 131 After the user program execution unit 131 acquires a proxy object via the object management unit 132, the user program execution unit 131 performs read and write operations on data held by the object via the acquired proxy object. Will be able to do.
  • FIG. 8 is a flowchart of object data operation processing according to the first embodiment.
  • the user program execution unit 131 sends the arrival route information (reference route information) to the data operation target object and the attribute storing the data as a data read request to the origin proxy object (step 801). Subsequently, the origin proxy object reaches the proxy object POB that realizes indirect reference to the object OBJ having the target attribute by tracing the reference information held in the P reference 314 using the received arrival route information (Ste 802).
  • the arrival route information is, for example, passed through to reach a target object that is expressed as “reaching from the object 1 to the object N that is the target (data operation target) via the object 2”.
  • Information about the object By replacing the object included in the arrival route information with a proxy object that realizes an indirect reference to each object, “the proxy object 1 is reached through the proxy object 2 to reach the target proxy object N”.
  • the proxy object arrival route information (proxy object arrival route information) corresponding to the object arrival route is generated. By generating this proxy object arrival route information, the proxy object that realizes indirect reference of the object N from the proxy object 1 that realizes indirect reference of the object 1 through the proxy object without going through the object such as the object 2 N can be reached.
  • the user program execution unit 131 After reaching the proxy object that can be indirectly referenced to the target object (target proxy object) using this proxy object arrival route information, the user program execution unit 131 uses the data I / F held by the target proxy object. Then, data manipulation is attempted on the target object (step 803). At this time, the data I / F of the target proxy object determines whether the data operation by the user program execution unit 131 is read or write (step 804). If the data operation is read (Read in Step 804), the target proxy object causes the user program execution unit 131 to read the object data and terminates the process (Step 805).
  • the target proxy object when the data operation is write (Write in Step 804), the target proxy object generates a copy of the object to be indirectly referenced in the memory 111 (Step 806).
  • the O reference 312 of the proxy object POB is changed from the reference to the copy source object OBJ to the reference to the copy destination object OBJ (step 807).
  • the proxy object applies the write operation to the copy destination object and ends the process (step 808).
  • the proxy object to be indirectly referenced has been copied, the proxy object has a copied flag, and when the data operation is write, by checking the copied flag, when writing to the same object
  • the process for copying the object may be performed only for the first time.
  • FIG. 9 is a flowchart of object re-registration processing according to the first embodiment.
  • the object management unit 132 waits until an object registration request with a key for uniquely identifying the starting object of the registration target object group is generated from the user program execution unit 131 (step 901). If an object re-registration request is generated (Yes in step 901), the object management unit 132 obtains an object that is not a proxy object that can be indirectly referenced from the origin proxy object and the proxy object that can be reached from the origin proxy object, and the object The presence / absence of a write to the file is confirmed and the process proceeds to step 903 (step 902).
  • the duplicated flag indicating that the duplication is performed is held in the proxy object, and when the object is re-registered It may be confirmed by confirming the duplicated flag. Further, the internal information of the registered object group and the object group to be re-registered may be compared, and if the internal information is different, it may be determined that a write has occurred.
  • step 903 if there is no write (No in step 903), it is determined that there is no change from the registered data, and the registration process is terminated. On the other hand, if there is a write (Yes in step 903), the object management unit 132 sets the copy destination of the object for which the write has occurred and the copy has been performed, and the proxy object that implements the indirect reference to the object for which the write has occurred.
  • the proxy object group to be referenced is extracted from all proxy objects acquired in step 902 (step 904). Then, the object management unit 132 changes the reference destination 304 of the object OBJ that realizes indirect referencing by the extracted proxy object to the copy destination of the object acquired in step 904, and ends the object re-registration process (step 905).
  • the origin proxy by adding a P reference that holds a reference to a proxy object corresponding to the object reference relationship to the data structure of the proxy object, and by managing the proxy object that holds the data structure, the origin proxy
  • the target proxy object that realizes indirect reference to an arbitrary object can be reached by passing only the proxy object from the object. Thereby, it is not necessary to go through a non-proxy object to reach the target object, and the number of references can be reduced. For this reason, it is possible to speed up access to an arbitrary object that is indirectly referenced using a proxy object.
  • object cache is effective to improve read / write performance for persistent objects.
  • use of Copy on Write is effective.
  • proxy objects proportional to the number of registered objects are required. Since the proxy object holds reference information to the object referred to by the proxy object, the amount of memory consumed by the proxy object increases and the number of objects that can be cached in the memory 111 decreases.
  • the proxy object group generated to realize indirect reference to the object group has the same data access I / F. Multiple proxy objects with are included.
  • FIG. 22 is a diagram illustrating the data configuration of the proxy object that implements indirect reference to the object according to the second embodiment.
  • the object holding unit 133 includes an object A1 and an object B1, and a reference from the object A1 to the object B1 exists.
  • the proxy object holding unit 136 includes proxy objects PA1 and PB1 that realize indirect reference to the objects A1 and B1.
  • the proxy object PA1 holds A1 for the O reference, PB1 for the P reference, and holds a data access I / F to the internal information of the object A1. .
  • proxy objects PA2 and PB2 are generated to realize indirect reference to the object A2 and the object B2. Will be.
  • the proxy objects PA2 and PB2 are proxy objects that differ only in O reference from the proxy objects PA1 and PB1.
  • proxy objects PA1 and PB1 can realize indirect references to the objects A2 and B2 by changing their O references to the objects A2 and B2.
  • FIG. 23 is a diagram illustrating an example in which the representative proxy object according to the second embodiment is duplicated and used.
  • the proxy objects PA1 and PB1 are copied, and the copied proxy objects PA1 ′ and
  • the references to the object A2 and the object B2 in the respective O references of PB1 ′ and transmitting them to the user program execution unit 131 indirect references to the objects A2 and B2 can be realized.
  • FIG. 10 is a configuration diagram of a computer according to the second embodiment.
  • the computer 101 as an example of the object management apparatus according to the second embodiment performs indirect reference to an object group added to the object holding unit 133 with respect to the program that realizes the computer illustrated in FIG. Is added to the representative proxy object confirmation unit 138 that determines whether or not can be realized, and the proxy object holding unit 136 is changed to a representative proxy object holding unit 136 that holds a representative proxy object.
  • FIG. 11 is a flowchart of object registration processing according to the second embodiment.
  • the object structure analysis unit 134 waits until an object group consisting of an object and all objects that can be referenced (reachable) from the object is registered in the object holding unit 133 (step 1101). If the object structure analysis unit 134 detects registration of an object group in the object holding unit 133 (Yes in Step 1101), the process proceeds to Step 1102. In step 1102, the object structure analysis unit 134 analyzes the registered object group, thereby extracting the proxy object that realizes the reference destination and indirect reference of each object, and generates the object management table 200 (step 1102).
  • the analysis here refers to, for example, extracting the object type (object type) and a reference to another object from the internal information of the object, and a proxy object that realizes an indirect reference to the object having the extracted object type. It is to identify.
  • object type object type
  • proxy object that realizes an indirect reference to the object having the extracted object type. It is to identify.
  • the object at the starting point of the object group whose registration is detected in step 1102 is referred to as an additional starting point object for explanation.
  • step 1102 the process proceeds to step 1103 in order to determine whether or not the registered object group can be indirectly referenced by the existing representative proxy object.
  • step 1103 the representative proxy object confirmation unit 138 uses the object management table 200 to obtain an ID (additional origin proxy object ID) indicating a proxy object that implements an indirect reference to the additional origin object.
  • step 1104 the representative proxy object confirmation unit 138 confirms whether or not there is an additional origin proxy object ID that matches the origin proxy object ID in the object index table 500 (step 1104).
  • the representative proxy object confirmation unit 138 assumes that there is no existing representative proxy object, and takes over the processing to the proxy object generation unit 135 to generate a representative proxy object (Step 1105). .
  • the representative proxy object confirmation unit 138 assumes that there is a representative proxy object starting point that matches the starting proxy object ID, and the object referenced from the additional starting object is also indirectly transmitted by the representative proxy object. Proceed to step 1106 to see if the reference can be realized. In step 1106, it is confirmed using the object management table 200 whether there is an object referenced from the additional starting object.
  • the representative proxy object confirmation unit 138 determines that the object group added to the object holding unit 133 can be indirectly referenced by the existing representative proxy object, and ends the processing.
  • the representative proxy object confirmation unit 138 indicates a proxy object ID (additional reference destination proxy object ID) indicating a proxy object that realizes indirect reference from the additional origin object to the referenced object. Is acquired (step 1107).
  • the representative proxy object confirmation unit 138 acquires a reference destination proxy object ID (group) for identifying the proxy object (group) to be referenced from the starting point of the representative proxy object (step 1108). Subsequently, the representative proxy object confirmation unit 138 confirms whether or not all the additional reference destination proxy object IDs are included in the acquired reference destination proxy object ID (group) (step 1109). If not included (No in step 1109), the proxy object generation unit 135 takes over the processing in order to generate a representative proxy object, assuming that there is no existing representative proxy object (step 1105).
  • the representative proxy object confirmation unit 138 generates a pair in which the additional reference destination proxy object ID and the reference destination proxy object ID match, and adds an additional reference destination proxy object to each pair.
  • the object indirectly referenced by the proxy object indicated by the ID is regarded as an additional origin object
  • the proxy object indicated by the reference proxy object ID is regarded as the origin of the representative proxy object, and the process returns to step 1106 to continue similar representative proxy object confirmation processing. (Step 1110).
  • the representative proxy object confirmation unit 138 records the difference from the representative proxy object in step 1109, and the proxy object generation unit 135 has insufficient proxy proxy objects.
  • the object may be generated as an additional proxy object.
  • the object management unit 132 transmits (provides) the representative proxy object to the user program execution unit 131 in accordance with the object acquisition request from the user program execution unit 131.
  • the object management unit 132 searches for the representative proxy object in order to realize indirect reference to the object group held in the object holding unit 133, and data is stored in the O reference of the representative proxy object or a duplicate proxy object. Register a reference to the object requested in the acquisition request.
  • the representative proxy object providing process will be described with reference to a flowchart.
  • FIG. 12 is a flowchart of representative proxy object provision processing according to the second embodiment.
  • the object management unit 132 waits until an object acquisition request with a key for uniquely identifying the object is generated from the user program execution unit 131 (step 1201). If an object acquisition request is generated (Yes in step 1201), the object management unit 132 uses the key acquired from the user program execution unit 131 to search the object ID and starting proxy object of the requested object from the object index management table 500. The ID is acquired, and the process is taken over by the proxy object reference setting unit 137 (step 1202). The proxy object reference setting unit 137 duplicates the acquired starting proxy object and the proxy object that can be traced from the starting proxy object, including the reference information of the P reference 314. Then, the origin of the duplication destination is set as the origin proxy object (step 1203). Thereafter, the proxy object reference setting unit 137 registers a reference to the object indicated by the object ID acquired in Step 1202 in the O reference 312 of the origin proxy object (Step 1204).
  • the proxy object reference setting unit 137 checks whether there is a proxy object registered in the P reference 314 of the origin proxy object (step 1205). If there is a proxy object registered in the P reference (Yes in Step 1205), the process proceeds to Step 1206. On the other hand, if it does not exist (No in step 1205), the proxy object reference setting unit 137 returns the process to the object management unit 132, assuming that the process of setting the reference to the object in the replicated representative proxy object is completed, and the step Proceed to 1207.
  • the proxy object reference setting unit 137 acquires the proxy object ID of the proxy object registered in the P reference 314, and acquires the object ID corresponding to the proxy object ID from the object management table 200. Thereafter, the acquired proxy object ID is set as a new origin proxy object ID, and the process proceeds to step 1204.
  • the object management table 200 (see FIG. 2) is a table generated by the object structure analysis unit 134 when registering an object requested to be acquired from the user program execution unit 131. The object management table 200 can be discarded when the object registration is completed, and the amount of data held in the memory 111 can be reduced.
  • the object structure analysis unit 134 investigates the object referred to from the object requested for acquisition between step 1202 and step 1203, and the object management table 200. The step of generating again is required.
  • the object management unit 132 transmits the origin proxy object of the representative proxy object copied to the user program execution unit 131.
  • the representative proxy object By introducing the representative proxy object as described above, only the proxy object to be used for reference to the object requested to be acquired from the user program execution unit 131 may be generated. For this reason, according to the method using the representative proxy object, the number of generated proxy objects can be reduced as compared with the method of generating proxy objects corresponding to all the objects registered in the object holding unit 133.
  • the object management unit 132 copies the representative proxy object every time an object acquisition request from the user program execution unit 131 is generated. For this reason, it is necessary for the user program execution unit 131 to wait for the execution of the program until the replication process is completed each time an object is acquired. Therefore, in the computer 101 which is an example of the data management apparatus according to the third embodiment, the same representative proxy object is copied in advance in order to reduce the time for the user program execution unit 131 to wait for the representative proxy object to be copied. Thus, a predetermined number or more is held.
  • the object management unit 132 monitors the number of representative proxy objects, and if the number of representative proxy objects falls below a predetermined threshold, the object management unit 132 The proxy object generation unit 135 is notified of the starting proxy object of the representative proxy object, and the representative proxy object is duplicated.
  • the threshold value may be an arbitrary value, but may be determined from the use status of the representative proxy object in the user program execution unit 131.
  • the representative proxy object usage status includes, for example, the maximum number of threads that execute processing in parallel by the user program execution unit 131, and the maximum number of representative proxy objects that are simultaneously used by threads.
  • the representative proxy object is copied in advance and held in the representative proxy object holding unit 136, it is necessary to copy the representative proxy object in step 1203 of FIG. 12 when an object acquisition request is generated.
  • the processing time of the user program execution unit 131 is shortened.
  • the object management unit 132 sets the proxy object O reference 312 constituting the representative proxy object (group). Registers the object for which acquisition was requested and references to all objects that can be referenced from that object.
  • the user program execution unit 131 does not always perform operations such as read and write on the requested object and all objects that can be referenced from the object, indirect reference to all the acquired objects is required. Is not limited.
  • a delayed proxy object reference setting when there is an operation request for an object, setting a reference to the object for which an operation request has been made to a proxy object is referred to as a delayed proxy object reference setting.
  • FIG. 13 is a diagram illustrating the object state before the delayed proxy object reference setting process according to the fourth embodiment.
  • the user program execution unit 131 stores a proxy object POB that realizes indirect referencing and an indirect reference destination object OBJ.
  • the proxy object POB has a data structure for realizing indirect reference to the object OBJ that holds a multi-level reference relationship in the data portion. That is, each proxy object POB has an O reference 312 for holding the reference information of the indirect reference destination object OBJ and a proxy object POB that realizes an indirect reference to another object referenced by the indirect reference destination object. A P reference 314 for holding reference information is held.
  • the proxy object POB includes an indirect reference adding unit 139 for realizing a function of detecting an indirect reference request to the object by the user program execution unit 131 and setting a reference to the object (delay proxy object reference setting). Hold.
  • the delayed proxy object reference setting realized by the indirect reference adding unit 139 will be described in two processes: object acquisition and object operation such as data read and write.
  • the user program execution unit 131 acquires a proxy object that holds the indirect reference addition unit 139 as a function and an object that realizes indirect referencing by the proxy object.
  • An example of the object acquisition process will be described with reference to a flowchart.
  • FIG. 14 is a flowchart of object acquisition processing according to the fourth embodiment.
  • the object management unit 132 waits until an object acquisition request with a key for uniquely identifying an object is generated from the user program execution unit 131 (step 1501). If an object acquisition request is generated (Yes in step 1501), the object management unit 132 uses the key acquired from the user program execution unit 131 to search the object index management table 500 for the object ID and the starting proxy object ID. Then, the proxy object reference setting unit 137 takes over the processing (step 1502). The proxy object reference setting unit 137 registers the reference information of the object indicated by the acquired object ID in the O reference 312 of the proxy object POB that is duplicated from the representative proxy object and indicated by the acquired starting proxy object ID (Step S1). 1503). Thereafter, the object management unit 132 transmits the starting point proxy object to the user program execution unit 131 in a state where the reference destination object is registered only in the O reference 312 of the starting point proxy object, and ends the processing (step 1504).
  • the object structure analysis unit 134 and the proxy object reference setting unit 137 communicate with each other, so that the proxy object is transferred to the object. Register a reference.
  • FIG. 15 is a flowchart of object operation processing according to the fourth embodiment.
  • the indirect reference adding unit 139 waits until an indirect reference request to the object is generated by the user program execution unit 131 (step 1601). If an indirect reference request is detected (Yes in Step 1601), the indirect reference adding unit 139 confirms whether the indirect reference destination object can be accessed via the proxy object (Step 1602). If it can be accessed (Yes in step 1602), the user program execution unit 131 is caused to execute indirect referencing via the proxy object, and the process is terminated. If it cannot be accessed (No in step 1602), the indirect reference adding unit 139 changes from the indirect reference request destination object (target object), the object indirectly referenced by the origin proxy object (origin object), and the origin proxy object to the target object. The proxy object group (reference order proxy object group) acquired in order up to the proxy object that realizes the indirect reference is acquired (step 1603).
  • the object A refers to the object B
  • the object B refers to the object C
  • the data of the object C is read. It is expressed as “ABC read ()”.
  • the starting object is the object A
  • the target object is the object C.
  • proxy objects that realize indirect reference to the objects A, B, and C are PA, PB, and PC, respectively
  • the reference order proxy object group is PA ⁇ PB ⁇ PC.
  • the object structure analysis unit 134 acquires an object that can be referred to from the acquired starting object object and a proxy object that realizes indirect reference to the object (step 1604). Thereafter, the object structure analysis unit 134 checks whether or not the proxy object directly referenced from the origin proxy object in the reference order proxy object group matches the proxy object acquired in Step 1604 (Step 1605). If there is a matching proxy object in step 1605 (Yes in step 1605), the process proceeds to step 1606. On the other hand, if there is no matching proxy object (No in step 1605), the process is terminated assuming that there is no object requested for indirect reference.
  • the indirect reference request in the user program execution unit 131 is an operation of the object itself, for example, NULL is returned as information indicating that the object does not exist. Also, if the operation of data contained in the object or the operation of the object referenced from the object, an exception is returned as information indicating that the object does not exist and the requested object or data cannot be reached, or processing that cannot be realized (step 1608).
  • step 1606 it is confirmed whether or not the matched proxy object is the last acquired proxy object in the reference order proxy object group. If it is not the last proxy object (No in step 1606), the proxy object matched in step 1605 is returned to step 1604 as the origin proxy object, and the proxy object match confirmation is continued. on the other hand. If it is the last proxy object (Yes in step 1606), the proxy object reference setting unit 137 registers a reference to the target object in the O reference 312 of the matched proxy object, and realizes an indirect reference to the object (step). 1607).
  • delayed proxy object generation that generates a proxy object that realizes indirect referencing may be performed.
  • FIG. 18 is a flowchart of the delayed proxy object generation process according to the fifth embodiment.
  • the object management unit 132 refers to the object index table 500 to generate a starting proxy object, and the object requested by the O reference 312 of the starting proxy object. The address is registered, and this origin proxy object is transmitted to the user program execution unit 131 (1901).
  • This origin proxy object is, for example, as shown in FIG.
  • the user program execution unit 131 waits until the indirect reference adding unit 139 detects an indirect reference request to the object (step 1902). If an indirect reference request is detected (Yes in Step 1902), the indirect reference adding unit 139 confirms whether or not the indirect reference destination object can be accessed via the existing proxy object (Step 1903). If it can be accessed (Yes in step 1903), the user program execution unit 131 executes indirect referencing via the proxy object, and the process ends.
  • the indirect reference adding unit 139 acquires the indirect reference request destination object (target object) and the object (origin object) indirectly referenced by the origin proxy object, and the object The structure analysis unit 134 takes over the processing (1904).
  • the object structure analysis unit 134 analyzes the reference structure from the starting object to the target object, and refers to the proxy object (target proxy object) that realizes indirect reference to the target object, and the target proxy object from the starting point proxy object.
  • the proxy object to be traced is copied from the representative proxy object held in the representative proxy object holding unit 136.
  • the proxy object group copied in step 1905 refers to the proxy object P reference 314 of each proxy object so as to trace the reference to the target proxy object that realizes indirect reference from the origin proxy object to the target object. And a reference to the target object is set in the O reference 314 of the proxy object that realizes indirect reference to the target object (step 1906).
  • This delay proxy object generation process can generate only proxy objects necessary to realize indirect reference to objects. Therefore, the number of representative proxy objects held by the representative proxy object holding unit 136 can be limited to one according to the type of proxy object, and the amount of consumption of the memory 111 compared to the case where the representative proxy object is duplicated and held in advance. Can be reduced.
  • the object may hold a reference to a collection that is an object that is a collection of multiple objects.
  • the number of elements of the collection increases, the number of objects increases, and the number of proxy objects for realizing indirect reference to these objects also increases.
  • memory consumption also increases.
  • an object group as an element of the collection includes a set of objects having the same data structure, and objects belonging to the set have the same data access interface for reading / writing data. Therefore, indirect reference can be realized by the same proxy object for a set of objects having the same data structure. Therefore, similar to the representative proxy object, one proxy object representing the collection element is generated, and the proxy object is duplicated and used when the collection element is accessed. The increase in the number can be suppressed.
  • the proxy object POB that realizes indirect reference to the object OBJ that is an element of the collection is included in the collection COB of the indirect reference destination as shown in FIG.
  • An indirect reference representative unit for generating an indirect reference by generating a proxy object POB when an indirect reference to an object set having the same data structure occurs and an indirect collection 141 that holds reference information to the element 140 is added, and a reference to the object COB that manages the collection is set in the P reference 314 indicating the indirect reference destination. Then, when an indirect reference request for the collection element occurs in the user program execution unit 131, an indirect reference process for the collection element is executed.
  • FIG. 21 is a flowchart of the indirect reference process to the collection element according to the sixth embodiment.
  • the indirect reference representative unit 140 waits until it detects an indirect reference request to the object OBJ that is an element of the collection (step 2201). If an indirect reference request to a collection element is detected (Yes in step 2201), the indirect reference representative unit 140 determines whether the content of the indirect reference request is an operation request for an object such as addition or deletion of a collection element, or the inside of the object. It is confirmed whether it is an operation request for information (step 2202). If it is an operation request for an object, the process proceeds to step 2208. On the other hand, if the operation request is for the internal information of the object, the indirect reference representative unit 140 identifies the object that is the indirect reference destination using the indirect collection 141, and generates a proxy object that implements the indirect reference to the object. .
  • the indirect reference representative unit 140 registers a reference to the generated proxy object in the O reference 312 (step 2203). After generating the proxy object in step 2203, the indirect reference representative unit 140 determines whether the operation request for the internal information of the object is read or write (step 2204).
  • the indirect reference representative unit 140 creates a copy of the object, and changes the O reference 312 of the generated proxy object to the copy destination. Then, the indirect reference representative unit 140 changes the reference to the copy source object held by the indirect collection 141 to the copy destination object (step 2206). If the duplication process in step 2206 is completed, the indirect reference representative unit 140 reflects the write content in the duplication destination object and ends the process (step 2207). When adding or deleting an object that is an element of a collection, the indirect reference representative unit 140 does not operate the collection registered in the P reference 314, but adds or deletes reference information of the indirect collection 140, and performs processing. The process ends (step 2208).
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • Each of the above-described configurations, functions, processing units, processing means, and the like may be realized in hardware by designing some or all of them, for example, with an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, files, etc. that realize each function should be placed in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card, SD card, or DVD. Can do.
  • SSD Solid State Drive
  • control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 オブジェクトに到達するためにたどる参照の数を削減することで計算機の性能向上を図る。オブジェクト管理装置は、オブジェクトを記憶可能なメモリと、プロセッサとを有する。プロセッサは、前段のオブジェクトと、前段のオブジェクトから参照可能な1以上の後段のオブジェクトとをメモリに記憶させ、前段のオブジェクトへの参照情報を含み、前段のオブジェクトを参照可能にする参照機能を提供する前段のプロキシオブジェクトと、後段のオブジェクトへの参照情報を含み、後段のオブジェクトに対する参照機能を提供する後段のプロキシオブジェクトとを生成してメモリに記憶させ、前段のプロキシオブジェクトに、前記後段のプロキシオブジェクトへの参照情報を格納させる。

Description

オブジェクト管理装置、およびオブジェクト管理方法
 間接的なデータアクセスを実現するオブジェクトを管理するオブジェクト管理装置、およびオブジェクト管理方法に関する。
 Java(登録商標)などのオブジェクト指向言語において作成したプログラムで扱うデータを永続化するためには、オブジェクトとして生成したデータを、データベース(DB)で保持できる形式に変換した後に、データベースに書き込む。一方、プログラムからデータベースに保持されたデータへアクセスする場合は、データベースから読み込んだデータをオブジェクトに変換する処理が必要になる。このデータベースからのread処理とデータ変換処理とは、プログラムがデータベースに保持されるデータをオブジェクトとして扱うために必要な処理であり、これらの処理速度が遅ければプログラムの実行速度が低下する。
 データベースからのデータのread性能を向上させるため、データベースで保持するデータを、プログラムが、データベースの格納されている外部記憶装置等より高速にアクセスできるメモリにキャッシュとして保持するキャッシュ技術が存在する。また、データ変換処理による性能低下を防ぐために、プログラムが扱うデータ形式と、キャッシュとして保持するデータ形式とを一致させて保持するオブジェクトキャッシュ技術も存在する。オブジェクトキャッシュ技術を利用することで、データ変換処理を省くことができる。なお、オブジェクトキャッシュとデータベースに保持するデータとのデータ形式を一致させるため、データを書き換える場合には、オブジェクトキャッシュとデータベースに保持するデータとの両方を書き換える必要がある。
 マルチスレッドプログラムにおいては、データの一貫性を保証するためにキャッシュされた1オブジェクトの内部情報に対して複数のスレッドがアクセスすることを考慮する必要がある。例えば、スレッドAはオブジェクトの内部情報が保持する数値Cをwriteし(書き換え)、スレッドBは数値Cをread(読み出し)した結果、数値Cが0以外であれば、数値Cを1減らすためwriteする場合を考える。
 この場合、数値Cが1であれば、スレッドBがreadにより数値Cを1と取得し、writeを実行し、数値Cを0とする。しかし、スレッドBによるreadとwriteとの間に、スレッドAが数値Cを0とするwriteを実行してしまうと、スレッドBは数値Cが0であるにもかかわらず、writeを実行し、数値Cを-1にしてしまい、数値Cが期待される0とは異なる結果となってしまう。このようにマルチスレッドプログラムでは、オブジェクトの内部情報に対して直接writeするとオブジェクトの内部情報であるデータの一貫性が保てない。
 一貫性を保つためには、例えば各スレッドからキャッシュされたオブジェクトの内部情報をread/writeする前に一度、各スレッドのみがアクセスできるローカル領域にオブジェクトをコピーする方式がある。この方式では、コピー先である各スレッドのローカル環境でオブジェクトの内部情報をread/writeする。そして、ローカル環境でのwrite処理を実施した後にwrite内容が確定すれば、コピー元のキャッシュされたオブジェクトが他から変更されないようにロックし、ロックしたオブジェクトを、writeにより変更したオブジェクトへ変更する。このようにオブジェクトの内部情報をread/writeする前に一度、各スレッドのローカル領域にオブジェクトをコピーすることで、各スレッドはコピー実施時点のオブジェクトに対して常に処理を実行でき、一貫性を保つことができる。
 一方、readの場合はオブジェクトの内部情報に変更が発生しないためコピーしなくともデータの一貫性を保つことができる。これを実現するため、オブジェクトの内部情報にプロキシオブジェクトを介してread/writeするようにし、writeが発生した場合のみオブジェクトのコピーを実施するCopy on Write方式がある。このCopy on Write方式により、read時にオブジェクトのコピー処理を待つ必要がないためreadを実行する速度が上昇する。
 ここで、プロキシオブジェクトとは、read/write対象とするオブジェクトへの参照と、そのオブジェクトの内部情報(データ)をread/writeするためのインターフェースと、writeを検知して参照先のオブジェクトをスレッドのローカル領域にコピーする機能とを持つオブジェクトである。
 このプロキシオブジェクトを各スレッドがそのローカル領域に保持して、キャッシュにて複数のスレッドからアクセスされるオブジェクトに、プロキシオブジェクトを介してアクセス(間接参照)し、Copy on Writeを実現する。
 永続対象のオブジェクトが参照関係により複数連結し、多段の参照関係を保持する場合のプロキシオブジェクト生成の技術が、例えば、特許文献1に記載されている。特許文献1に記載された技術では、オブジェクトA、オブジェクトBがオブジェクトAからオブジェクトBへの参照Cで連結される場合に、プロキシオブジェクトPA、プロキシオブジェクトPBを生成し、それぞれオブジェクトA、オブジェクトBへの間接参照を実現する。そして、参照CをオブジェクトAからプロキシオブジェクトPBへの参照に変更する。これらプロキシオブジェクト生成とオブジェクト間の参照変更操作を実施することで、多段の参照関係を持つオブジェクト群のうちどのオブジェクトへの書き換え操作が発生しても、対応するプロキシオブジェクトで書き換えを検知し、Copy on Writeを実現する。
特開2009-157805号公報
 特許文献1に記載された技術では、多段の参照関係を保持するオブジェクト群に対して、プロキシオブジェクトとオブジェクトの参照を交互にたどることで任意のオブジェクトにアクセスする必要がある。そのため、任意のオブジェクトにアクセスする場合には、プロキシオブジェクトがない場合に比べて参照をたどる回数が2倍になり、アクセス速度が低下する。
 プロキシオブジェクトは、プロキシオブジェクトが参照するオブジェクトへの参照情報を保持している。そのため、プロキシオブジェクトを利用したデータ処理を実現するためにプロキシオブジェクトをメモリ上に保持すると、通常オブジェクトに加えてプロキシオブジェクトがメモリを消費することとなる。特許文献1に記載された技術では、1つのオブジェクトに対して1つのプロキシオブジェクトを生成している。そのため、オブジェクト数に比例してプロキシオブジェクトによるメモリ消費が発生し、メモリにキャッシュできるオブジェクト数が低下する。
 そこで、プロキシオブジェクトを用い、多段の参照関係を保持するオブジェクト群における任意のオブジェクトに到達するためにたどる参照の数を削減することで計算機の性能向上を図ることのできる技術を提供する。
 本発明の一観点に係るオブジェクト管理装置は、オブジェクトを記憶可能なメモリと、プロセッサとを有する。プロセッサは、前段のオブジェクトと、前段のオブジェクトから参照可能な1以上の後段のオブジェクトとをメモリに記憶させ、前段のオブジェクトへの参照情報を含み、前段のオブジェクトを参照可能にする参照機能を提供する前段のプロキシオブジェクトと、後段のオブジェクトへの参照情報を含み、後段のオブジェクトに対する参照機能を提供する後段のプロキシオブジェクトとを生成してメモリに記憶させ、前段のプロキシオブジェクトに、前記後段のプロキシオブジェクトへの参照情報を格納させる。
 本発明によれば、参照関係を持つオブジェクト群の任意のオブジェクトへプロキシオブジェクトを介してアクセスする際にたどる参照の数を低減できる。上記した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
図1は、実施例1に係る計算機の構成図の一例である。 図2は、実施例1に係るオブジェクト管理表の一例である。 図3は、実施例1に係るプロキシオブジェクトのデータ構造の一例を示す図である。 図4は、実施例1に係るオブジェクト登録処理のフローチャートである。 図5は、実施例1に係るオブジェクトインデックス表の一例である。 図6は、実施例1に係るプロキシオブジェクト生成・設定処理のフローチャートである。 図7は、実施例1に係るオブジェクト取得処理のフローチャートである。 図8は、実施例1に係るオブジェクトのデータ操作処理のフローチャートである。 図9は、実施例1に係るオブジェクトの再登録処理のフローチャートである。 図10は、実施例2に係る計算機の構成図の一例である。 図11は、実施例2に係るオブジェクト登録処理のフローチャートである。 図12は、実施例2に係る代表プロキシオブジェクト提供処理のフローチャートである。 図13は、実施例4に係る遅延プロキシオブジェクト参照設定処理前のオブジェクト状態を説明する図である。 図14は、実施例4に係るオブジェクト取得処理のフローチャートである。 図15は、実施例4に係るオブジェクト操作処理のフローチャートである。 図16は、実施例4に係る遅延プロキシオブジェクト参照設定処理後のオブジェクト状態を説明する図である。 図17は、実施例4に係る遅延プロキシオブジェクト生成処理前のオブジェクト状態を説明する図である。 図18は、実施例5に係る遅延プロキシオブジェクト生成処理のフローチャートである。 図19は、実施例5に係る遅延プロキシオブジェクト生成処理後のオブジェクト状態を説明する図である。 図20は、実施例6に係るコレクションへの間接参照を代表するプロキシオブジェクトを説明する図である。 図21は、実施例6に係るコレクション要素への間接参照処理のフローチャートである。 図22は、実施例2に係るオブジェクトへの間接参照を実現するプロキシオブジェクトのデータ構成の一例を説明する図である。 図23は、実施例2に係る代表プロキシオブジェクトを複製して利用する例を説明する図である。 図24は、実施例1に係るプロキシオブジェクトを生成するプログラムコードの一例を説明する図である。 図25は、実施例1に係るプロキシオブジェクトからオブジェクトへの参照を生成するプログラムコードの一例を説明する図である。 図26は、実施例1に係るプログラムコード管理表の一例である。 図27は、実施例1に係るプロキシオブジェクトプログラムコード生成処理のフローチャートである。
 以下、複数の実施例について、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 なお、以下の説明では、「xxx表」の表現にて各種情報を説明することがあるが、各種情報は、表以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxx表」を「xxx情報」と呼ぶことができる。
 以下の説明では、プログラムに対応する「xx部」、「xxオブジェクト」を主語として処理を説明する場合があるが、xx部、xxオブジェクトは、計算機に含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信装置等を用いながら行うため、処理の主語がプロセッサとされてもよい。xx部、xxオブジェクトを主語として説明された処理は、プロセッサが行う処理としても良い。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
 実施例1では、参照関係を持つオブジェクト群のうち、任意のオブジェクトへプロキシオブジェクトを介して間接参照する際にたどる参照の数を低減することのできるプロキシオブジェクトのデータ構造と、オブジェクト管理装置の例を説明する。
 図1は、実施例1に係る計算機の構成図である。
 オブジェクト管理装置の一例である計算機101は、メモリ111と、CPU112と、通信装置113と、ハードディスクなどの記憶装置114とを備える。計算機101は、一般的なコンピュータを用いて実現することができる。計算機101には、入力装置115と、表示装置116とが接続可能となっている。入力装置115は、キーボードやマウスなどの計算機101に指示を入力するための装置であり、プログラム起動などの指示の入力を受け付ける。表示装置116は、ディスプレイなどであり、計算機101による処理の実行状況や実行結果などを表示する。
 通信装置113は、LAN(Local Area Network)などを介して、他の装置と各種データやコマンドを交換する。記憶装置114は、計算機101が処理を実行するための各種プログラム121やデータ122を保存する。メモリ111は、計算機101が処理を実行する各種プログラム121および一時的なデータ122を保持する。CPU112は、メモリ111に格納される各種プログラムを実行する。具体的には、CPU112は、記憶装置114に格納されたプログラム121とデータ122とをメモリ111に読み出して実行する。
 プログラム121は、ユーザプログラム実行部131、オブジェクト管理部132、オブジェクト保持部133、オブジェクト構造解析部134、プロキシオブジェクト生成部135、プロキシオブジェクト保持部136、プロキシオブジェクト参照設定部137を含む。
 ユーザプログラム実行部131は、プロキシオブジェクトを生成するプログラムコード、プロキシオブジェクトからオブジェクトへの参照を生成するプログラムコードを含む。
 図24は、実施例1に係るプロキシオブジェクトを生成するプログラムコードの一例を説明する図である。図25は、実施例1に係るプロキシオブジェクトからオブジェクトへの参照を生成するプログラムコードの一例を説明する図である。
 ユーザプログラム実行部131は、プロキシオブジェクトを定義するプログラムコード(プロキシオブジェクトプログラムコード)2501、オブジェクトを定義するプログラムコード(オブジェクトプログラムコード)2502等のプログラムコードを含む。
 図24に示すプログラムコードの場合には、ユーザプログラム実行部131は、オブジェクトプログラムコード2502の定義に基づいて、data_1(データ1)にデータ(ここでは、例えば、100)を与えることでオブジェクト2504を生成し、メモリ111に保持させる。この時、ユーザプログラム実行部131は、オブジェクト2504に、その定義であるオブジェクトプログラムコード2502を一意に識別する情報(オブジェクトプログラムコードのIDやアドレス)も保持させる。この情報によると、オブジェクト2504から生成に使用したオブジェクトプログラムコード2502を特定することができる。
 プロキシオブジェクト生成部135は、プロキシオブジェクトプログラムコード2501の定義に基づいて、プロキシオブジェクト2503を生成し、メモリ111に保持させる。この時、プロキシオブジェクト生成部135は、プロキシオブジェクト2503に、その定義であるプロキシオブジェクトプログラムコード2501を一意に識別する情報(プロキシオブジェクトプログラムコードのIDやアドレス)も保持させる。この情報によると、プロキシオブジェクト2503から生成に利用したプロキシオブジェクトプログラムコード2502を特定することができる。
 プロキシオブジェクト参照設定部137は、図25の点線で囲まれたset記述部2505を呼び出し、オブジェクト2504へのアドレス(参照情報)をプロキシオブジェクト2503に入力する。この入力操作により、図25の矢印2506で示されるように、プロキシオブジェクト2503からオブジェクト2504をたどることができる参照が設定される。
 オブジェクト2504を参照するプロキシオブジェクト2503を定義するプロキシオブジェクトプログラムコード2501には、オブジェクト2504のアドレスを保持する必要がある。プロキシオブジェクトプログラムコード2501は、オブジェクトプログラムコード2502を作成したプログラム作成者が作成して、ユーザプログラム実行部131に含ませてもよい。また、CPU112が記憶装置114のプログラム121をメモリ111に読み込んだ際に、プロキシオブジェクト生成部135が、オブジェクトプログラムコード2502に基づいて、プロキシオブジェクトプログラムコード2501を生成してもよい。
 図27は、実施例1に係るプロキシオブジェクトプログラムコード生成処理のフローチャートである。
 このプロキシオブジェクトプログラムコード生成処理は、例えば、ユーザプログラム実行部131でオブジェクトに対する処理が実行される前に、実行される。例えば、Javaの場合には、オブジェクトを生成する場合には、そのテンプレートとなるクラスを読み込み、クラスからそのインスタンスとなるオブジェクトを生成するが、プロキシオブジェクトプログラムコード生成処理は、クラスを読み込んでから、オブジェクトを生成する前に実行される。
 まず、プロキシオブジェクト生成部135が、オブジェクトを定義するオブジェクトプログラムコード2502を読み込む(ステップ2801)。次に、プロキシオブジェクト生成部135が、オブジェクトプログラムコード2502に記述されるdata_1を操作するデータI/Fであるreadとwriteを呼び出すデータI/Fと、オブジェクトプログラムコード2502を実体化したオブジェクトのアドレス(参照情報)とを有するデータ構造を含むプロキシオブジェクトプログラムコード2501を生成する(ステップ2802)。そして、プロキシオブジェクト生成部135が、生成したプロキシオブジェクトプログラムコードに任意のプロキシオブジェクトIDを付与する(ステップ2803)。次に、プロキシオブジェクトID、プロキシオブジェクトプログラムコード名、オブジェクトプログラムコード名をメモリ111のプログラムコード管理表2600(図26参照)の同一行に書き込む(ステップ2804)。
 なお、プロキシオブジェクトによる間接参照を用いて、Copy on
Writeを実現する場合には、ステップ2802において、参照先オブジェクトのコピー処理を追記する。具体的には、例えば、copyOfで示される参照先オブジェクトのコピー処理をプロキシオブジェクトプログラムコード2501のwrite処理の先頭に追記する。このコピー処理により、write時にオブジェクトのコピーを実施するCopy on writeを実現することができる。
 上記プロキシオブジェクトプログラムコード生成処理により、オブジェクトコード名とプロキシオブジェクトプログラムコード名とをプロキシオブジェクトIDにより結びつけたプログラムコード管理表2600を生成することができる。
 図26は、実施例1に係るプログラムコード管理表の一例である。
 プログラムコード管理表2600は、プロキシオブジェクトID2601と、プロキシオブジェクトプログラムコード2602と、オブジェクトプログラムコード2603と対応付けて格納する。プロキシオブジェクトID2601は、プロキシオブジェクトを一意に識別するための識別情報である。プロキシオブジェクトプログラムコード2602は、対応するプロキシオブジェクトを作成するためのプロキシオブジェクトプログラムコードの名称である。オブジェクトプログラムコード2603は、対応するプロキシオブジェクトにより参照されるオブジェクトを作成するためのオブジェクトプログラムコードの名称である。
 図1の説明に戻り、ユーザプログラム実行部131は、計算機101を利用するユーザが作成したユーザプログラムである。ユーザプログラム実行部131において、特定オブジェクトの永続化が命令された場合には、オブジェクト管理部132は、オブジェクト保持部133に特定オブジェクトと、特定オブジェクトから直接的または間接的に参照できるオブジェクトの全てをオブジェクト群として登録する。
 オブジェクト構造解析部134は、オブジェクト保持部133に登録されたオブジェクト群と、それらオブジェクト群のそれぞれのオブジェクトの参照先を解析することで、オブジェクト管理表200(図2参照)を生成する。例えば、オブジェクト構造解析部134は、オブジェクトに対応付けられているオブジェクトプログラムコードを特定し、プログラムコード管理表2600からオブジェクトプログラムコードに対応するプロキシオブジェクトIDを特定し、オブジェクト管理表200に登録する。
 図2は、実施例1に係るオブジェクト管理表の一例である。
 オブジェクト管理表200は、オブジェクトID201と、参照先ID202と、プロキシオブジェクトID203とを対応付けて記憶する。オブジェクトID201は、登録されたオブジェクトを一意に識別するIDである。参照先ID202は、対応するオブジェクトの参照先となるオブジェクト(後段のオブジェクト)を一意に識別するオブジェクトIDである。なお、対応するオブジェクトに参照先が存在しなければ、参照先IDは格納されない。プロキシオブジェクトID203は、対応するオブジェクトに対する間接参照を実現するためのプロキシオブジェクトプログラムコードを一意に識別するIDである。プロキシオブジェクトID203は、プログラムコード管理表2600に登録されたものと対応する。
 プロキシオブジェクト生成部135は、オブジェクト管理表200を用いて、オブジェクト保持部136に登録されたオブジェクトへの間接参照と、他のプロキシオブジェクトへの直接参照を実現するデータ構造を保持するプロキシオブジェクトの集合(プロキシオブジェクト群)を生成し、プロキシオブジェクト保持部136に登録する。
 図3は、実施例1に係るプロキシオブジェクトのデータ構造の一例を示す図である。
 ここで、オブジェクトOBJは、図3に示すように、オブジェクトを一意に識別するID301と、オブジェクトで管理されるデータ302、303、・・・(データ1、データ2、・・・)と、オブジェクトが参照する他のオブジェクト(後段のオブジェクト)を示す参照情報を格納する参照先304(参照先1)とを含むデータ構造となっている。なお、オブジェクトOBJが複数のオブジェクトOBJを参照する場合には、参照先304が複数設けられる。
 プロキシオブジェクトPOBは、プロキシオブジェクトを一意に識別するID311、プロキシオブジェクトによる間接参照先となるオブジェクトOBJへの参照情報を保持する参照312(O参照)、プロキシオブジェクトによる間接参照先となるオブジェクトOBJが保持するデータへのアクセスインターフェースを定義するデータI/F313、間接参照先となるオブジェクトOBJが参照している他のオブジェクトを間接参照先としている他のプロキシオブジェクト(後段のプロキシオブジェクト)への参照情報を保持する参照314(P参照)を含むデータ構造となっている。なお、プロキシオブジェクト生成部135がオブジェクト管理表200を参照してプロキシオブジェクト群を生成した後は、オブジェクト管理表200をメモリ111から破棄してもよいし、そのまま保持していてもよい。
 プロキシオブジェクト参照設定部137は、オブジェクト保持部133に登録されたオブジェクト群に対して、以下に示す参照情報設定処理を実行する。すなわち、プロキシオブジェクト参照設定部137は、オブジェクト保持部133に登録した多段の参照関係を保持するオブジェクト群に対して、参照元となるオブジェクト(前段のオブジェクト)への間接参照を実現するプロキシオブジェクト(前段のプロキシオブジェクト)と、前段のオブジェクトの参照先となるオブジェクト(後段のオブジェクト)への間接参照を実現するプロキシオブジェクト(後段のプロキシオブジェクト)を識別し、前段のプロキシオブジェクトのO参照312に前段のオブジェクトへの参照情報を設定し、後段のプロキシオブジェクトのO参照312に後段のオブジェクトへの参照情報を設定する。また、プロキシオブジェクト参照設定部137は、前段のプロキシオブジェクトのP参照314に後段のプロキシオブジェクトへの参照情報を設定する。
 このような参照情報設定処理により、プロキシオブジェクト参照設定部137は、図3に示すようなプロキシオブジェクト群のそれぞれのプロキシオブジェクトPOBからオブジェクト群の対応するオブジェクトOBJへの一方向の参照関係を生成する。ここで、矢印の起点が参照元を示し、矢印の終点が参照先を示している。
 ユーザプログラム実行部131は、オブジェクト保持部133に対してオブジェクト管理部132を介して、オブジェクトの登録と取得を行う。また、ユーザプログラム実行部131は、オブジェクト管理部132からプロキシオブジェクトを伴って取得したオブジェクトが保持するデータに対するread(読み出し)とwrite(書き込み)を実行する。また、ユーザプログラム実行部131は、writeを実施したオブジェクトをオブジェクト管理部132を介して再登録する。
 ユーザプログラム実行部131での各処理に伴って実施する処理の詳細を以降で説明する。
 図4は、実施例1に係るオブジェクト登録処理のフローチャートである。
 オブジェクト管理部132は、ユーザプログラム実行部131からオブジェクトの登録要求が発生するまで待機する(ステップ401)。
 オブジェクトの登録としては、例えばユーザプログラム実行部131で登録対象のオブジェクトを識別するキーを生成し、そのキーで一意に識別するオブジェクトをバリューとするキー、バリュー型での登録であってもよいし、登録対象のオブジェクトへアクセスするキーやポインタをオブジェクト管理部132が生成してユーザプログラム実行部131に送付するようにしてもよい。また、オブジェクトの登録を受信した後に、オブジェクトの内部情報を用いてインデックスを作成して、検索可能となるように管理してもよい。ここでは、ユーザプログラム実行部131がオブジェクトを一意に識別するキーを伴った登録要求を発生させるキー、バリュー型を例にして説明する。
 登録要求が発生すれば(ステップ401でYes)、オブジェクト管理部132は登録対象のオブジェクトから参照をたどることで到達できるオブジェクトの全てをオブジェクト群としてオブジェクト保持部133に複製または移動する(ステップ402)。なお、オブジェクト群のうち既にオブジェクト管理部132に登録済みのオブジェクトが存在する場合は、登録済みオブジェクトを無視して別のオブジェクトとして登録してもよいし、登録済みのオブジェクトを上書きしてもよい。
 ステップ402の後は、オブジェクト管理部132は、オブジェクト群のうち登録対象のオブジェクト(起点オブジェクト)を一意に識別するキー情報をユーザプログラム実行部131から受信し、キーと移動または複製した起点オブジェクトを示す起点オブジェクトIDをそれぞれオブジェクトインデックス表(図5参照)のキーと起点オブジェクトIDに登録する(ステップ403)。
 図5は、実施例1に係るオブジェクトインデックス表の一例である。
 オブジェクトインデックス表500は、キー501と、起点オブジェクトID502と、起点プロキシオブジェクトID503とを対応付けて記憶する。キー501は、起点オブジェクトを一意に識別するキー情報である。起点オブジェクトID502は、対応する起点オブジェクトのIDである。起点プロキシオブジェクトID503は、起点オブジェクトを間接参照するためのプロキシオブジェクト(起点プロキシオブジェクト)のIDである。
 オブジェクト登録処理により、オブジェクト群の登録が完了した後に、プロキシオブジェクト生成・設定処理が実行される。
 プロキオブジェクト生成・設定処理では、オブジェクト構造解析部134がオブジェクト群の構造を解析する。次いで、解析結果を用いて、プロキシオブジェクト生成部135がオブジェクト群への間接参照を実現するプロキシオブジェクトを生成し、プロキシオブジェクト参照設定部137がプロキシオブジェクトとオブジェクト、プロキシオブジェクトとプロキシオブジェクトの間の参照を設定する。次に、このプロキシオブジェクト生成・設定処理を、フローチャートを用いて説明する。
 図6は、実施例1に係るプロキシオブジェクト生成・設定処理のフローチャートである。 
 まず、オブジェクト構造解析部134は、オブジェクト保持部133に登録されたオブジェクト群を解析することで、各オブジェクトのオブジェクトID、参照先ID、プロキシオブジェクトIDを取得し、オブジェクト管理表200を生成し、プロキシオブジェクト生成部135に処理を引き継ぐ(ステップ601)。
 プロキシオブジェクト生成部135は、オブジェクト保持部133に登録されたオブジェクトの型情報から、その定義であるオブジェクトプログラムコードを特定する(ステップ601-1)。次に、プロキシオブジェクト生成部135は、特定したオブジェクトプログラムコードと同じプロキシオブジェクトIDで結びつけられるプロキシオブジェクトプログラムコードを取得する(ステップ601-2)。そして、プロキシオブジェクト生成部135は、取得したプロキシオブジェクトプログラムコードから、オブジェクト保持部133に登録された各オブジェクトへのデータアクセスIF313(データI/F)と、O参照312と、P参照314とを実現するデータフィールドを持つプロキシオブジェクトPOBを生成し、プロキシオブジェクト保持部136に登録する(ステップ602)。ステップ602では、プロキシオブジェクトPOBのO参照312と、P参照314とに参照先を登録する処理を行わない。なお、O参照312とP参照314に、参照先を登録する処理は、以降に実行される。
 ステップ602でのプロキシオブジェクト生成が完了すると、プロキシオブジェクト生成部135は、オブジェクト群の起点オブジェクトへの間接参照を実現するプロキシオブジェクト(起点プロキシオブジェクト)のID(起点プロキシオブジェクトID)を、オブジェクトインデックス表500の対応する行の起点プロキシオブジェクトIDとして登録し、プロキシオブジェクト参照設定部137に処理を引き継ぐ(ステップ603)。
 プロキシオブジェクト参照設定部137は、起点プロキシオブジェクトを、O参照とP参照とを設定する対象のプロキシオブジェクト(参照設定プロキシオブジェクト)として選択する(ステップ604)。続いてプロキシオブジェクト参照設定部137は、ステップ601で取得したプロキシオブジェクトIDとオブジェクトIDとから参照設定プロキシオブジェクトにより間接参照されるオブジェクトを特定し、参照設定プロキシオブジェクトのO参照312に特定したオブジェクトのIDを登録する(ステップ605)。
 その後、プロキシオブジェクト参照設定部137は、参照設定プロキシオブジェクトのO参照312のIDに対応するオブジェクトが参照する他のオブジェクトのID(参照先ID)があるか否かを、ステップ601で取得したオブジェクトID、参照先IDを用いて確認する(ステップ606)。参照先IDが存在しなければ(ステップ606でNo)、ステップ608に進む。一方、参照先IDが存在すれば(ステップS606でYes)、プロキシオブジェクト参照設定部137は、参照先IDのオブジェクトを間接参照するためのプロキシオブジェクトのIDをオブジェクト管理表200から取得し、取得したプロキシオブジェクトIDで示されるプロキシオブジェクトを参照設定プロキシオブジェクトのP参照314に登録し、ステップ608に進む(ステップ607)。
 ステップ608では、ステップ602でプロキシオブジェクト生成部135が生成したプロキシオブジェクト群から参照設定プロキシオブジェクトとして未選択のプロキシオブジェクトが存在するか確認する。未選択のプロキシオブジェクトが存在すれば(ステップ608でYes)、未選択のプロキシオブジェクトからO参照とP参照とを設定する参照設定プロキシオブジェクトを選択し、ステップ604からの処理を実行する。未選択のプロキシオブジェクトが存在しなければ(ステップ608でNo)、処理を終了する。
 このプロキシオブジェクト生成・設定処理は、オブジェクトを登録する際に実行してもよいし、オブジェクトの取得要求を受信してから実行してもよい。また、プロキシオブジェクト生成・設定処理におけるプロキシオブジェクトを生成する処理(プロキシオブジェクト生成処理)と、プロキシオブジェクトに参照設定をする処理(プロキシオブジェクト設定処理)とを分割し、プロキシオブジェクト生成処理をオブジェクト登録時に実行し、プロキシオブジェクト設定処理をオブジェクト取得時に実行するようにしてもよい。さらに、プロキシオブジェクト設定処理をさらに分割し、プロキシオブジェクトにP参照を設定する処理をオブジェクト登録時に実行し、プロキシオブジェクトにO参照を設定する処理をオブジェクト取得時に行うようにしてもよい。
 次に、オブジェクト管理部132を介して過去に登録したオブジェクトを取得するオブジェクト取得処理をフローチャートに従って説明する。
 図7は、実施例1に係るオブジェクト取得処理のフローチャートである。
 オブジェクト管理部132は、ユーザプログラム実行部131からオブジェクトを一意に識別するキーを伴うオブジェクトの取得要求が発生するまで待機する(ステップ701)。オブジェクトの取得要求が発生すれば(ステップ701でYes)、オブジェクト管理部132は、オブジェクト取得要求に付随するキーを用いて、オブジェクトインデックス表500から該当するオブジェクトIDと起点プロキシオブジェクトIDを取得する(ステップ702)。そして、オブジェクト管理部132は、取得した起点プロキシオブジェクトIDが示すプロキシオブジェクトをユーザプログラム実行部131に送信する(ステップ703)。これにより、ユーザプログラム実行部131は、取得要求の対象のオブジェクトを読み出すプロキシオブジェクト又は、そのプロキシオブジェクトに到達することのできるプロキシオブジェクトを取得することとなる。
 なお、プロキシオブジェクトの送信時において、オブジェクト管理部132は、ユーザプログラム実行部131に対して、プロキシオブジェクトと、そのプロキシオブジェクトから参照されるプロキシオブジェクトを複製して送信してもよいし、プロキシオブジェクトを送信した後に、再び同じプロキシオブジェクトを生成してもよい。
 上記したように、ユーザプログラム実行部131がオブジェクト管理部132を介してプロキシオブジェクトを取得した後は、ユーザプログラム実行部131は取得したプロキシオブジェクトを介してオブジェクトが保持するデータに対するreadとwriteの操作を行うことができるようになる。
 次に、ユーザプログラム実行部131でプロキシオブジェクトを介して、オブジェクトのデータに対するreadやwriteの操作を行うオブジェクトのデータ操作処理をフローチャートに従って説明する。
 図8は、実施例1に係るオブジェクトのデータ操作処理のフローチャートである。
 ユーザプログラム実行部131は、起点プロキシオブジェクトに対してデータ操作対象のオブジェクトへの到達経路情報(参照経路情報)とそのデータが格納される属性をデータread要求として送付する(ステップ801)。続いて、起点プロキシオブジェクトは、受信した到達経路情報を用いて、P参照314に保持する参照情報をたどることで目標の属性を持つオブジェクトOBJへの間接参照を実現するプロキシオブジェクトPOBに到達する(ステップ802)。
 ここで、到達経路情報とは、例えば、「オブジェクト1からオブジェクト2を介して、目標(データ操作対象)であるオブジェクトNに到達する」と表現されるような目標オブジェクトに到達するために経由するオブジェクトの情報である。この到達経路情報に含まれるオブジェクトを、各オブジェクトへの間接参照を実現するプロキシオブジェクトに置換することで「プロキシオブジェクト1からプロキシオブジェクト2を介して、目標であるプロキシオブジェクトNに到達する」のような、オブジェクトの到達経路に対応するプロキシオブジェクトの到達経路情報(プロキシオブジェクト到達経路情報)を生成する。このプロキシオブジェクト到達経路情報を生成することで、オブジェクト1の間接参照を実現するプロキシオブジェクト1から、オブジェクト2等のオブジェクトを介さずにプロキシオブジェクトを介して、オブジェクトNの間接参照を実現するプロキシオブジェクトNに到達することができる。
 このプロキシオブジェクト到達経路情報を用いて、目標となるオブジェクトへ間接参照可能なプロキシオブジェクト(目標プロキシオブジェクト)に到達した後は、ユーザプログラム実行部131が、目標プロキシオブジェクトが保持するデータI/Fを介して目標のオブジェクトに対するデータ操作を試行する(ステップ803)。この時、目標プロキシオブジェクトのデータI/Fは、ユーザプログラム実行部131によるデータ操作がreadかwriteかを判定する(ステップ804)。データ操作がreadの場合(ステップ804でRead)は、目標プロキシオブジェクトは、ユーザプログラム実行部131に、オブジェクトのデータを読み込ませて処理を終了する(ステップ805)。
 一方、データ操作がwriteの場合(ステップ804でWrite)は、目標プロキシオブジェクトは、間接参照するオブジェクトの複製をメモリ111に生成する(ステップ806)。目標オブジェクトを複製した後は、プロキシオブジェクトPOBのO参照312を複製元オブジェクトOBJへの参照から複製先オブジェクトOBJへの参照へ変更する(ステップ807)。プロキシオブジェクトPOBのO参照312の変更が完了すれば、プロキシオブジェクトは、複製先のオブジェクトに対してwrite操作を適用して処理を終了する(ステップ808)。なお、間接参照するオブジェクトが複製済みである場合に、プロキシオブジェクトに複製済みフラグを持たせるようにし、データ操作がwriteの場合に、複製済みフラグを確認することで、同一のオブジェクトへのwrite時にオブジェクトを複製する処理を初回だけにするようにしてもよい。
 オブジェクトの内部情報をwriteした後に、このオブジェクトを永続化する場合には、オブジェクト保持部136に保持されたwrite前のオブジェクトを、write後のオブジェクトに更新する再登録処理を実行する必要がある。この再登録処理をフローチャートに従って説明する。
 図9は、実施例1に係るオブジェクトの再登録処理のフローチャートである。
 オブジェクト管理部132は、ユーザプログラム実行部131から登録対象のオブジェクト群の起点オブジェクトを一意に識別するキーを伴ったオブジェクトの登録要求が発生するまで待機する(ステップ901)。オブジェクトの再登録要求が発生すれば(ステップ901でYes)、オブジェクト管理部132は、起点プロキシオブジェクト及び起点プロキシオブジェクトから到達可能なプロキシオブジェクトから間接参照可能なプロキシオブジェクトではないオブジェクトを求め、当該オブジェクトに対するwriteの有無を確認してステップ903に進む(ステップ902)。オブジェクトに対するwriteの有無の確認方法としては、例えば、プロキシオブジェクトPOBのO参照312のオブジェクトを複製した場合に、複製を実施したことを示す複製済フラグをプロキシオブジェクトに保持させ、オブジェクトの再登録時に、その複製済フラグを確認することで確認するようにしてもよい。また、登録済みオブジェクト群と再登録対象のオブジェクト群との内部情報を比較し、内部情報が異なればwriteが発生したと判定するようにしてもよい。
 ステップ903では、writeが無ければ(ステップ903でNo)、登録済みのデータとの変更点は無いと判断して登録処理を終了する。一方、writeがあれば(ステップ903でYes)、オブジェクト管理部132は、writeが発生して複製が実施されたオブジェクトの複製先と、writeが発生したオブジェクトへの間接参照を実現するプロキシオブジェクトを参照するプロキシオブジェクト群をステップ902で取得した全プロキシオブジェクトから抽出する(ステップ904)。そして、オブジェクト管理部132は、抽出したプロキシオブジェクトによって間接参照を実現するオブジェクトOBJの参照先304をステップ904で取得したオブジェクトの複製先に変更してオブジェクトの再登録処理を終了する(ステップ905)。
 実施例1によると、プロキシオブジェクトのデータ構造に、オブジェクトの参照関係に対応するプロキシオブジェクトへの参照を保持するP参照を加えることと、データ構造を保持するプロキシオブジェクトを管理することで、起点プロキシオブジェクトからプロキシオブジェクトだけを経由することで任意のオブジェクトへの間接参照を実現する目標プロキシオブジェクトへの到達を可能にする。これにより、目標オブジェクトに到達するために非プロキシオブジェクトを経由する必要がなくなり、参照数を低減することができる。このため、プロキシオブジェクトを用いて間接参照する任意のオブジェクトへのアクセスを高速化することができる。
 永続化したオブジェクトに対するread/write性能を向上させるにはオブジェクトキャッシュの利用が有効である。また、オブジェクトキャッシュを利用する環境で、データ一貫性を保ったままread性能を向上させるには、Copy on Writeの利用が有効である。Copy on Writeを実現するためには、永続化のためにオブジェクトキャッシュに登録したオブジェクトに対してプロキシオブジェクトを介した間接参照を実現する必要がある。ただし、登録したオブジェクトとそのオブジェクトから参照できるオブジェクト全てに対してプロキシオブジェクトを生成すると、登録したオブジェクト数に比例したプロキシオブジェクトが必要となる。プロキシオブジェクトは、プロキシオブジェクトが参照するオブジェクトへの参照情報を保持しているため、プロキシオブジェクトによるメモリ消費量が増加してメモリ111にキャッシュできるオブジェクト数が低下する。
 このオブジェクトキャッシュに登録するオブジェクト群には同じデータ構造と参照関係を持つオブジェクトが複数含まれるため、オブジェクト群への間接参照を実現するために生成するプロキシオブジェクト群には、同じデータアクセスI/Fを持つプロキシオブジェクトが複数含まれる。
 図22は、実施例2に係るオブジェクトへの間接参照を実現するプロキシオブジェクトのデータ構成を説明する図である。
 例えば、図22に示すように、オブジェクト保持部133には、オブジェクトA1とオブジェクトB1が存在し、オブジェクトA1からオブジェクトB1への参照が存在するとする。また、図22に示すように、プロキシオブジェクト保持部136には、オブジェクトA1とオブジェクトB1への間接参照を実現するプロキシオブジェクトPA1、PB1が存在するとする。オブジェクトA1とオブジェクトB1への間接参照を実現するためにプロキシオブジェクトPA1は、O参照にA1、P参照にPB1を保持し、オブジェクトA1の内部情報へのデータアクセスI/Fを保持することとなる。
 ここで、オブジェクトA1とオブジェクトB1と同じデータ構造及び参照関係を持つオブジェクトA2とオブジェクトB2が存在する場合には、オブジェクトA2とオブジェクトB2への間接参照を実現するためにプロキシオブジェクトPA2、PB2が生成されることになる。このプロキシオブジェクトPA2及びPB2は、プロキシオブジェクトPA1及びPB1とは、O参照のみが異なるプロキシオブジェクトである。
 これは、例えば、Javaであれば、同一クラスAから別インスタンスとして、オブジェクトA1とA2を生成した場合に発生する。オブジェクトB1とB2についても同様である。プロキシオブジェクトPA1とPB1は、そのO参照をオブジェクトA2とB2に変更することでオブジェクトA2とオブジェクトB2のそれぞれへの間接参照を実現することができる。
 このことは、O参照にオブジェクトへの参照を登録しないプロキシオブジェクトPA1、PB1を代表プロキシオブジェクトとして1組保持しておけば、この代表プロキシオブジェクトを用いて、オブジェクトA1及びB1、またはオブジェクトA2及びB2への間接参照を容易に実現することができること意味している。
 図23は、実施例2に係る代表プロキシオブジェクトを複製して利用する例を説明する図である。
 具体的には、例えば、図23に示すように、ユーザプログラム実行部131からオブジェクトA2及びB2に対するオブジェクト取得要求が発生した後に、プロキシオブジェクトPA1及びPB1を複製し、その複製したプロキシオブジェクトPA1’及びPB1’のそれぞれのO参照にオブジェクトA2とオブジェクトB2への参照をそれぞれ登録し、ユーザプログラム実行部131に送信することで、オブジェクトA2及びB2への間接参照を実現できる。
 このように、同じデータアクセスI/Fと、オブジェクト間の参照関係と、を保持するオブジェクト群に対しては、1組の代表プロキシオブジェクトを準備しておき、オブジェクトの取得要求があった時にのみ代表プロキシオブジェクトを複製し、その複製のO参照を変更することで、取得要求のあったオブジェクトに対する間接参照を実現できる。代表プロキシオブジェクトを用いることで、オブジェクト数に比例して必要であったプロキシオブジェクト数を低減することができる。
 このような代表プロキシオブジェクトを利用する実施例2に係るオブジェクト管理装置を以下に説明する。
 図10は、実施例2に係る計算機の構成図である。
 実施例2に係るオブジェクト管理装置の一例としての計算機101は、図1に示す計算機を実現するプログラムに対して、オブジェクト保持部133に追加されたオブジェクト群に対して既存の代表プロキシオブジェクトにより間接参照を実現できるかを判定する代表プロキシオブジェクト確認部138を追加するとともに、プロキシオブジェクト保持部136を代表プロキシオブジェクトを保持する代表プロキシオブジェクト保持部136に変更したものである。
 図11は、実施例2に係るオブジェクト登録処理のフローチャートである。
 オブジェクト構造解析部134は、オブジェクトとそのオブジェクトから参照できる(到達できる)オブジェクト全てからなるオブジェクト群が、オブジェクト保持部133に登録されるまで待機する(ステップ1101)。オブジェクト構造解析部134がオブジェクト保持部133へのオブジェクト群の登録を検知すれば(ステップ1101でYes)、ステップ1102に進む。ステップ1102では、オブジェクト構造解析部134が登録されたオブジェクト群を解析することで、各オブジェクトの参照先と間接参照を実現するプロキシオブジェクトを抽出し、オブジェクト管理表200を生成する(ステップ1102)。
 ここでの解析とは、例えば、オブジェクトの内部情報からオブジェクトの型(オブジェクト型)と他のオブジェクトへの参照とを抽出し、抽出したオブジェクト型を持つオブジェクトへの間接参照を実現するプロキシオブジェクトを特定することである。ここで、ステップ1102で、登録を検知したオブジェクト群の起点のオブジェクトを説明のため追加起点オブジェクトと呼ぶ。
 ステップ1102の後に、既存の代表プロキシオブジェクトにより、登録されたオブジェクト群の間接参照が可能か判定するためステップ1103に進む。ステップ1103では、代表プロキシオブジェクト確認部138が、オブジェクト管理表200を用いて追加起点オブジェクトへの間接参照を実現するプロキシオブジェクトを示すID(追加起点プロキシオブジェクトID)を取得する。次に、代表プロキシオブジェクト確認部138が、オブジェクトインデックス表500の起点プロキシオブジェクトIDと一致する追加起点プロキシオブジェクトIDが存在するか否かを確認する(ステップ1104)。
 存在しなければ(ステップ1104でNo)、代表プロキシオブジェクト確認部138は、既存の代表プロキシオブジェクトが存在しないとして、代表プロキシオブジェクトを生成するためにプロキシオブジェクト生成部135に処理を引き継ぐ(ステップ1105)。一方、存在すれば(ステップ1104でYes)、代表プロキシオブジェクト確認部138は、起点プロキシオブジェクトIDと一致する代表プロキシオブジェクトの起点が存在するとして、追加起点オブジェクトから参照するオブジェクトも代表プロキシオブジェクトにより間接参照を実現できるか否かを確認するためステップ1106に進む。ステップ1106では、オブジェクト管理表200を用いて追加起点オブジェクトから参照されるオブジェクトが存在するか確認する。
 この結果、存在しなければ(ステップ1106でNo)、代表プロキシオブジェクト確認部138は、オブジェクト保持部133に追加したオブジェクト群は既存の代表プロキシオブジェクトで間接参照できると判定して処理を終了する。一方、存在すれば(ステップ1106でYes)、代表プロキシオブジェクト確認部138は、追加起点オブジェクトから参照されるオブジェクトへの間接参照を実現するプロキシオブジェクトを示すプロキシオブジェクトID(追加参照先プロキシオブジェクトID)を取得する(ステップ1107)。
 そして、代表プロキシオブジェクト確認部138は、代表プロキシオブジェクトの起点から参照するプロキシオブジェクト(群)を識別する参照先プロキシオブジェクトID(群)を取得する(ステップ1108)。続いて、代表プロキシオブジェクト確認部138は、取得した参照先プロキシオブジェクトID(群)に追加参照先プロキシオブジェクトIDが全て含まれるか否かを確認する(ステップ1109)。含まれなければ(ステップ1109でNo)、既存の代表プロキシオブジェクトが存在しないとして、代表プロキシオブジェクトを生成するためにプロキシオブジェクト生成部135に処理を引き継ぐ(ステップ1105)。
 一方、含まれれば(ステップ1109でYes)、代表プロキシオブジェクト確認部138は、追加参照先プロキシオブジェクトIDと参照先プロキシオブジェクトIDが一致するペアを生成し、各ペアに対して追加参照先プロキシオブジェクトIDで示されるプロキシオブジェクトにより間接参照されるオブジェクトを追加起点オブジェクト、参照先プロキシオブジェクトIDで示されるプロキシオブジェクトを代表プロキシオブジェクトの起点とみなしてステップ1106に戻り、同様な代表プロキシオブジェクト確認処理を継続する(ステップ1110)。なお、ステップ1105でプロキシオブジェクト生成部135に処理を引き継ぐ前に、代表プロキシオブジェクト確認部138がステップ1109で代表プロキシオブジェクトとの差分を記録し、プロキシオブジェクト生成部135が代表プロキシオブジェクトに足りないプロキシオブジェクトを追加プロキシオブジェクトとして生成してもよい。
 次に、ユーザプログラム実行部131に代表プロキシオブジェクトを提供する代表プロキシオブジェクト提供処理を説明する。代表プロキシオブジェクト提供処理において、ユーザプログラム実行部131のオブジェクト取得要求に従ってオブジェクト管理部132は、代表プロキシオブジェクトをユーザプログラム実行部131に送信(提供)する。この時、オブジェクト管理部132はオブジェクト保持部133に保持されるオブジェクト群への間接参照を実現するために代表プロキシオブジェクトを探索し、代表プロキシオブジェクト、または、その複製のプロキシオブジェクトのO参照にデータ取得要求で要求されたオブジェクトへの参照を登録することを行う。ここで、代表プロキシオブジェクト提供処理をフローチャートに従って説明する。
 図12は、実施例2に係る代表プロキシオブジェクト提供処理のフローチャートである。 
 オブジェクト管理部132は、ユーザプログラム実行部131からオブジェクトを一意に識別するキーを伴ったオブジェクトの取得要求が発生するまで待機する(ステップ1201)。オブジェクト取得要求が発生すれば(ステップ1201でYes)、オブジェクト管理部132はユーザプログラム実行部131から取得したキーを用いて、オブジェクトインデックス管理表500から、要求されるオブジェクトのオブジェクトIDと起点プロキシオブジェクトIDとを取得し、プロキシオブジェクト参照設定部137に処理を引き継ぐ(ステップ1202)。プロキシオブジェクト参照設定部137は、取得した起点プロキシオブジェクトと、起点プロキシオブジェクトからたどることのできるプロキシオブジェクトとを、P参照314の参照情報を含めて複製する。そして、複製先の起点を起点プロキシオブジェクトとする(ステップ1203)。その後、プロキシオブジェクト参照設定部137は、起点プロキシオブジェクトのO参照312に、ステップ1202で取得したオブジェクトIDで示されるオブジェクトへの参照を登録する(ステップ1204)。
 ステップ1204の後は、プロキシオブジェクト参照設定部137は、起点プロキシオブジェクトのP参照314に登録されたプロキシオブジェクトが存在するか確認する(ステップ1205)。P参照に登録されたプロキシオブジェクトが存在すれば(ステップ1205でYes)、ステップ1206に進む。一方、存在しなければ(ステップ1205でNo)、プロキシオブジェクト参照設定部137は、複製された代表プロキシオブジェクトにオブジェクトへの参照を設定する処理が完了したとしてオブジェクト管理部132に処理を戻してステップ1207に進む。
 ステップ1206では、プロキシオブジェクト参照設定部137は、P参照314に登録されたプロキシオブジェクトのプロキシオブジェクトIDを取得し、オブジェクト管理表200からプロキシオブジェクトIDに対応するオブジェクトIDを取得する。その後、取得したプロキシオブジェクトIDを新たな起点プロキシオブジェクトIDとしてステップ1204に進む。なお、オブジェクト管理表200(図2参照)とは、ユーザプログラム実行部131から取得要求のあったオブジェクトを登録する際に、オブジェクト構造解析部134が生成した表である。オブジェクト管理表200は、オブジェクトの登録が完了すれば破棄して、メモリ111に保持するデータ量を削減できる。ただし、オブジェクトの登録完了後に破棄している場合には、ステップ1202とステップ1203との間において、オブジェクト構造解析部134が取得要求のあったオブジェクトから参照されるオブジェクトを調査し、オブジェクト管理表200を再び生成するステップが必要となる。ステップ1207では、オブジェクト管理部132は、ユーザプログラム実行部131に複製した代表プロキシオブジェクトの起点プロキシオブジェクトを送信する。
 以上のように代表プロキシオブジェクトを導入することで、ユーザプログラム実行部131から取得要求されたオブジェクトに対しての参照に利用するためのプロキシオブジェクトのみを生成すればよい。このため、代表プロキシオブジェクトを用いる方法によると、オブジェクト保持部133に登録されたオブジェクト全てに対応するプロキシオブジェクトを生成する方法に比べてプロキシオブジェクトの生成数を低減することができる。
 実施例2に係る計算機101においては、オブジェクト管理部132は、ユーザプログラム実行部131からのオブジェクト取得要求が発生するたびに代表プロキシオブジェクトを複製する。このため、ユーザプログラム実行部131はオブジェクト取得時には毎回複製処理が完了するまで、プログラムの実行を待機させる必要がある。そこで、実施例3に係るデータ管理装置の一例である計算機101おいては、ユーザプログラム実行部131が代表プロキシオブジェクトの複製を待つ時間を削減するために、同一の代表プロキシオブジェクトを事前に複製して、所定の一定数以上保持しておくようにしている。
 実施例3に係る計算機101においては、例えば、図10を用いて説明すると、オブジェクト管理部132が代表プロキシオブジェクト数を監視し、代表プロキシオブジェクト数が所定の閾値を下回れば、オブジェクト管理部132が代表プロキシオブジェクトの起点プロキシオブジェクトをプロキシオブジェクト生成部135に通知して代表プロキシオブジェクトの複製を実施させる。ここで、閾値としては、任意の値でよいが、ユーザプログラム実行部131での代表プロキシオブジェクト使用状況から決定してもよい。代表プロキシオブジェクト使用状況としては、例えば、ユーザプログラ実行部131で並列に処理を実行するスレッドの最大数や、スレッドで同時使用された代表プロキシオブジェクトの最大数などがある。
 以上のように代表プロキシオブジェクトを事前に複製して代表プロキシオブジェクト保持部136に保持するようにしたために、オブジェクト取得要求が発生した場合に、図12のステップ1203において、代表プロキシオブジェクトを複製する必要がなく、ユーザプログラム実行部131の処理時間が短縮される。
 実施例2、実施例3に係る計算機101においては、オブジェクト管理部132はユーザプログラム実行部131からのオブジェクト取得要求が発生すれば、代表プロキシオブジェクト(群)を構成するプロキシオブジェクトのO参照312に取得要求のあったオブジェクトと、そのオブジェクトから参照できる全てのオブジェクトへの参照を登録する。しかし、ユーザプログラム実行部131は、要求したオブジェクトと、そのオブジェクトから参照できる全オブジェクトに対して、readやwriteといった操作を行うとは限らないため、取得したオブジェクト全てへの間接参照が必要になるとは限らない。
 そこで、実施例4に係る計算機101においては、操作要求が発生したオブジェクトに対してプロキシオブジェクトからの参照を設定することにより、オブジェクト取得時における不要なオブジェクトへの参照設定を省くことができるようにした。ここで、オブジェクトの操作要求があった際に、操作要求のあったオブジェクトに対する参照をプロキシオブジェクトに設定することを、遅延プロキシオブジェクト参照設定ということとする。
 図13は、実施例4に係る遅延プロキシオブジェクト参照設定処理前のオブジェクト状態を説明する図である。
 ここで、実施例4に係る計算機101について、図10に示す計算機との違いを明確にするために、図13を用いて説明する。
 ユーザプログラム実行部131は、間接参照を実現するプロキシオブジェクトPOBと間接参照先のオブジェクトOBJを記憶している。プロキシオブジェクトPOBは、多段の参照関係を保持するオブジェクトOBJへの間接参照を実現するデータ構造をデータ部に持っている。すなわち、各プロキシオブジェクトPOBは、間接参照先のオブジェクトOBJの参照情報を保持するためのO参照312と、間接参照先のオブジェクトが参照する他のオブジェクトへの間接参照を実現するプロキシオブジェクトPOBへの参照情報を保持するためのP参照314を保持している。さらに、プロキシオブジェクトPOBは、ユーザプログラム実行部131によるオブジェクトへの間接参照要求を検知して、オブジェクトへの参照を設定(遅延プロキシオブジェクト参照設定)させる機能を実現するための間接参照追加部139を保持する。
 以下、間接参照追加部139により実現させる遅延プロキシオブジェクト参照設定を、オブジェクト取得と、データのreadやwriteといったオブジェクト操作との2つの処理にわけて説明する。
 オブジェクト取得では、ユーザプログラム実行部131が間接参照追加部139をその機能として保持するプロキシオブジェクトと、そのプロキシオブジェクトによる間接参照を実現するオブジェクトとを取得する。このオブジェクト取得処理の一例をフローチャートに従って説明する。
 図14は、実施例4に係るオブジェクト取得処理のフローチャートである。
 オブジェクト管理部132は、ユーザプログラム実行部131からオブジェクトを一意に識別するキーを伴ったオブジェクトの取得要求が発生するまで待機する(ステップ1501)。オブジェクト取得要求が発生すれば(ステップ1501でYes)、オブジェクト管理部132はユーザプログラム実行部131から取得したキーを用いてオブジェクトインデックス管理表500から、要求されるオブジェクトのオブジェクトIDと起点プロキシオブジェクトIDを取得した後に、プロキシオブジェクト参照設定部137に処理を引き継ぐ(ステップ1502)。プロキシオブジェクト参照設定部137は、代表プロキシオブジェクトから複製され、且つ取得した起点プロキシオブジェクトIDで示されるプロキシオブジェクトPOBのO参照312に、取得したオブジェクトIDで示されるオブジェクトの参照情報を登録する(ステップ1503)。その後、オブジェクト管理部132は、起点プロキシオブジェクトのO参照312にのみ参照先オブジェクトを登録した状態で、ユーザプログラム実行部131に起点プロキシオブジェクトを送信して処理を終了する(ステップ1504)。
 オブジェクト操作では、ユーザプログラム実行部131からの間接参照要求を間接参照追加部139が検知した後に、オブジェクト構造解析部134とプロキシオブジェクト参照設定部137とが通信することで、プロキシオブジェクトからオブジェクトへの参照を登録する。このオブジェクト操作処理の一例をフローチャートに従って説明する。
 図15は、実施例4に係るオブジェクト操作処理のフローチャートである。
 間接参照追加部139は、ユーザプログラム実行部131によるオブジェクトへの間接参照要求が発生するまで待機する(ステップ1601)。間接参照要求を検知すれば(ステップ1601でYes)、間接参照追加部139は、プロキシオブジェクトを介して間接参照先のオブジェクトにアクセスできるか確認する(ステップ1602)。アクセスできれば(ステップ1602でYes)、ユーザプログラム実行部131にプロキシオブジェクトを介した間接参照を実行させて処理を終了する。アクセスできなければ(ステップ1602でNo)、間接参照追加部139は、間接参照要求先のオブジェクト(目標オブジェクト)、起点プロキシオブジェクトが間接参照するオブジェクト(起点オブジェクト)、起点プロキシオブジェクトから、目標オブジェクトへの間接参照を実現するプロキシオブジェクトまで順番に取得したプロキシオブジェクト群(参照順プロキシオブジェクト群)を取得する(ステップ1603)。
 ここで、例えば、オブジェクトA、B、Cが存在して、オブジェクトAがオブジェクトBを参照し、オブジェクトBがオブジェクトCを参照するようになっている場合には、オブジェクトCのデータをリードは、“A.B.C.read()”と表現される。この時、起点オブジェクトは、オブジェクトAとなり、目標オブジェクトは、オブジェクトCとなる。また、オブジェクトA、B、Cの各オブジェクトへの間接参照を実現するプロキシオブジェクトをそれぞれ、PA、PB、PCとすると、参照順プロキシオブジェクト群は、PA→PB→PCとなる。
 ステップ1603の後、オブジェクト構造解析部134は、取得した起点オブジェクトから参照できるオブジェクトと、そのオブジェクトへの間接参照を実現するプロキシオブジェクトとを取得する(ステップ1604)。その後、オブジェクト構造解析部134は、参照順プロキシオブジェクト群のうち起点プロキシオブジェクトから直接参照されるプロキシオブジェクトと、ステップ1604で取得したプロキシオブジェクトが一致するか否かを確認する(ステップ1605)。ステップ1605で、一致するプロキシオブジェクトが存在すれば(ステップ1605でYes)、ステップ1606に進む。一方、一致するプロキシオブジェクトが存在しなければ(ステップ1605でNo)、間接参照要求されたオブジェクトは存在しないとして処理を終了する。この場合、ユーザプログラム実行部131での間接参照要求がオブジェクト自体の操作であれば、オブジェクトが存在しないことを示す情報として、例えば、NULLを返す。また、オブジェクトに含まれるデータの操作や、オブジェクトから参照するオブジェクトの操作であれば、オブジェクトが存在せず要求するオブジェクトやデータに到達できないことを示す情報、または実現できない処理として例外を返す(ステップ1608)。
 ステップ1606では、一致したプロキシオブジェクトが、参照順プロキシオブジェクト群のうち最後に取得したプロキシオブジェクトか否かを確認する。最後のプロキシオブジェクトでなければ(ステップ1606でNo)、ステップ1605で一致したプロキシオブジェクトを起点プロキシオブジェクトとしてステップ1604に戻り、プロキシオブジェクトの一致確認を継続する。一方。最後のプロキシオブジェクトであれば(ステップ1606でYes)、プロキシオブジェクト参照設定部137は、一致したプロキシオブジェクトのO参照312に目標オブジェクトへの参照を登録し、オブジェクトへの間接参照を実現する(ステップ1607)。
 以上のオブジェクト取得処理とオブジェクト操作処理とにより、例えば、図13に示す参照関係にあるオブジェクト群に含まれるID=2のオブジェクトOBJへの間接参照要求が発生した後に、図16に示すように、プロキシオブジェクト群に含まれるID=P2のプロキシオブジェクトPOBからID=2のオブジェクトOBJへの参照が設定され、プロキシオブジェクトPOBにより間接参照要求がされたオブジェクトOBJへの間接参照を実現することができる。上記実施例によると、オブジェクト取得処理時においては、代表プロキシオブジェクトと、ユーザプログラム実行部131からの取得対象となったオブジェクトとの参照関係を調査する処理や、代表プロキシオブジェクトの一部のプロキシオブジェクトへのO参照の設定処理を省けるため、オブジェクト取得処理を高速化できる。
 代表プロキシオブジェクトを複数保持せず、ユーザプログラム実行部131により、間接参照要求が発生した場合に、間接参照を実現するプロキシオブジェクトを生成する遅延プロキシオブジェクト生成を行っても良い。遅延プロキシオブジェクト生成を実現するためには、図13と同様に、起点プロキシオブジェクトへ間接参照追加部139を備える必要がある。遅延プロキシオブジェクト生成処理の一例を、フローチャートに従って説明する。
 図18は、実施例5に係る遅延プロキシオブジェクト生成処理のフローチャートである。
 ユーザプログラム実行部131により、オブジェクト取得要求が発生した場合は、オブジェクト管理部132がオブジェクトインデックス表500を参照し、起点プロキシオブジェクトを生成するとともに、起点プロキシオブジェクトのO参照312に要求されたオブジェクトのアドレスを登録し、この起点プロキシオブジェクトをユーザプログラム実行部131に送信する(1901)。この起点プロキシオブジェクトは、例えば、図17に示すようになっている。
 ユーザプログラム実行部131では、間接参照追加部139がオブジェクトへの間接参照要求を検知するまで待機する(ステップ1902)。間接参照要求を検知すれば(ステップ1902でYes)、間接参照追加部139は既存のプロキシオブジェクトを介して間接参照先のオブジェクトにアクセスできるか否かを確認する(ステップ1903)。アクセスできれば(ステップ1903でYes)、ユーザプログラム実行部131にプロキシオブジェクトを介した間接参照を実行させて処理を終了する。
 一方、アクセスできなければ(ステップ1902でNo)、間接参照追加部139は、間接参照要求先のオブジェクト(目標オブジェクト)と、起点プロキシオブジェクトが間接参照するオブジェクト(起点オブジェクト)とを取得し、オブジェクト構造解析部134に処理を引き継ぐ(1904)。ステップ1905では、オブジェクト構造解析部134が起点オブジェクトから目標オブジェクトまでの参照構造を解析し、目標オブジェクトへの間接参照を実現するプロキシオブジェクト(目標プロキシオブジェクト)と、起点プロキシオブジェクトから目標プロキシオブジェクトを参照するためにたどるプロキシオブジェクトとを、代表プロキシオブジェクト保持部136に保持される代表プロキシオブジェクトから複製する。
 そして、ステップ1905で複製したプロキシオブジェクト群について、起点プロキシオブジェクトから目標オブジェクトへの間接参照を実現する目標プロキシオブジェクトへ参照をたどれるように、各プロキシオブジェクトのP参照314に参照先のプロキシオブジェクトの参照を設定し、目標オブジェクトへの間接参照を実現するプロキシオブジェクトのO参照314に目標オブジェクトへの参照を設定する(ステップ1906)。以上の処理により、間接参照要求後において、図19に示すように、プロキシオブジェクト群に、ID=P2のプロキシオブジェクトPOBを生成でき、ID=P1のプロキシオブジェクトPOBからID=P2のプロキシオブジェクトPOBへの参照の設定をでき、ID=P2のプロキシオブジェクトPOBからID=2のオブジェクトOBJへの参照の設定を実現できる。
 この遅延プロキシオブジェクト生成処理により、オブジェクトへの間接参照を実現するために必要なプロキシオブジェクトのみ生成できる。このため、代表プロキシオブジェクト保持部136で保持する代表プロキシオブジェクトをプロキシオブジェクトの種類に応じて1つだけに限定でき、代表プロキシオブジェクトを事前に複製して保持する場合に比べてメモリ111の消費量を削減できる。
 オブジェクトが複数のオブジェクトが集まったオブジェクトであるコレクションへの参照を保持する場合がある。この時、コレクションの要素数が増大すると、オブジェクト数が増大し、それらオブジェクトに対する間接参照を実現するためのプロキシオブジェクト数も増大する。このプロキシオブジェクト数の増大によりメモリ消費量も増大する。一方、コレクションの要素となるオブジェクト群には、同じデータ構造を保持するオブジェクトの集合が含まれ、それら集合に属するオブジェクトは、データをread/writeするデータアクセスインターフェースは同じである。従って、同じデータ構造を保持するオブジェクトの集合に対しては、同じプロキシオブジェクトにより間接参照を実現できる。このため、代表プロキシオブジェクトと同様に、コレクションの要素を代表するプロキシオブジェクトを1つ生成しておき、コレクションの要素へのアクセスがあった場合にプロキシオブジェクトを複製して利用することで、プロキシオブジェクト数の増大を抑止できる。
 これを実現するために、実施例6に係る計算機101では、コレクションの要素となるオブジェクトOBJへの間接参照を実現するプロキシオブジェクトPOBに、図20に示すように間接参照先のコレクションCOBに含まれる要素への参照情報を保持する間接コレクション141と、同一のデータ構造を持つオブジェクト集合への間接参照が発生した場合にプロキシオブジェクトPOBを生成して間接参照を実現する機能のための間接参照代表部140とを追加し、間接参照先を示すP参照314にはコレクションを管理するオブジェクトCOBへの参照を設定する。そして、ユーザプログラム実行部131で、コレクション要素に対する間接参照要求が発生した場合には、コレクション要素への間接参照処理を実行する。
 図21は、実施例6に係るコレクション要素への間接参照処理のフローチャートである。
 間接参照代表部140は、コレクションの要素となるオブジェクトOBJへの間接参照要求を検知するまで待機する(ステップ2201)。コレクションの要素への間接参照要求を検知すれば(ステップ2201でYes)、間接参照代表部140は、間接参照要求の内容が、コレクション要素の追加や削除といったオブジェクトへの操作要求か、オブジェクトの内部情報に対する操作要求かを確認する(ステップ2202)。オブジェクトへの操作要求であれば、ステップ2208に進む。一方、オブジェクトの内部情報に対する操作要求であれば、間接参照代表部140は、間接コレクション141を用いて間接参照先となるオブジェクトを特定し、そのオブジェクトへの間接参照を実現するプロキシオブジェクトを生成する。その後、間接参照代表部140は、生成したプロキシオブジェクトのO参照312にそのオブジェクトへの参照を登録する(ステップ2203)。ステップ2203で、プロキシオブジェクトを生成した後、間接参照代表部140は、オブジェクトの内部情報に対する操作要求が、readかwriteかを判定する(ステップ2204)。
 操作要求がreadであれば、特定したオブジェクトの内部情報をreadして処理を終了する(2205)。操作内容がwriteであれば、間接参照代表部140は、オブジェクトの複製を作成し、生成したプロキシオブジェクトのO参照312を複製先に変更する。そして、間接参照代表部140は、間接コレクション141が保持する複製元のオブジェクトへの参照を複製先のオブジェクトに変更する(ステップ2206)。ステップ2206での複製処理が完了すれば、間接参照代表部140は、複製先オブジェクトにwrite内容を反映して処理を終了する(ステップ2207)。コレクションの要素であるオブジェクトの追加や削除を行う場合は、間接参照代表部140は、P参照314に登録されたコレクションを操作せず、間接コレクション140の参照情報の追加や削除を行い、処理を終了する(ステップ2208)。
 このように間接参照代表部140と間接コレクション141を用いてCopy on Writeを実現することにより、配列の要素となるオブジェクトに1対1で必要であったプロキシオブジェクトをまとめることができ、プロキシオブジェクトによるメモリ111の消費量を低減できる。
 なお、本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル(表)、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
101…計算機、111…メモリ、112…CPU、OBJ…オブジェクト、POB…プロキシオブジェクト。

Claims (15)

  1.  オブジェクトを記憶可能なメモリと、
     前記メモリに接続されたプロセッサと
    を有し、
     前記プロセッサは、
     前段のオブジェクトと、前記前段のオブジェクトから参照可能な1以上の後段のオブジェクトとを前記メモリに記憶させ、
     前記前段のオブジェクトへの参照情報を含み、前記前段のオブジェクトを参照可能にする参照機能を提供する前段のプロキシオブジェクトと、前記後段のオブジェクトへの参照情報を含み、前記後段のオブジェクトに対する参照機能を提供する後段のプロキシオブジェクトとを生成して前記メモリに記憶させ、
     前記前段のプロキシオブジェクトに、前記後段のプロキシオブジェクトへの参照情報を格納させる
    オブジェクト管理装置。
  2.  前記前段のオブジェクトは、参照可能な前記後段のオブジェクトへの参照情報を格納しており、
     前記プロセッサは、前記前段のオブジェクトから前記後段のオブジェクトへの参照情報を取得して、前記後段のオブジェクトを特定し、特定した前記後段のオブジェクトを参照可能にする参照機能を提供する前記後段のプロキシオブジェクトを特定し、特定した前記後段のプロキシオブジェクトへの参照情報を前記前段のプロキシオブジェクトに格納させる
    請求項1に記載のオブジェクト管理装置。
  3.  前記プロセッサは、前記前段のオブジェクトを取得する要求が発生した場合に、前記前段のオブジェクトから前記後段のオブジェクトへの参照情報を取得して、前記後段のオブジェクトを特定し、特定した前記後段のオブジェクトを参照可能にする参照機能を提供する前記後段のプロキシオブジェクトを特定し、特定した前記後段のプロキシオブジェクトへの参照情報を前記前段のプロキシオブジェクトに格納させる
    請求項2に記載のオブジェクト管理装置。
  4.  前記プロセッサは、前記前段のオブジェクトを参照する指示が発生した場合に、前記前段のオブジェクトの識別情報に基づいて、前記前段のオブジェクトを参照可能にする機能を提供する前記前段のプロキシオブジェクトを特定し、前記前段のプロキシオブジェクトを取得する
    請求項1に記載のオブジェクト管理装置。
  5.  前記プロセッサは、
     或るオブジェクトを起点として所定の目標オブジェクトを操作する指示が発生した場合に、起点となる前記或るオブジェクトから前記目標オブジェクトへのオブジェクトの参照経路に基づいて、起点となる前記或るオブジェクトを参照可能にする参照機能を提供するプロキシオブジェクトから前記目標オブジェクトを参照可能にする参照機能を提供する目標プロキシオブジェクトへのプロキシオブジェクトの参照経路を特定し、前記プロキシオブジェクトの参照経路に基づいて、前記目標プロキシオブジェクトを用いて、前記目標オブジェクトへの操作を実行する
    請求項4に記載のオブジェクト管理装置。
  6.  前記プロキシオブジェクトは、前記プロセッサに、前記プロキシオブジェクトが提供する参照機能により参照可能なオブジェクトのデータが更新される際に、前記オブジェクトを前記メモリに複製させ、複製された前記オブジェクトに対してデータの更新をさせ、
     前記プロセッサは、複製前の前記オブジェクトを参照可能な前段のオブジェクトの参照情報を、複製後の前記オブジェクトの参照情報に変更する
    請求項5に記載のオブジェクト管理装置。
  7.  前記プロセッサは、
     或るオブジェクトと、前記或るオブジェクトを起点として参照可能な1以上のオブジェクトとを含むオブジェクト群におけるオブジェクト間の参照構造を取得し、
     前記オブジェクト群の各オブジェクトの参照機能を提供するプロキシオブジェクト群であって、各プロキシオブジェクト間の参照構造が前記オブジェクト間の参照構造に対応する参照構造である代表プロキシオブジェクト群を前記メモリに生成する
    請求項1に記載のオブジェクト管理装置。
  8.  前記プロセッサは、
     前記オブジェクト群の各オブジェクトの参照機能を提供するプロキシオブジェクト群であって、各プロキシオブジェクト間の参照構造が前記オブジェクト間の参照構造に対応する参照構造である代表プロキシオブジェクト群が前記メモリに存在するか否かを判定し、
     前記代表プロキシオブジェクト群が前記メモリに存在しない場合に、前記代表プロキシオブジェクト群を前記メモリに生成する
    請求項7に記載のオブジェクト管理装置。
  9.  前記プロセッサは、
     或るオブジェクトを取得する要求が発生した場合に、前記或るオブジェクトの参照機能を提供するプロキシオブジェクトと、そのプロキシオブジェクトから参照可能なプロキシオブジェクトとを含む代表プロキシオブジェクト群を特定して、前記メモリに複製し、
     複製した前記代表プロキシオブジェクト群の各プロキシオブジェクトに対して、前記或るオブジェクトから参照可能なオブジェクトであって、前記プロキシオブジェクトによる参照機能により参照可能なオブジェクトへの参照情報を設定する
    請求項8に記載のオブジェクト管理装置。
  10.  前記プロセッサは、
     或るオブジェクトを取得する要求が発生した場合に、前記或るオブジェクトの参照機能を提供するプロキシオブジェクトと、そのプロキシオブジェクトから参照可能なプロキシオブジェクトとを含む代表プロキシオブジェクト群を特定して、特定した前記代表プロキシオブジェクト群の各プロキシオブジェクトに対して、前記或るオブジェクトから参照可能なオブジェクトであって、前記プロキシオブジェクトによる参照機能により参照可能なオブジェクトへの参照情報を設定し、
     その後、前記メモリにおける特定した前記代表プロキシオブジェクト群の数が所定の閾値以上となるように、前記代表プロキシオブジェク群を複製する
    請求項7に記載のオブジェクト管理装置。
  11.  前記プロセッサは、
     或るオブジェクトを取得する要求が発生した場合に、前記オブジェクト及び前記オブジェクトから参照可能なオブジェクトを含むオブジェクト群の各オブジェクトを参照可能にする機能を提供するプロキシオブジェクト群を取得し、
     前記オブジェクト群の中の或るオブジェクトを操作する指示が発生した場合に、前記操作対象のオブジェクトを参照可能にする機能を提供するプロキシオブジェクトを特定し、前記プロキシオブジェクトに対して、前記操作対象のオブジェクトへの参照情報を設定し、前記参照情報を用いて、前記操作対象のオブジェクトへの操作を実行する
    請求項1に記載のオブジェクト管理装置。
  12.  前記プロセッサは、
     或るオブジェクトを操作する要求が発生した場合に、既に取得しているプロキシオブジェクトから、前記或るオブジェクトを参照可能にする機能を提供するプロキシオブジェクトへのプロキシオブジェクトの参照経路を特定し、
     前記参照経路に基づいて、必要なプロキシオブジェクトを生成するとともに、前記或るオブジェクトを参照可能にする機能を提供する前記プロキシオブジェクトに対して、前記或るオブジェクトへの参照情報を設定し、前記参照情報を用いて、前記或るオブジェクトへの操作を実行する
    請求項1に記載のオブジェクト管理装置。
  13.  前記メモリの前記オブジェクトには、複数のオブジェクトを要素とするコレクションオブジェクトが含まれ、
     前記プロセッサは、
     前記コレクションオブジェクトを参照可能にする機能を提供するプロキシオブジェクトを生成するとともに、前記プロキシオブジェクトに前記コレクションオブジェクトの参照情報と、前記コレクションオブジェクトの要素の複数のオブジェクトの参照情報とを格納し、
     前記コレクションオブジェクトの要素のオブジェクトを操作する要求が発生した場合に、前記コレクションオブジェクトの要素のオブジェクトを参照可能にする機能を提供するプロキシオブジェクトを生成させるとともに、前記プロキシオブジェクトに前記操作対象の前記オブジェクトの参照情報を格納し、前記プロキシオブジェクトの前記参照情報を用いて、前記操作対象の前記オブジェクトへの操作を実行し、
     また、前記コレクションオブジェクトの要素のオブジェクトを変更する要求が発生した場合に、前記コレクションオブジェクトを参照可能にする機能を提供するプロキシオブジェクトが保持する前記コレクションオブジェクトの要素の複数のオブジェクトの参照情報を変更する
    請求項1に記載のオブジェクト管理装置。
  14.  オブジェクトを記憶可能なメモリと、プロセッサとを有するオブジェクト管理装置によるオブジェクト管理方法であって、
     前記プロセッサが、
     前段のオブジェクトと、前記前段のオブジェクトから参照可能な1以上の後段のオブジェクトとを前記メモリに記憶させ、
     前記前段のオブジェクトへの参照情報を含み、前記前段のオブジェクトを参照可能にする参照機能を提供する前段のプロキシオブジェクトと、前記後段のオブジェクトへの参照情報を含み、前記後段のオブジェクトに対する参照機能を提供する後段のプロキシオブジェクトとを生成して前記メモリに記憶させ、
     前記前段のプロキシオブジェクトに、前記後段のプロキシオブジェクトへの参照情報を格納させる
    オブジェクト管理方法。
  15.  オブジェクトへの間接参照を実現するプロキシオブジェクトのデータ構造であって、
     前段オブジェクトへの参照を持つ領域と、
     前記前段オブジェクトが参照する後段オブジェクトを参照する後段プロキシオブジェクトへの参照を持つ領域と
    を有するデータ構造。
PCT/JP2011/072212 2011-09-28 2011-09-28 オブジェクト管理装置、およびオブジェクト管理方法 WO2013046360A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013535711A JP5668146B2 (ja) 2011-09-28 2011-09-28 オブジェクト管理装置、およびオブジェクト管理方法
PCT/JP2011/072212 WO2013046360A1 (ja) 2011-09-28 2011-09-28 オブジェクト管理装置、およびオブジェクト管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/072212 WO2013046360A1 (ja) 2011-09-28 2011-09-28 オブジェクト管理装置、およびオブジェクト管理方法

Publications (1)

Publication Number Publication Date
WO2013046360A1 true WO2013046360A1 (ja) 2013-04-04

Family

ID=47994471

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/072212 WO2013046360A1 (ja) 2011-09-28 2011-09-28 オブジェクト管理装置、およびオブジェクト管理方法

Country Status (2)

Country Link
JP (1) JP5668146B2 (ja)
WO (1) WO2013046360A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001092709A (ja) * 1999-09-14 2001-04-06 Internatl Business Mach Corp <Ibm> クライアントサーバーシステム、オブジェクトプール、オブジェクトのプール方法、記憶媒体、およびプログラム伝送装置
JP2009157805A (ja) * 2007-12-27 2009-07-16 Exa Corp オブジェクトキャッシュ構築方法、オブジェクトキャッシュ構築プログラム
JP2010073127A (ja) * 2008-09-22 2010-04-02 Hitachi Ltd メモリ管理方法およびその方法を用いるコンピュータ

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787442A (en) * 1996-07-11 1998-07-28 Microsoft Corporation Creating interobject reference links in the directory service of a store and forward replication computer network
US6438559B1 (en) * 1999-04-02 2002-08-20 Sybase, Inc. System and method for improved serialization of Java objects

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001092709A (ja) * 1999-09-14 2001-04-06 Internatl Business Mach Corp <Ibm> クライアントサーバーシステム、オブジェクトプール、オブジェクトのプール方法、記憶媒体、およびプログラム伝送装置
JP2009157805A (ja) * 2007-12-27 2009-07-16 Exa Corp オブジェクトキャッシュ構築方法、オブジェクトキャッシュ構築プログラム
JP2010073127A (ja) * 2008-09-22 2010-04-02 Hitachi Ltd メモリ管理方法およびその方法を用いるコンピュータ

Also Published As

Publication number Publication date
JP5668146B2 (ja) 2015-02-12
JPWO2013046360A1 (ja) 2015-03-26

Similar Documents

Publication Publication Date Title
TWI479341B (zh) 資訊系統中轉換資料之高處理能力,可靠複寫
CN105144080B (zh) 用于元数据管理的系统
US11455304B2 (en) Graph-based predictive cache
US9507842B2 (en) System for replication-driven repository cache invalidation across multiple data centers
TWI412945B (zh) 擷取以及保存來自或存至關聯資料庫之各物件的方法及系統
US8738572B2 (en) System and method for storing data streams in a distributed environment
US10037388B2 (en) Fast querying of social network data
KR20180021679A (ko) 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원
JP2020502626A (ja) データベース・システムにおけるテスト・データの形成及び動作
US10936559B1 (en) Strongly-consistent secondary index for a distributed data set
WO2011108695A1 (ja) 並列データ処理システム、並列データ処理方法及びプログラム
US11010401B2 (en) Efficient snapshot generation of data tables
US8805777B2 (en) Data record collapse and split functionality
JP2012174096A (ja) 計算機システム及びデータ管理方法
US10747643B2 (en) System for debugging a client synchronization service
JP2016021232A (ja) データ統合システム(dis)のデータの鮮度のチェック
CN113032393B (zh) 一种绑定关联对象的方法和装置
US10970193B2 (en) Debugging a client synchronization service
US20220245125A1 (en) Dataset multiplexer for data processing system
US10956386B2 (en) Methods and apparatuses for automated performance tuning of a data modeling platform
JP5668146B2 (ja) オブジェクト管理装置、およびオブジェクト管理方法
US20170322963A1 (en) Apparatus and Method for Creating User Defined Variable Size Tags on Records in RDBMS
US11468101B2 (en) Context-rich key framework implementations for global concept management
US11822580B2 (en) System and method for operating a digital storage system
US20230252005A1 (en) Method And Apparatus For Managing Meta Information In Schema Level

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11873171

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013535711

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11873171

Country of ref document: EP

Kind code of ref document: A1