WO2020213428A1 - 木構造データ処理システム、木構造データ処理方法、木構造データ処理装置および木構造データ処理プログラム - Google Patents
木構造データ処理システム、木構造データ処理方法、木構造データ処理装置および木構造データ処理プログラム Download PDFInfo
- Publication number
- WO2020213428A1 WO2020213428A1 PCT/JP2020/015276 JP2020015276W WO2020213428A1 WO 2020213428 A1 WO2020213428 A1 WO 2020213428A1 JP 2020015276 W JP2020015276 W JP 2020015276W WO 2020213428 A1 WO2020213428 A1 WO 2020213428A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- tree
- data table
- tree structure
- request
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Definitions
- the present invention relates to a tree structure data processing system for storing tree structure data in a relational database, a tree structure data processing method, a tree structure data processing device, and a tree structure data processing program.
- a tree structure is known as one of the data structures having a hierarchy.
- the organizational structure of a company as shown in FIG. 10 the parent-child relationship of tickets (which record the content and priority of work to be performed) in the work progress management system, reply comments to received comments in SNS, and physical.
- Various data such as capacity management of various resources (computer host-CPU socket-CPU, memory, etc. structure) are composed of a tree structure.
- the "naive tree method” and the “nested set method” are known as methods for modeling this tree-structured data into a relational database (hereinafter, simply referred to as "database”) (see Non-Patent Document 1). ).
- the naive tree method will be described as a case where there is tree structure data shown by reference numeral 100 in FIG.
- data located in a lower hierarchy is arranged in a branched state from one data belonging to a certain hierarchy.
- the element part of this tree structure is called a node (hereinafter referred to as "node"), and each data is arranged.
- node The element part of this tree structure
- data associated with each of the nodes A, B, C, D, E, and F is arranged.
- the IDs of the respective nodes are "A", "B", “C”, "D", "E”, and "F", respectively.
- the naive tree method is located in the latest upper hierarchy as information indicating the hierarchical structure corresponding to the ID of each node (reference numeral 310). It is a simple model that stores the ID of the (parent) node as a pointer.
- the data table shown by the example of reference numeral 310 is referred to as a "naive tree type data table" or a "naive tree data table”.
- node "A” is stored as a parent ID (Parent_ID) corresponding to node ID "B" (hereinafter, simply referred to as node "B"; the same applies to other nodes).
- the node “B” is stored as a parent ID (Parent_ID) corresponding to the node "D”.
- the data table shown in the example of reference numeral 320 is referred to as a “nested set data table” or a “nested set data table”.
- the data before the change (the nested set data table of reference numeral 320) is shown in the nested set data table of reference numeral 321 of the nodes "B", "C", “D”, and "E". It is necessary to change the information on the left edge (left) and the right edge (right). Therefore, the amount of data to be updated increases.
- the naive tree method Comparing the database models of this naive tree method and the nested set method, the naive tree method has excellent processing performance for updating and writing data that reconstructs the tree structure (reconstruction of the tree structure), but searches for data.
- the read processing performance is inferior.
- the nested set method is excellent in search / read performance, but inferior in update / write (reconstruction of tree structure) performance.
- the present invention has been made in view of such circumstances, and when the tree structure in the relational database is reconstructed, the service unresponsive time due to the update lock is reduced, and the data search / read performance is maintained without being deteriorated.
- a tree structure data processing system, a tree structure data processing method, a tree structure data processing device, and a tree structure data processing program are used to satisfy the request for the update.
- the invention according to claim 1 is a DB server that stores tree structure data in a relational database in a data table, and a tree structure data processing device that controls update and search processing of the tree structure data.
- a tree-structured data processing system including a synchronization device for synchronizing data tables stored in the DB server, and the DB server naive the tree-structured data as a data table for one service.
- a storage unit for storing a naive tree data table showing a data table modeled by a tree method and a nested set data table showing a data table modeled by a nested set method of the tree structure data in association with each other is provided.
- the tree structure data processing device sets up a request receiving unit that receives an update request and a search request for the tree structure data, and a request processing thread that refers to the nested aggregate data table and performs search processing when the search request is received.
- a processing thread setting unit that starts and executes a request processing thread that updates data in the naive tree data table when the update request is received, and the naive tree data table and the nested set data.
- the synchronization device includes a synchronization state management unit that switches the state of each request processing thread to synchronization waiting when receiving synchronization wait instruction information indicating the start of synchronization processing with a table, and the synchronization device is the DB server.
- the synchronization wait instruction unit that transmits the synchronization wait instruction information to the tree structure data processing device, and the naive tree data updated by the update request.
- the tree structure data processing apparatus includes a synchronization processing unit that converts table data into data in the nested aggregate data table and synchronizes the data, the request processing thread state is waiting for synchronization.
- the processing thread setting unit executes the search process by referring to the naive tree data table instead of the nested set data table.
- the tree structure data processing system was adopted.
- the invention according to claim 2 applies to a DB server that stores tree structure data in a relational database in a data table, a tree structure data processing device that controls update and search processing of the tree structure data, and the DB server.
- It is a tree structure data processing method of a tree structure data processing system including a synchronization device that synchronizes stored data tables with each other, and the DB server naive the tree structure data as a data table for one service.
- the naive tree data table showing the data table modeled by the tree method and the nested set data table showing the data table modeled by the nested set method are stored in association with each other, and the tree structure is stored.
- the data processing device starts and executes a step of receiving the update request and the search request of the tree structure data and a request processing thread that refers to the nested aggregate data table and performs search processing when the search request is received.
- the step of starting and executing the request processing thread that updates the data of the naive tree data table and the synchronous processing between the naive tree data table and the nested aggregate data table are performed.
- the step of switching the state of each request processing thread to the synchronization wait is executed, and the synchronization device updates the naive tree data table from the DB server.
- the step of transmitting the synchronization wait instruction information to the tree structure data processing device and the data of the naive tree data table updated by the update request are combined with the data of the nested aggregate data table.
- the tree structure data processing device receives a search request for the tree structure data in the case where the state of each request processing thread is waiting for synchronization by executing the step of converting to and synchronizing with the above.
- the tree structure data processing method is characterized in that a step of performing a search process with reference to the naive tree data table is executed.
- the invention according to claim 3 is communication-connected to a DB server that stores tree-structured data in a relational database in a data table and a synchronization device that synchronizes the data tables stored in the DB server.
- It is a tree structure data processing device that controls update and search processing of tree structure data
- the DB server shows a data table in which the tree structure data is modeled by a naive tree method as a data table for one service.
- the naive tree data table and the nested set data table indicating the data table in which the tree structure data is modeled by the nested set method are stored in association with each other, and the tree structure data processing apparatus stores the tree structure data.
- a request receiving unit that accepts update requests and search requests, and a request processing thread that refers to the nested aggregate data table and performs search processing when the search request is accepted are started and executed, and the update request is accepted.
- synchronization indicating the start of synchronization processing between the processing thread setting unit that starts and executes the request processing thread that updates the data of the naive tree data table and the naive tree data table and the nested aggregate data table.
- the processing thread setting unit refers to the naive tree data table instead of the nested set data table. It is a tree-structured data processing device characterized by executing search processing.
- invention according to claim 4 is a tree structure data processing program for causing the computer to function as the tree structure data processing device according to claim 3.
- the tree structure data processing device executes the search processing by the nested set data table having excellent search processing performance.
- the tree structure data processing device receives a data update request (update write (reconstruction of the tree structure)
- the tree structure data processing device updates the data in the naive tree data table having excellent update processing performance.
- the synchronization device can synchronize the naive tree data table and the nested aggregate data table.
- the tree structure data processing device when the tree structure data processing device receives a search request in the case where the nested set data table is undergoing synchronous processing and each request processing thread is waiting for synchronization, the tree structure data processing device replaces the nested set data table with a naive tree data table. You can execute the search process by referring to. Therefore, when the tree structure is reconstructed (when an update is requested), the service response time due to the update lock can be reduced, and the data search / read function can be maintained without being deteriorated.
- a tree structure data processing system and a tree structure data that reduce the service unresponsive time due to an update lock and maintain the data search / read performance without deteriorating.
- a processing method, a tree structure data processing apparatus, and a tree structure data processing program can be provided.
- FIG. 1 is a diagram showing an overall configuration of the tree structure data processing system 1000 according to the present embodiment.
- the tree structure data processing system 1000 includes a tree structure data processing device 10, a synchronization device 20, and a DB server 30 that are communication-connected to the service server 50.
- the DB server 30 stores a naive tree type data table (naive tree data table 310) and a nested set type data table (nested set data table 320) for one service. Then, the synchronization device 20 synchronizes the naive tree data table 310 with the nested aggregate data table 320.
- FIG. 2 is a diagram for explaining an outline of processing of the tree structure data processing system 1000 according to the present embodiment.
- the description of the DB server 30 (see FIG. 1) as a housing is omitted, and the naive tree data table 310 and the nested set data stored in the DB server 30 are omitted.
- Table 320 is extracted and described (the same applies to the following figures).
- the tree structure data processing device 10 When the tree structure data processing device 10 receives a data search / reading request from the service server 50, the tree structure data processing device 10 starts a thread (hereinafter, referred to as "request processing thread 150") for processing the read request. Then, the tree structure data processing device 10 reads data by transmitting a read request (read request) to the nested set data table 320 (reference numeral P1) and receiving a response (read result) (reference numeral P2). Further, when the tree structure data processing device 10 receives a data update request from the service server 50, the tree structure data processing device 10 starts a thread (request processing thread 150) for processing the update request.
- request processing thread 150 a thread for processing the update request.
- the tree structure data processing device 10 updates the naive tree data table 310 via the synchronization device 20 based on the update request (reference numeral P3). Then, after the update of the naive tree data table 310 is completed, the synchronization device 20 reads the naive tree data table 310 (read) (reference numeral P4), converts it into the information of the nested aggregate data table 320, and synchronizes (sync) in the background. ) (Reference P5).
- the tree structure data processing device 10 when the tree structure data processing device 10 receives the data search / reading request, the tree structure data processing device 10 accesses the nested set data table 320 having excellent read processing performance. Further, when the tree structure data processing device 10 receives a data update request (update writing (reconstruction of the tree structure)), the tree structure data processing device 10 accesses the naive tree data table 310 having excellent update processing performance. Therefore, according to the tree structure data processing system 1000, when the tree structure is reconstructed (when an update is requested), the service response time due to the update lock can be reduced, and the data search / read function can be maintained without being deteriorated. ..
- each device constituting the tree structure data processing system 1000 will be described in detail.
- the tree structure data processing device 10 receives a query from the service server 50. Here, it is assumed that a read request and an update request query are received for the data table corresponding to a certain service.
- the tree structure data processing device 10 sets up a thread (request processing thread 150) and registers the request processing thread 150 in the synchronization device 20. Then, the tree structure data processing device 10 determines either the naive tree data table 310 or the nested set data table 320 stored in the DB server 30 (FIG. 1) as the request destination based on the contents of the query, and makes a request. Processing is executed for each processing thread 150.
- the tree structure data processing device 10 When the tree structure data processing device 10 receives the read request in the normal state, the tree structure data processing device 10 transmits the read request to the nested set data table 320. On the other hand, when the tree structure data processing device 10 receives the update request, the tree structure data processing device 10 transmits the update request to the naive tree data table 310 via the synchronization device 20. However, when the nested set data table 320 is undergoing synchronization processing (“at the time of switching to wait for synchronization” described later), the tree structure data processing device 10 requests a read from the naive tree data table 310 when it receives a read request. Control to send. As a result, the tree structure data processing device 10 can obtain high search performance in the normal time while reducing the time during which the service non-response time occurs due to the conflict lock.
- FIG. 3 is a functional block diagram showing a configuration example of the tree structure data processing device 10 according to the present embodiment.
- the tree structure data processing device 10 is realized by a computer or the like including a control unit 11, an input / output unit 12, and a storage unit 13.
- the input / output unit 12 includes a communication interface for transmitting and receiving information, and an input / output interface for transmitting and receiving information with an input device such as a keyboard and an output device such as a monitor.
- the storage unit 13 is composed of a flash memory, a hard disk, a RAM (Random Access Memory), and the like. Further, the storage unit 13 temporarily stores a program (tree structure data processing program) for executing each function of the control unit 11 and information necessary for processing of the control unit 11.
- the control unit 11 includes a request reception unit 111, a processing thread setting unit 112, a synchronization state management unit 113, and a request response unit 114.
- the control unit 11 is realized, for example, by a CPU (Central Processing Unit) (not shown) deploying and executing a program stored in the storage unit 13 in a RAM.
- CPU Central Processing Unit
- the request receiving unit 111 receives a query from the service server 50.
- the query received by the request receiving unit 111 is information indicated by an abstract request instructing a read request or an update request.
- the request receiving unit 111 outputs a query indicating the received abstract read request or abstract update request to the processing thread setting unit 112.
- the abstract read request and the abstract update request are set so that the information (protocol) defined in advance can be used between the service server 50 and the tree structure data processing device 10. ..
- the processing thread setting unit 112 When the processing thread setting unit 112 acquires a query, it starts a thread (request processing thread 150). Then, the processing thread setting unit 112 registers the launched request processing thread 150 by transmitting the information (identification information) of the discriminator to the synchronization device 20. Further, the processing thread setting unit 112 determines the request contents such as whether the acquired query contents are read requests or update requests.
- the processing thread setting unit 112 converts it into SQL (StructuredQueryLanguage) for a naive tree, and processes the request processing thread 150 that has been started up by the synchronization device 20.
- the naive tree data table 310 is updated by sending an update request.
- the processing thread setting unit 112 makes a (abstract) read request for the nested set in the normal time (the nested set data table 320 is not in the synchronous processing) when the content of the acquired query is a read request. It converts to recursive SQL and sends a read request (read) to the nested set data table 320.
- the processing thread setting unit 112 converts the (abstract) read request into a recursive SQL for a naive tree when the content of the acquired query is a read request and the nested set data table 320 is waiting for synchronization. , Sends a read request (read) to the naive tree data table 310.
- the processing thread setting unit 112 can grasp whether or not the nested set data table 320 is undergoing synchronization processing by setting the synchronization state management unit 113 (instruction of "waiting for synchronization"). When the processing of each request processing thread 150 is completed, the processing thread setting unit 112 deletes the registered discriminator by transmitting the identifier of the completed request processing thread 150 to the synchronization device 20.
- the synchronization state management unit 113 receives the synchronization wait instruction information for each request processing thread 150 currently being executed at the start of synchronization of the nested aggregate data table 320 from the synchronization device 20, and thereby the states of all the request processing threads 150. Switch from "normal” (not waiting for synchronization) to "waiting for synchronization”. Further, the synchronization state management unit 113 receives from the synchronization device 20 a synchronization completion notification indicating the completion of synchronization of the nested aggregate data table 320 for each request processing thread 150 currently being executed, so that all the request processing threads 150 Switch from "waiting for synchronization” to "normal” (not waiting for synchronization).
- the request response unit 114 transmits the result information of the read request and the update request processed by each request processing thread 150 to the service server 50.
- the synchronization device 20 causes the naive tree data table 310 to execute the update request based on the instruction of the tree structure data processing device 10. Further, the synchronization device 20 executes a synchronization process for synchronizing the updated naive tree data table 310 and the nested set data table 320.
- FIG. 4 is a functional block diagram showing a configuration example of the synchronization device 20 according to the present embodiment.
- the synchronization device 20 is realized by a computer or the like including a control unit 21, an input / output unit 22, and a storage unit 23.
- the input / output unit 22 includes a communication interface for transmitting and receiving information, and an input / output interface for transmitting and receiving information with an input device such as a keyboard and an output device such as a monitor.
- the storage unit 23 is composed of a flash memory, a hard disk, a RAM, and the like. Further, in the storage unit 23, for example, identification information of a thread (request processing thread 150) is temporarily stored as information necessary for processing of the control unit 21 and a program for executing each function of the control unit 21. Is remembered in.
- control unit 21 includes a thread registration unit 211, a data update instruction unit 212, a synchronization wait instruction unit 213, a synchronization processing unit 214, and a synchronization completion notification unit 215.
- the control unit 21 is realized, for example, by a CPU (not shown) developing and executing a program stored in the storage unit 23 in a RAM.
- the thread registration unit 211 acquires the identification information (identifier) of the request processing thread 150 from the tree structure data processing device 10 and stores it in the storage unit 23. As a result, the thread registration unit 211 registers the thread currently being processed (request processing thread 150). Further, when the thread registration unit 211 receives the identification information (identifier) of the request processing thread 150 whose processing has been completed from the synchronization device 20, the thread registration unit 211 deletes the registered identification information of the request processing thread 150.
- the data update instruction unit 212 When the data update instruction unit 212 receives the update request (SQL for the naive tree) of the naive tree data table 310 from the tree structure data processing device 10, the data update instruction unit 212 transmits the update request (update) to the DB server 30 (FIG. 1). This causes the naive tree data table 310 to be updated.
- the synchronization waiting instruction unit 213 receives the information of the update completion (update completion) of the naive tree data table 310 from the DB server 30 (FIG. 1). Then, the synchronization waiting instruction unit 213 refers to the identification information (identifier) of each request processing thread 150 registered in the storage unit 23, triggered by the reception of the update completion, and synchronizes with each request processing thread 150.
- the wait instruction information is generated and transmitted to the tree structure data processing device 10.
- the synchronization processing unit 214 reads the information of the naive tree data table 310 when the synchronization waiting instruction unit 213 transmits the synchronization waiting instruction information to the tree structure data processing device 10, and the nested set data table 320. Performs synchronization processing with.
- This conversion from the naive tree data table 310 to the nested set data table 320 can be realized by, for example, the stack algorithm described in Non-Patent Document 1.
- the synchronization completion notification unit 215 transmits a synchronization completion notification to the tree structure data processing device 10 when the synchronization processing between the naive tree data table 310 and the nested aggregate data table 320 by the synchronization processing unit 214 is completed.
- the DB server 30 is a server that stores the naive tree data table 310 and the nested aggregate data table 320 in association with one service.
- the DB server 30 is realized by a computer or the like including a control unit 31, an input / output unit 32, and a storage unit 33.
- the input / output unit 32 includes a communication interface for transmitting and receiving information, and an input / output interface for transmitting and receiving information with an input device such as a keyboard and an output device such as a monitor.
- the storage unit 33 is composed of a flash memory, a hard disk, RAM, and the like. Further, the storage unit 33 stores a naive tree data table 310 and a nested set data table 320 associated with one service.
- the storage unit 33 may store a plurality of sets of the naive tree data table 310 and the nested set data table 320 associated with each of the plurality of services.
- the control unit 31 controls the overall processing of the DB 30, receives and executes an update request and a read request for the naive tree data table 310, and receives and executes a read request and a synchronous processing control for the nested aggregate data table 320. .. Further, the control unit 31 outputs completion information as response information when the processing of each request or the like is completed.
- FIG. 5 is a diagram illustrating processing of a read request in a normal time by the tree structure data processing system 1000 according to the present embodiment.
- the tree structure data processing system 1000 performs the processing for the read request with reference to the nested set data table 320.
- the request receiving unit 111 of the tree structure data processing device 10 receives a (abstract) read request as a query from the service server 50 (step S10). Then, the request receiving unit 111 outputs the received query (reading request) to the processing thread setting unit 112.
- the processing thread setting unit 112 of the tree structure data processing device 10 starts the request processing thread 150 when the query is acquired. Then, the processing thread setting unit 112 transmits the identification information (identifier) of the started request processing thread 150 to the synchronization device 20 (step S11).
- the thread registration unit 211 of the synchronization device 20 receives the identification information of the thread (request processing thread 150), it stores it in the storage unit 23 and registers it (step S12).
- the processing thread setting unit 112 of the tree structure data processing device 10 determines the request contents such as whether the acquired query contents are read requests or update requests. Then, the processing thread setting unit 112 determines that the query is a read request, and the synchronization state management unit 113 has not received the synchronization wait instruction information, that is, the nested set data table 320 is undergoing synchronization processing. If not, in the transaction of the started request processing thread 150, the (abstract) read request is converted into the recursive SQL for the nested set, and the read request (read request) is transmitted to the nested set data table 320 (step). S13). Then, the response (read result) is received from the DB server 30 (step S14), and the request response unit 114 of the tree structure data processing device 10 transmits the response (read result) to the service server 50.
- the processing load can be reduced as compared with the case where the data is read from the naive tree data table 310.
- Step S11 The transmission of the identification information of the request processing thread 150 (step S11), which is executed by the tree structure data processing device 10 when the query is received and the request processing thread 150 is started, and the registration in the synchronization device 20 (step S11).
- Step S12) is not limited to the case of the query indicating the read request, and is similarly performed in the case of the query indicating the update request and the like. That is, when the request processing thread 150 is started, the processing is performed regardless of the contents.
- FIGS. 6 to 9 shown below the illustration of the identification information registration process of the request processing thread 150 is omitted, but it is assumed that the processes of steps S11 and S12 are executed in the same manner.
- FIG. 6 is a diagram illustrating a data update process by the tree structure data processing system 1000 according to the present embodiment.
- the processing of the data update request (update write (reconstruction of the tree structure)) is first executed in the naive tree data table 310, and then synchronized with the nested aggregate data table 320. Execute the process.
- the request receiving unit 111 of the tree structure data processing device 10 receives an (abstract) update request as a query from the service server 50 (step S20). Then, the request receiving unit 111 outputs the received query (update request) to the processing thread setting unit 112.
- the processing thread setting unit 112 of the tree structure data processing device 10 starts the request processing thread 150 when the query is acquired, and transmits the identification information (identifier) of the request processing thread 150 to the synchronization device 20. Register (not shown).
- the processing thread setting unit 112 of the tree structure data processing device 10 determines the request contents such as whether the acquired query contents are read requests or update requests. Then, when the processing thread setting unit 112 determines that the query is an update request, the processing thread setting unit 112 converts the (abstract) update request into SQL for a naive tree in the transaction of the launched request processing thread 150.
- An update request (update request) is transmitted to the synchronization device 20 (step S21).
- the data update instruction unit 212 of the synchronization device 20 receives the update request (update request) from the tree structure data processing device 10, the data update instruction unit 212 transmits the update instruction (update update) to the DB server 30 (FIG. 1). The data is updated (step S22).
- the synchronization waiting instruction unit 213 of the synchronization device 20 receives the information of the update completion (update completion) of the naive tree data table 310 from the DB server 30 (FIG. 1) (step S23). Then, the synchronization waiting instruction unit 213 refers to the identification information (identifier) of each request processing thread 150 registered in the storage unit 23, triggered by the reception of the update completion, and synchronizes with each request processing thread 150. The wait instruction information is generated and transmitted to the tree structure data processing device 10 (step S24).
- the synchronization state management unit 113 of the tree structure data processing device 10 receives the synchronization wait instruction information for each request processing thread 150, the state of all the request processing threads 150 is changed from "normal” (state not waiting for synchronization) to ". Switch to "waiting for synchronization” (step S25).
- the synchronization processing unit 214 of the synchronization device 20 reads the naive tree data table 310 in the background, converts it into the information of the nested set data table 320, and synchronizes (syncs) it (step S26).
- the naive tree data table 310 when a data update request is received from the service server 50, the naive tree data table 310 is first updated, and then the nested aggregate data table 320 is synchronized in the background. be able to. Therefore, for the update writing (reconstruction of the tree structure) of the data for reconstructing the tree structure, the naive tree data table 310, which has a smaller processing load than the nested set, can be preferentially processed.
- FIG. 7 is a diagram illustrating processing of a read request at the time of switching "waiting for synchronization" by the tree structure data processing system 1000 according to the present embodiment.
- the state of each request processing thread 150 is switched from “normal time” to “waiting for synchronization”, that is, synchronization processing to the nested set data table 320 by the synchronization device 20. Is running.
- the processing for the read request is performed with reference to the naive tree data table 310 instead of the nested set data table 320.
- the request receiving unit 111 of the tree structure data processing device 10 receives a (abstract) read request as a query from the service server 50 (step S30). Then, the request receiving unit 111 outputs the received query (reading request) to the processing thread setting unit 112.
- the processing thread setting unit 112 of the tree structure data processing device 10 starts the request processing thread 150 when the query is acquired, and transmits the identification information (identifier) of the request processing thread 150 to the synchronization device 20. Register (not shown).
- the processing thread setting unit 112 of the tree structure data processing device 10 determines the request contents such as whether the acquired query contents are read requests or update requests. Then, the processing thread setting unit 112 determines that the query is a read request, and when each request processing thread 150 is in the "waiting for synchronization" state, in the transaction of the launched request processing thread 150, A (abstract) read request is converted into a recursive SQL for a naive tree, and a read request (read request) is transmitted to the naive tree data table 310 (step S31). Then, a response (read result) is received from the DB server 30 (FIG. 1) (step S32), and the request response unit 114 of the tree structure data processing device 10 transmits the response (read result) to the service server 50. ..
- the read result can be obtained by referring to the naive tree data table 310 instead of the nested set data table 320. .. Therefore, it is possible to reduce the service unresponsive time due to the update lock.
- FIG. 8 is a diagram illustrating processing at the time of completion of synchronization by the tree structure data processing system 1000 according to the present embodiment.
- the synchronization device 20 receives the synchronization completion result information from the DB server 30 (FIG. 1) (step S40). Then, when the synchronization completion notification unit 215 of the synchronization device 20 receives the synchronization completion result information, it refers to the identification information (identifier) of each request processing thread 150 registered in the storage unit 23, and makes each request. A synchronization completion notification indicating the cancellation of the synchronization wait for the processing thread 150 is generated and transmitted to the tree structure data processing device 10 (step S41).
- step S42 When the synchronization state management unit 113 of the tree structure data processing device 10 receives the synchronization completion notification for each request processing thread 150, the state of all the request processing threads 150 is switched from “waiting for synchronization” to "normal”. , The "waiting for synchronization” state is resolved (step S42).
- FIG. 9 is a diagram illustrating data update processing during data synchronization by the tree structure data processing system 1000 according to the present embodiment.
- the synchronization device 20 cancels the immediately preceding synchronization process and updates the data table 320. Synchronize with the latest data.
- the request receiving unit 111 of the tree structure data processing device 10 receives an (abstract) update request as a query from the service server 50 (step S50). Then, the request receiving unit 111 outputs the received query (update request) to the processing thread setting unit 112.
- the processing thread setting unit 112 of the tree structure data processing device 10 starts the request processing thread 150 when the query is acquired, and transmits the identification information (identifier) of the request processing thread 150 to the synchronization device 20. Register (not shown).
- the processing thread setting unit 112 of the tree structure data processing device 10 determines the request contents such as whether the acquired query contents are read requests or update requests. Then, when the processing thread setting unit 112 determines that the query is an update request, the processing thread setting unit 112 converts the (abstract) update request into SQL for a naive tree in the transaction of the launched request processing thread 150.
- An update request (update request) is transmitted to the synchronization device 20 (step S51).
- the data update instruction unit 212 of the synchronization device 20 receives the update request (update request) from the tree structure data processing device 10, the data update instruction unit 212 transmits the update instruction (update update) to the DB server 30 (FIG. 1) ( Step S52), the data is updated.
- the synchronization waiting instruction unit 213 of the synchronization device 20 receives the information of the update completion (update completion) of the naive tree data table 310 from the DB server 30 (FIG. 1) (step S53).
- the synchronization processing unit 214 of the synchronization device 20 cancels the (immediately preceding) synchronization processing currently being executed (step S54). Then, the synchronization processing unit 214 reads the latest naive tree data table 310 again, converts it into the information of the nested set data table 320, and synchronizes (syncs) it (step S55).
- read processing is performed from the naive tree data table 310 regardless of the transaction isolation level.
- the processing for the read request is performed with reference to the naive tree data table 310, and is switched to read from the nested aggregate data table 320 regardless of the transaction separation level. This is because the data consistency is guaranteed because the synchronization between the naive tree data table 310 and the nested set data table 320 is completed, and it is more advantageous to use the nested set data table 320, which has a smaller processing load. Is.
- the tree structure data processing system 1000 the tree structure data processing method, the tree structure data processing device 10, and the tree structure data processing program according to the present embodiment, when the tree structure is reconstructed in the relational database.
- the service unresponsive time due to the update lock can be reduced, and the data search / read performance can be maintained without being deteriorated.
- Tree structure data processing device 11,21,31 Control unit 12,22,32 Input / output unit 13,23,33 Storage unit 20
- Synchronization device 30 DB server 50
- Service server 111
- Request reception unit 112 Processing thread setting unit 113
- Synchronous status management Part 114
- Request response part 150
- Request processing thread 211
- Thread registration part 212
- Data update instruction part 213
- Synchronization waiting instruction part 214
- Synchronization processing part 215
- Naive tree data table 320 Neighbored aggregate data table 1000 Tree structure data processing system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】リレーショナルデータベースにおける木構造の再構成時において、更新ロックによるサービス応答不可時間を低減するとともに、データ検索読み出し性能を低下させずに保持する。 【解決手段】木構造データ処理システム1000の木構造データ処理装置10は、入れ子集合データテーブルを参照して検索処理する要求処理スレッドを立ち上げて実行するともに、ナイーブツリーデータテーブルのデータ更新をする要求処理スレッド150を立ち上げて実行する処理スレッド設定部と、ナイーブツリーデータテーブルと入れ子集合データテーブルとの間の同期処理の開始を示す同期待ち指示情報を受信した場合に、各要求処理スレッド150の状態を同期待ちに切り替える同期状態管理部とを備える。同期装置は、更新要求により更新されたナイーブツリーデータテーブルのデータを、入れ子集合データテーブルのデータに変換して同期させる同期処理部を備える。
Description
本発明は、木構造のデータをリレーショナルデータベースに格納する木構造データ処理システム、木構造データ処理方法、木構造データ処理装置および木構造データ処理プログラムに関する。
階層を持ったデータ構造の一つとして、木構造が知られている。例えば、図10に示すような会社の組織構造や、作業の進捗管理システムにおけるチケット(実施すべき作業の内容や優先度等を記録するもの)の親子関係、SNSにおける受信コメントに対する返信コメント、物理的なリソースの容量管理(コンピュータホスト―CPUソケット―CPU,メモリ等の構造)など、様々なデータが木構造で構成される。
この木構造のデータを、リレーショナルデータベース(以下、単に「データベース」と称する。)にモデル化する手法として、「ナイーブツリー方式」と「入れ子集合方式」とが知られている(非特許文献1参照)。
ナイーブツリー方式について、図11の符号100に示す木構造のデータがある場合として説明する。
符号100に示す木構造では、ある階層に属する一つのデータから、下位の階層に位置するデータが枝分かれした状態で配置される。この木構造の要素部分を節(以下、「ノード」と称する。)といい、各データが配置される。この木構造では、ノードA,B,C,D,E,Fそれぞれに対応付けられたデータが配置される。ここで各ノードのIDをそれぞれ「A」「B」「C」「D」「E」「F」とする。
ナイーブツリー方式は、符号100に示す木構造のデータをデータベースに格納する際、符号310に示すように、各ノードのIDに対応し階層構造を示す情報として、直近の上位の階層に位置する(親の)ノードのIDをポインタとして格納する単純なモデルである。なお、符号310の例で示すデータテーブルを、「ナイーブツリー方式のデータテーブル」または「ナイーブツリーデータテーブル」と称する。
例えば、ノードのID「B」(以下、単にノード「B」と称する。他のノードも同様。)に対応する親ID(Parent_ID)としてノード「A」が格納される。また、ノード「D」に対応する親ID(Parent_ID)としてノード「B」が格納される。
符号100に示す木構造では、ある階層に属する一つのデータから、下位の階層に位置するデータが枝分かれした状態で配置される。この木構造の要素部分を節(以下、「ノード」と称する。)といい、各データが配置される。この木構造では、ノードA,B,C,D,E,Fそれぞれに対応付けられたデータが配置される。ここで各ノードのIDをそれぞれ「A」「B」「C」「D」「E」「F」とする。
ナイーブツリー方式は、符号100に示す木構造のデータをデータベースに格納する際、符号310に示すように、各ノードのIDに対応し階層構造を示す情報として、直近の上位の階層に位置する(親の)ノードのIDをポインタとして格納する単純なモデルである。なお、符号310の例で示すデータテーブルを、「ナイーブツリー方式のデータテーブル」または「ナイーブツリーデータテーブル」と称する。
例えば、ノードのID「B」(以下、単にノード「B」と称する。他のノードも同様。)に対応する親ID(Parent_ID)としてノード「A」が格納される。また、ノード「D」に対応する親ID(Parent_ID)としてノード「B」が格納される。
このナイーブツリー方式を、木構造のデータベースのモデルとして採用する際の課題は、ツリー全体のデータ検索時に、手続き方の呼び出しとなり、データベースに対して複数のクエリが発生するため、性能が低下しやすいことにある。
例えば、図11の符号100で示した木構造のデータの場合に、ツリー構造内の全てのデータを取り出すのに、下記に示すような複数回の再帰的な探索か再帰的なテーブル結合が必要となる。
例えば、図11の符号100で示した木構造のデータの場合に、ツリー構造内の全てのデータを取り出すのに、下記に示すような複数回の再帰的な探索か再帰的なテーブル結合が必要となる。
SELECT id WHERE parent_id = A ; -- BとCを返す
SELECT id WHERE parent_id = B ; -- DとEを返す
SELECT id WHERE parent_id = C ; -- Fを返す
SELECT id WHERE parent_id = D ; -- 何も返さない
SELECT id WHERE parent_id = E ; -- 何も返さない
SELECT id WHERE parent_id = F ; -- 何も返さない
SELECT id WHERE parent_id = B ; -- DとEを返す
SELECT id WHERE parent_id = C ; -- Fを返す
SELECT id WHERE parent_id = D ; -- 何も返さない
SELECT id WHERE parent_id = E ; -- 何も返さない
SELECT id WHERE parent_id = F ; -- 何も返さない
一方、入れ子集合方式では、木構造を入れ子構造として捉え直した上で、ルートノード(最上位のノード)から順に下位のノードを巡って一筆書きし、またルートノードに戻ってくるルートを探索する。このときに、各ノードに入るときと出るときに連番を左端(left)と右端(right)として割り振っていく。
例えば、図12の符号101に示した木構造のデータの場合に、ルートノードであるノード「A」から下位のノードを巡ってまたノード「A」に戻ってくるルートを探索し、各ノードの左端(left)と右端(right)に番号を割り振っていく。
そして、図12の符号320に示すように、ノード「A」の左端(left)を「1」、右端(right)を「12」、ノード「B」の左端(left)を「2」、右端(right)を「7」等というように設定する。なお、符号320の例で示すデータテーブルを、「入れ子集合方式のデータテーブル」または「入れ子集合データテーブル」と称する。
例えば、図12の符号101に示した木構造のデータの場合に、ルートノードであるノード「A」から下位のノードを巡ってまたノード「A」に戻ってくるルートを探索し、各ノードの左端(left)と右端(right)に番号を割り振っていく。
そして、図12の符号320に示すように、ノード「A」の左端(left)を「1」、右端(right)を「12」、ノード「B」の左端(left)を「2」、右端(right)を「7」等というように設定する。なお、符号320の例で示すデータテーブルを、「入れ子集合方式のデータテーブル」または「入れ子集合データテーブル」と称する。
この入れ子集合方式を、木構造のデータベースのモデルとして採用する際の課題は、ツリー構造の変更時に、更新すべきカラムが多く、更新中の競合ロックにより性能が低下しやすいことである。
例えば、図13の符号103に示す木構造を符号104に示す木構造に変更する場合を考える。このとき、ナイーブツリー方式でデータベースに格納されたデータ(符号310のナイーブツリーデータテーブル)では、変更後において、符号311のナイーブツリーデータテーブルの破線で示すように、ノード「B」のみの情報(親ID)を「A」→「C」に変更するだけでよい。
これに対し、入れ子集合方式では、変更前のデータ(符号320の入れ子集合データテーブル)を、符号321の入れ子集合データテーブルに示すように、ノード「B」「C」「D」「E」の左端(left)と右端(right)の情報を変更する必要がある。よって、更新すべきデータが多くなってしまう。
例えば、図13の符号103に示す木構造を符号104に示す木構造に変更する場合を考える。このとき、ナイーブツリー方式でデータベースに格納されたデータ(符号310のナイーブツリーデータテーブル)では、変更後において、符号311のナイーブツリーデータテーブルの破線で示すように、ノード「B」のみの情報(親ID)を「A」→「C」に変更するだけでよい。
これに対し、入れ子集合方式では、変更前のデータ(符号320の入れ子集合データテーブル)を、符号321の入れ子集合データテーブルに示すように、ノード「B」「C」「D」「E」の左端(left)と右端(right)の情報を変更する必要がある。よって、更新すべきデータが多くなってしまう。
ジョーセルコ著,「プログラマのためのSQLグラフ原論」,翔泳社、2016年8月,p.13-15,26,27,61-63,98-101,114-116
このナイーブツリー方式と入れ子集合方式のデータベースのモデルを比較すると、ナイーブツリー方式は、木構造を再構成するデータの更新書き込み(木構造の再構成)について処理性能が優れているものの、データの検索読み出しの処理性能は劣っている。一方、入れ子集合方式は、検索読み出し性能は優れているものの、更新書き込み(木構造の再構成)の性能は劣っている。
本発明は、このような事情に鑑みなされたものであり、リレーショナルデータベースにおける木構造の再構成時において、更新ロックによるサービス応答不可時間を低減するとともに、データ検索読み出し性能を低下させずに保持する、木構造データ処理システム、木構造データ処理方法、木構造データ処理装置および木構造データ処理プログラムを提供することを目的とする。
上述の目的を達成するため、請求項1に記載の発明は、リレーショナルデータベースにおける木構造データをデータテーブルに格納するDBサーバと、前記木構造データの更新および検索処理を制御する木構造データ処理装置と、前記DBサーバに格納されたデータテーブル同士を同期させる同期装置と、を備える木構造データ処理システムであって、前記DBサーバは、1つのサービスについてのデータテーブルとして、前記木構造データをナイーブツリー方式でモデル化したデータテーブルを示すナイーブツリーデータテーブルと、前記木構造データを入れ子集合方式でモデル化したデータテーブルを示す入れ子集合データテーブルとを、対応付けて格納する記憶部を備え、前記木構造データ処理装置が、前記木構造データの更新要求および検索要求を受け付ける要求受付部と、前記検索要求を受け付けた場合に、前記入れ子集合データテーブルを参照して検索処理する要求処理スレッドを立ち上げて実行するともに、前記更新要求を受け付けた場合に、前記ナイーブツリーデータテーブルのデータ更新をする要求処理スレッドを立ち上げて実行する処理スレッド設定部と、前記ナイーブツリーデータテーブルと前記入れ子集合データテーブルとの間の同期処理の開始を示す同期待ち指示情報を受信した場合に、各前記要求処理スレッドの状態を同期待ちに切り替える同期状態管理部と、を備え、前記同期装置が、前記DBサーバから、前記ナイーブツリーデータテーブルの更新完了の情報を受信した場合に、前記同期待ち指示情報を前記木構造データ処理装置に送信する同期待ち指示部と、前記更新要求により更新された前記ナイーブツリーデータテーブルのデータを、前記入れ子集合データテーブルのデータに変換して同期させる同期処理部と、を備え、前記木構造データ処理装置が、各前記要求処理スレッドの状態が同期待ちである場合において、前記要求受付部が前記木構造データの検索要求を受け付けたときに、前記処理スレッド設定部が、前記入れ子集合データテーブルに代えて、前記ナイーブツリーデータテーブルを参照して検索処理を実行することを特徴とする木構造データ処理システムとした。
また、請求項2に記載の発明は、リレーショナルデータベースにおける木構造データをデータテーブルに格納するDBサーバと、前記木構造データの更新および検索処理を制御する木構造データ処理装置と、前記DBサーバに格納されたデータテーブル同士を同期させる同期装置と、を備える木構造データ処理システムの木構造データ処理方法であって、前記DBサーバは、1つのサービスについてのデータテーブルとして、前記木構造データをナイーブツリー方式でモデル化したデータテーブルを示すナイーブツリーデータテーブルと、前記木構造データを入れ子集合方式でモデル化したデータテーブルを示す入れ子集合データテーブルとを、対応付けて格納しており、前記木構造データ処理装置が、前記木構造データの更新要求および検索要求を受け付けるステップと、前記検索要求を受け付けた場合に、前記入れ子集合データテーブルを参照して検索処理する要求処理スレッドを立ち上げて実行するともに、前記更新要求を受け付けた場合に、前記ナイーブツリーデータテーブルのデータ更新をする要求処理スレッドを立ち上げて実行するステップと、前記ナイーブツリーデータテーブルと前記入れ子集合データテーブルとの間の同期処理の開始を示す同期待ち指示情報を受信した場合に、各前記要求処理スレッドの状態を同期待ちに切り替えるステップと、を実行し、前記同期装置が、前記DBサーバから、前記ナイーブツリーデータテーブルの更新完了の情報を受信した場合に、前記同期待ち指示情報を前記木構造データ処理装置に送信するステップと、前記更新要求により更新された前記ナイーブツリーデータテーブルのデータを、前記入れ子集合データテーブルのデータに変換して同期させるステップと、を実行し、前記木構造データ処理装置が、各前記要求処理スレッドの状態が同期待ちである場合において、前記木構造データの検索要求を受け付けたときに、前記入れ子集合データテーブルに代えて、前記ナイーブツリーデータテーブルを参照して検索処理を行うステップを実行することを特徴とする木構造データ処理方法とした。
また、請求項3に記載の発明は、リレーショナルデータベースにおける木構造データをデータテーブルに格納するDBサーバと、前記DBサーバに格納されたデータテーブル同士を同期させる同期装置と、に通信接続され、前記木構造データの更新および検索処理を制御する木構造データ処理装置であって、前記DBサーバは、1つのサービスについてのデータテーブルとして、前記木構造データをナイーブツリー方式でモデル化したデータテーブルを示すナイーブツリーデータテーブルと、前記木構造データを入れ子集合方式でモデル化したデータテーブルを示す入れ子集合データテーブルとを、対応付けて格納しており、前記木構造データ処理装置が、前記木構造データの更新要求および検索要求を受け付ける要求受付部と、前記検索要求を受け付けた場合に、前記入れ子集合データテーブルを参照して検索処理する要求処理スレッドを立ち上げて実行するともに、前記更新要求を受け付けた場合に、前記ナイーブツリーデータテーブルのデータ更新をする要求処理スレッドを立ち上げて実行する処理スレッド設定部と、前記ナイーブツリーデータテーブルと前記入れ子集合データテーブルとの間の同期処理の開始を示す同期待ち指示情報を前記同期装置から受信した場合に、各前記要求処理スレッドの状態を同期待ちに切り替える同期状態管理部と、を備え、前記木構造データ処理装置が、各前記要求処理スレッドの状態が同期待ちである場合において、前記要求受付部が前記木構造データの検索要求を受け付けたときに、前記処理スレッド設定部が、前記入れ子集合データテーブルに代えて、前記ナイーブツリーデータテーブルを参照して検索処理を実行することを特徴とする木構造データ処理装置とした。
また、請求項4に記載の発明は、コンピュータを、請求項3に記載の木構造データ処理装置として機能させるための木構造データ処理プログラムとした。
このようにすることで、木構造データ処理システムの木構造データ処理装置は、データの検索要求を受信した場合には、検索処理の性能が優れた入れ子集合データテーブルにより検索処理を実行する。また、木構造データ処理装置は、データの更新要求(更新書き込み(木構造の再構成))を受信した場合には、更新処理の性能が優れたナイーブツリーデータテーブルにおいてデータ更新を実行した上で、同期装置により、ナイーブツリーデータテーブルと入れ子集合データテーブルを同期させることができる。さらに、木構造データ処理装置は、入れ子集合データテーブルが同期処理中であり各要求処理スレッドが同期待ちである場合において、検索要求を受け付けたときには、入れ子集合データテーブルに代えて、ナイーブツリーデータテーブルを参照して検索処理を実行することができる。
よって、木構造の再構成時(更新要求時)において、更新ロックによるサービス応答時間を低減できるとともに、データ検索読み出し機能を低下させずに保持することができる。
よって、木構造の再構成時(更新要求時)において、更新ロックによるサービス応答時間を低減できるとともに、データ検索読み出し機能を低下させずに保持することができる。
本発明によれば、リレーショナルデータベースにおける木構造の再構成時において、更新ロックによるサービス応答不可時間を低減するとともに、データ検索読み出し性能を低下させずに保持する、木構造データ処理システム、木構造データ処理方法、木構造データ処理装置および木構造データ処理プログラムを提供することができる。
次に、本発明を実施するための形態(以下、「本実施形態」という。)について説明する。まず、本実施形態に係る木構造データ処理システム等の概要を説明する。
図1は、本実施形態に係る木構造データ処理システム1000の全体構成を示す図である。
図1に示すように、木構造データ処理システム1000は、サービスサーバ50に通信接続される木構造データ処理装置10と、同期装置20と、DBサーバ30とを備える。
図1は、本実施形態に係る木構造データ処理システム1000の全体構成を示す図である。
図1に示すように、木構造データ処理システム1000は、サービスサーバ50に通信接続される木構造データ処理装置10と、同期装置20と、DBサーバ30とを備える。
DBサーバ30には、1つのサービスに対して、ナイーブツリー方式のデータテーブル(ナイーブツリーデータテーブル310)と、入れ子集合方式のデータテーブル(入れ子集合データテーブル320)とが格納される。そして、同期装置20が、このナイーブツリーデータテーブル310と入れ子集合データテーブル320とを同期させる。
図2は、本実施形態に係る木構造データ処理システム1000の処理の概要を説明するための図である。
図2においては、処理内容を分かりやすく説明するため、筐体としてのDBサーバ30(図1参照)の記載を省略し、このDBサーバ30に格納されているナイーブツリーデータテーブル310および入れ子集合データテーブル320を抽出して記載している(以下の図においても同様)。
図2においては、処理内容を分かりやすく説明するため、筐体としてのDBサーバ30(図1参照)の記載を省略し、このDBサーバ30に格納されているナイーブツリーデータテーブル310および入れ子集合データテーブル320を抽出して記載している(以下の図においても同様)。
木構造データ処理装置10は、サービスサーバ50からデータの検索読み出し要求を受信すると、その読み出し要求を処理するためのスレッド(以下、「要求処理スレッド150」と称する。)を立ち上げる。そして、木構造データ処理装置10は、入れ子集合データテーブル320に読み出し要求(read要求)を送信して(符号P1)、応答(read結果)を受信する(符号P2)ことによりデータを読み出す。
また、木構造データ処理装置10は、サービスサーバ50からデータの更新要求を受信すると、その更新要求を処理するためのスレッド(要求処理スレッド150)を立ち上げる。そして、木構造データ処理装置10は、その更新要求に基づき、同期装置20を介してナイーブツリーデータテーブル310を更新(update)する(符号P3)。そして、ナイーブツリーデータテーブル310の更新が終わった後に、バックグラウンドで、同期装置20がナイーブツリーデータテーブル310を読み込み(read)(符号P4)、入れ子集合データテーブル320の情報に変換し同期(sync)させる(符号P5)。
また、木構造データ処理装置10は、サービスサーバ50からデータの更新要求を受信すると、その更新要求を処理するためのスレッド(要求処理スレッド150)を立ち上げる。そして、木構造データ処理装置10は、その更新要求に基づき、同期装置20を介してナイーブツリーデータテーブル310を更新(update)する(符号P3)。そして、ナイーブツリーデータテーブル310の更新が終わった後に、バックグラウンドで、同期装置20がナイーブツリーデータテーブル310を読み込み(read)(符号P4)、入れ子集合データテーブル320の情報に変換し同期(sync)させる(符号P5)。
このように、木構造データ処理装置10は、データの検索読み出し要求を受信した場合には、読み出し処理の性能が優れた入れ子集合データテーブル320にアクセスする。また、木構造データ処理装置10は、データの更新要求(更新書き込み(木構造の再構成))を受信した場合には、更新処理の性能が優れたナイーブツリーデータテーブル310にアクセスする。よって、木構造データ処理システム1000によれば、木構造の再構成時(更新要求時)において、更新ロックによるサービス応答時間を低減できるとともに、データ検索読み出し機能を低下させずに保持することができる。
以下、木構造データ処理システム1000を構成する各装置について、詳細に説明する。
以下、木構造データ処理システム1000を構成する各装置について、詳細に説明する。
≪木構造データ処理装置≫
木構造データ処理装置10は、サービスサーバ50からのクエリを受け付ける。ここでは、あるサービスに対応するデータテーブルに対して、読み出し要求と更新要求のクエリを受信するものとする。木構造データ処理装置10は、クエリを受信するとスレッド(要求処理スレッド150)をたて、その要求処理スレッド150を同期装置20に登録する。そして、木構造データ処理装置10は、クエリの内容に基づき、DBサーバ30(図1)に記憶された、ナイーブツリーデータテーブル310、入れ子集合データテーブル320のどちらかを要求先として決定し、要求処理スレッド150毎に処理を実行する。
木構造データ処理装置10は、サービスサーバ50からのクエリを受け付ける。ここでは、あるサービスに対応するデータテーブルに対して、読み出し要求と更新要求のクエリを受信するものとする。木構造データ処理装置10は、クエリを受信するとスレッド(要求処理スレッド150)をたて、その要求処理スレッド150を同期装置20に登録する。そして、木構造データ処理装置10は、クエリの内容に基づき、DBサーバ30(図1)に記憶された、ナイーブツリーデータテーブル310、入れ子集合データテーブル320のどちらかを要求先として決定し、要求処理スレッド150毎に処理を実行する。
木構造データ処理装置10は、通常時において読み出し要求を受信した場合、入れ子集合データテーブル320にその読み出し要求を送信する。一方、木構造データ処理装置10は、更新要求を受信した場合は、ナイーブツリーデータテーブル310に同期装置20を介してその更新要求を送信する。ただし、木構造データ処理装置10は、入れ子集合データテーブル320が同期処理中(後記する「同期待ち切替時」)である場合には、読み出し要求を受信したときにナイーブツリーデータテーブル310に読み出し要求を送信する制御を行う。これにより、木構造データ処理装置10は、競合ロックによりサービス無応答時間が発生する時間を低減しつつ、通常時においては、高い検索性能を得ることができる。
図3は、本実施形態に係る木構造データ処理装置10の構成例を示す機能ブロック図である。
この木構造データ処理装置10は、図3に示すように、制御部11、入出力部12および記憶部13を備えるコンピュータ等により実現される。
入出力部12は、情報の送受信を行うための通信インタフェース、および、キーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
記憶部13は、フラッシュメモリやハードディスク、RAM(Random Access Memory)等により構成される。また、この記憶部13には、制御部11の各機能を実行させるためのプログラム(木構造データ処理プログラム)や、制御部11の処理に必要な情報が一時的に記憶される。
この木構造データ処理装置10は、図3に示すように、制御部11、入出力部12および記憶部13を備えるコンピュータ等により実現される。
入出力部12は、情報の送受信を行うための通信インタフェース、および、キーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
記憶部13は、フラッシュメモリやハードディスク、RAM(Random Access Memory)等により構成される。また、この記憶部13には、制御部11の各機能を実行させるためのプログラム(木構造データ処理プログラム)や、制御部11の処理に必要な情報が一時的に記憶される。
制御部11は、図3に示すように、要求受付部111、処理スレッド設定部112、同期状態管理部113、要求応答部114を含んで構成される。
この制御部11は、例えば、記憶部13に記憶されたプログラムを不図示のCPU(Central Processing Unit)が、RAMに展開し実行することにより実現される。
この制御部11は、例えば、記憶部13に記憶されたプログラムを不図示のCPU(Central Processing Unit)が、RAMに展開し実行することにより実現される。
要求受付部111は、サービスサーバ50からのクエリを受け付ける。ここで、要求受付部111が受け付けるクエリは、読み出し要求や更新要求について指示する抽象的な要求で示される情報である。
要求受付部111は、受け付けた抽象的な読み出し要求や抽象的な更新要求を示すクエリを、処理スレッド設定部112に出力する。
なお、この抽象的な読み出し要求や抽象的な更新要求は、サービスサーバ50と木構造データ処理装置10との間で、予め規定しておいた情報(プロトコル)を利用できるように設定しておく。
要求受付部111は、受け付けた抽象的な読み出し要求や抽象的な更新要求を示すクエリを、処理スレッド設定部112に出力する。
なお、この抽象的な読み出し要求や抽象的な更新要求は、サービスサーバ50と木構造データ処理装置10との間で、予め規定しておいた情報(プロトコル)を利用できるように設定しておく。
処理スレッド設定部112は、クエリを取得するとスレッド(要求処理スレッド150)を立ち上げる。そして、処理スレッド設定部112は、立ち上げた要求処理スレッド150の識別士の情報(識別情報)を、同期装置20に送信することにより登録させる。
また、処理スレッド設定部112は、取得したクエリの内容が読み出し要求であるのか、更新要求であるのか等の要求内容を判定する。
また、処理スレッド設定部112は、取得したクエリの内容が読み出し要求であるのか、更新要求であるのか等の要求内容を判定する。
そして、処理スレッド設定部112は、そのクエリが更新要求である場合には、ナイーブツリー用のSQL(Structured Query Language)に変換し、立ち上げた要求処理スレッド150の処理として、同期装置20にその更新要求を送信することにより、ナイーブツリーデータテーブル310を更新させる。
なお、例えば、図2に示したナイーブツリーデータテーブル310において、ノード「B」の親ID(Parent_ID)を「C」に変更する場合には、抽象的な更新要求を、以下に示すようなSQL文に変換する。
- UPDATE <NAIVE_TABLE> SET parent_id=C WHERE id=B
- UPDATE <NAIVE_TABLE> SET parent_id=C WHERE id=B
また、処理スレッド設定部112は、取得したクエリの内容が読み出し要求である場合で通常時(入れ子集合データテーブル320が同期処理中でない)においては、(抽象的な)読み出し要求を入れ子集合用の再帰SQLに変換し、入れ子集合データテーブル320に読み出し要求(read)を送信する。
なお、例えば、図2に示した入れ子集合データテーブル320において、ノードAより下位のノードをすべて検索する場合には、抽象的な読み出し要求を、以下に示すような再帰SQLに変換する。
- SELECT naive.id FROM <NESTED_SET_TABLE> AS naive WHERE A.left <= naive.left AND naive.right <= A.right
- SELECT naive.id FROM <NESTED_SET_TABLE> AS naive WHERE A.left <= naive.left AND naive.right <= A.right
一方、処理スレッド設定部112は、取得したクエリの内容が読み出し要求である場合で入れ子集合データテーブル320の同期待ち時においては、(抽象的な)読み出し要求をナイーブツリー用の再帰SQLに変換し、ナイーブツリーデータテーブル310に読み出し要求(read)を送信する。
なお、例えば、図2に示したナイーブツリーデータテーブル310において、ノードAより下位のノードをすべて検索する場合には、抽象的な読み出し要求を、以下に示すような再帰SQLに変換する。
- WITH RECURSIVE sub_tree(id, parend_id) AS
(
SELECT naive.id AS id, naive.parent_id AS parent_id FROM <NAIVE_TABLE> AS naive WHERE naive.id = A UNION ALL
SELECT naive_alias.id AS naive_alias _id, naive_alias.parent_id AS naive_alias _parent_id
FROM <NAIVE_TABLE> AS naive_alias, sub_tree AS subtree_alias WHERE naive_alias.parent_id = subtree_alias.id
)
SELECT sub_tree.id FROM sub_tree
- WITH RECURSIVE sub_tree(id, parend_id) AS
(
SELECT naive.id AS id, naive.parent_id AS parent_id FROM <NAIVE_TABLE> AS naive WHERE naive.id = A UNION ALL
SELECT naive_alias.id AS naive_alias _id, naive_alias.parent_id AS naive_alias _parent_id
FROM <NAIVE_TABLE> AS naive_alias, sub_tree AS subtree_alias WHERE naive_alias.parent_id = subtree_alias.id
)
SELECT sub_tree.id FROM sub_tree
また、処理スレッド設定部112は、入れ子集合データテーブル320が同期処理中か否かを、同期状態管理部113の設定(「同期待ち」の指示)により把握することができる。
なお、処理スレッド設定部112は、各要求処理スレッド150の処理が終了した場合に、終了した要求処理スレッド150の識別子を、同期装置20に送信することにより、登録した識別士を削除させる。
なお、処理スレッド設定部112は、各要求処理スレッド150の処理が終了した場合に、終了した要求処理スレッド150の識別子を、同期装置20に送信することにより、登録した識別士を削除させる。
同期状態管理部113は、同期装置20から、入れ子集合データテーブル320の同期開始時において現在実行中の各要求処理スレッド150に対する同期待ち指示情報を受信することにより、すべての要求処理スレッド150の状態を「通常」(同期待ちしていない状態)から「同期待ち」に切り替える。
また、同期状態管理部113は、同期装置20から、現在実行中の各要求処理スレッド150に対する、入れ子集合データテーブル320の同期完了を示す同期完了通知を受信することにより、すべての要求処理スレッド150の状態を「同期待ち」から「通常」(同期待ちしていない状態)に切り替える。
また、同期状態管理部113は、同期装置20から、現在実行中の各要求処理スレッド150に対する、入れ子集合データテーブル320の同期完了を示す同期完了通知を受信することにより、すべての要求処理スレッド150の状態を「同期待ち」から「通常」(同期待ちしていない状態)に切り替える。
要求応答部114は、各要求処理スレッド150により処理された読み出し要求や更新要求の結果情報を、サービスサーバ50に送信する。
≪同期装置≫
同期装置20は、木構造データ処理装置10の指示に基づき、ナイーブツリーデータテーブル310に更新要求を実行させる。また、同期装置20は、更新したナイーブツリーデータテーブル310と、入れ子集合データテーブル320とを同期させる同期処理を実行する。
同期装置20は、木構造データ処理装置10の指示に基づき、ナイーブツリーデータテーブル310に更新要求を実行させる。また、同期装置20は、更新したナイーブツリーデータテーブル310と、入れ子集合データテーブル320とを同期させる同期処理を実行する。
図4は、本実施形態に係る同期装置20の構成例を示す機能ブロック図である。
この同期装置20は、図4に示すように、制御部21、入出力部22および記憶部23を備えるコンピュータ等により実現される。
入出力部22は、情報の送受信を行うための通信インタフェース、および、キーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
記憶部23は、フラッシュメモリやハードディスク、RAM等により構成される。また、この記憶部23には、制御部21の各機能を実行させるためのプログラムや、制御部21の処理に必要な情報として、例えば、スレッド(要求処理スレッド150)の識別情報などが一時的に記憶される。
この同期装置20は、図4に示すように、制御部21、入出力部22および記憶部23を備えるコンピュータ等により実現される。
入出力部22は、情報の送受信を行うための通信インタフェース、および、キーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
記憶部23は、フラッシュメモリやハードディスク、RAM等により構成される。また、この記憶部23には、制御部21の各機能を実行させるためのプログラムや、制御部21の処理に必要な情報として、例えば、スレッド(要求処理スレッド150)の識別情報などが一時的に記憶される。
制御部21は、図4に示すように、スレッド登録部211、データ更新指示部212、同期待ち指示部213、同期処理部214、同期完了通知部215を含んで構成される。
この制御部21は、例えば、記憶部23に記憶されたプログラムを不図示のCPUが、RAMに展開し実行することにより実現される。
この制御部21は、例えば、記憶部23に記憶されたプログラムを不図示のCPUが、RAMに展開し実行することにより実現される。
スレッド登録部211は、木構造データ処理装置10から要求処理スレッド150の識別情報(識別士)を取得し記憶部23に記憶する。これにより、スレッド登録部211は、現在処理中のスレッド(要求処理スレッド150)を登録しておく。
また、スレッド登録部211は、処理が終了した要求処理スレッド150の識別情報(識別子)を、同期装置20から受信した場合には、登録した要求処理スレッド150の識別情報を削除する。
また、スレッド登録部211は、処理が終了した要求処理スレッド150の識別情報(識別子)を、同期装置20から受信した場合には、登録した要求処理スレッド150の識別情報を削除する。
データ更新指示部212は、木構造データ処理装置10からナイーブツリーデータテーブル310の更新要求(ナイーブツリー用のSQL)を受信すると、その更新要求(update)をDBサーバ30(図1)に送信することにより、ナイーブツリーデータテーブル310を更新させる。
同期待ち指示部213は、DBサーバ30(図1)からナイーブツリーデータテーブル310の更新完了(update完了)の情報を受信する。そして、同期待ち指示部213は、この更新完了の受信を契機として、記憶部23に登録しておいた各要求処理スレッド150の識別情報(識別子)を参照し、その各要求処理スレッド150に対する同期待ち指示情報を生成して、木構造データ処理装置10に送信する。
同期処理部214は、同期待ち指示部213が、木構造データ処理装置10に対して、同期待ち指示情報を送信したことを契機として、ナイーブツリーデータテーブル310の情報を読み込み、入れ子集合データテーブル320との間で同期処理を実行する。このナイーブツリーデータテーブル310から入れ子集合データテーブル320への変換は、例えば、非特許文献1に記載のスタックアルゴリズムにより実現することができる。
同期完了通知部215は、同期処理部214によるナイーブツリーデータテーブル310と入れ子集合データテーブル320との間の同期処理が完了すると、木構造データ処理装置10に対して、同期完了通知を送信する。
≪DBサーバ≫
DBサーバ30は、1つのサービスに対応付けて、ナイーブツリーデータテーブル310と入れ子集合データテーブル320とを格納するサーバである。
このDBサーバ30は、図1に示すように、制御部31と入出力部32と記憶部33とを備えるコンピュータ等により実現される。
入出力部32は、情報の送受信を行うための通信インタフェース、および、キーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
記憶部33は、フラッシュメモリやハードディスク、RAM等により構成される。また、この記憶部33には、1つのサービスに対応付けられた、ナイーブツリーデータテーブル310および入れ子集合データテーブル320が格納される。なお、記憶部33には、複数のサービスそれぞれに対応付けられた、ナイーブツリーデータテーブル310および入れ子集合データテーブル320の組が複数格納されていてもよい。
DBサーバ30は、1つのサービスに対応付けて、ナイーブツリーデータテーブル310と入れ子集合データテーブル320とを格納するサーバである。
このDBサーバ30は、図1に示すように、制御部31と入出力部32と記憶部33とを備えるコンピュータ等により実現される。
入出力部32は、情報の送受信を行うための通信インタフェース、および、キーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
記憶部33は、フラッシュメモリやハードディスク、RAM等により構成される。また、この記憶部33には、1つのサービスに対応付けられた、ナイーブツリーデータテーブル310および入れ子集合データテーブル320が格納される。なお、記憶部33には、複数のサービスそれぞれに対応付けられた、ナイーブツリーデータテーブル310および入れ子集合データテーブル320の組が複数格納されていてもよい。
制御部31は、DB30の処理全般を司り、ナイーブツリーデータテーブル310に対する更新要求や読み出し要求を受け付けて実行したり、入れ子集合データテーブル320に対する読み出し要求や同期処理の制御を受け付けて実行したりする。また、制御部31は、各要求等の処置が完了すると応答情報として完了情報を出力する。
<処理の流れ>
次に、木構造データ処理システム1000が実行する処理の流れについて、図5~図9を参照して説明する。
次に、木構造データ処理システム1000が実行する処理の流れについて、図5~図9を参照して説明する。
≪通常時の読み出し処理≫
まず、通常時(入れ子集合データテーブル320が同期処理中でない)において行われる、読み出し要求の処理を説明する。
図5は、本実施形態に係る木構造データ処理システム1000による通常時の読み出し要求の処理を説明する図である。通常時において、木構造データ処理システム1000では、読み出し要求に対する処理を、入れ子集合データテーブル320を参照して行う。
まず、通常時(入れ子集合データテーブル320が同期処理中でない)において行われる、読み出し要求の処理を説明する。
図5は、本実施形態に係る木構造データ処理システム1000による通常時の読み出し要求の処理を説明する図である。通常時において、木構造データ処理システム1000では、読み出し要求に対する処理を、入れ子集合データテーブル320を参照して行う。
まず、木構造データ処理装置10の要求受付部111は、サービスサーバ50からクエリとして(抽象的な)読み出し要求を受け付ける(ステップS10)。そして、要求受付部111は、その受け付けたクエリ(読み出し要求)を、処理スレッド設定部112に出力する。
続いて、木構造データ処理装置10の処理スレッド設定部112は、クエリを取得すると要求処理スレッド150を立ち上げる。そして、処理スレッド設定部112は、立ち上げた要求処理スレッド150の識別情報(識別子)を、同期装置20に送信する(ステップS11)。
同期装置20のスレッド登録部211は、スレッド(要求処理スレッド150)の識別情報を受信すると、記憶部23に記憶することにより登録する(ステップS12)。
同期装置20のスレッド登録部211は、スレッド(要求処理スレッド150)の識別情報を受信すると、記憶部23に記憶することにより登録する(ステップS12)。
次に木構造データ処理装置10の処理スレッド設定部112は、取得したクエリの内容が読み出し要求であるのか、更新要求であるのか等の要求内容を判定する。そして、処理スレッド設定部112は、そのクエリが読み出し要求であると判定した場合であり、同期状態管理部113が同期待ち指示情報を受信していない、つまり、入れ子集合データテーブル320が同期処理中でないときに、立ち上げた要求処理スレッド150のトランザクションにおいて、(抽象的な)読み出し要求を入れ子集合用の再帰SQLに変換し、入れ子集合データテーブル320に読み出し要求(read要求)を送信する(ステップS13)。そして、DBサーバ30から、応答(read結果)を受信し(ステップS14)、木構造データ処理装置10の要求応答部114が、その応答(read結果)をサービスサーバ50に送信する。
このように、木構造データ処理システム1000では、通常時において、サービスサーバ50から、データの読み出し要求を受信した場合には、入れ子集合データテーブル320からデータを読み出し、サービスサーバ50に返信することができる。よって、ナイーブツリーデータテーブル310からデータを読み出す場合に比べ、処理負荷を減らすことが可能となる。
なお、木構造データ処理装置10が実行する、クエリを受信し要求処理スレッド150を立ち上げた際に行われる、要求処理スレッド150の識別情報の送信(ステップS11)と、同期装置20における登録(ステップS12)は、読み出し要求を示すクエリの場合に限られず、更新要求を示すクエリの場合等にも同様に行われる。つまり、要求処理スレッド150が立ち上げられた際に、その内容にかかわらず行われる処理である。以下に示す図6~図9の説明においては、この要求処理スレッド150の識別情報の登録処理についての図示を省略するが、ステップS11およびS12の処理が同様に実行されているものとする。
≪データ更新処理≫
次に、木構造データ処理システム1000が実行するデータ更新処理について説明する。
図6は、本実施形態に係る木構造データ処理システム1000によるデータ更新処理を説明する図である。木構造データ処理システム1000では、データの更新要求(更新書き込み(木構造の再構成))の処理を、まず、ナイーブツリーデータテーブル310において実行し、その後、入れ子集合データテーブル320との間で同期処理を実行する。
次に、木構造データ処理システム1000が実行するデータ更新処理について説明する。
図6は、本実施形態に係る木構造データ処理システム1000によるデータ更新処理を説明する図である。木構造データ処理システム1000では、データの更新要求(更新書き込み(木構造の再構成))の処理を、まず、ナイーブツリーデータテーブル310において実行し、その後、入れ子集合データテーブル320との間で同期処理を実行する。
まず、木構造データ処理装置10の要求受付部111は、サービスサーバ50からクエリとして(抽象的な)更新要求を受け付ける(ステップS20)。そして、要求受付部111は、その受け付けたクエリ(更新要求)を、処理スレッド設定部112に出力する。
続いて、木構造データ処理装置10の処理スレッド設定部112は、クエリを取得すると要求処理スレッド150を立ち上げ、その要求処理スレッド150の識別情報(識別士)を同期装置20に送信することにより登録させる(図示省略)。
次に木構造データ処理装置10の処理スレッド設定部112は、取得したクエリの内容が読み出し要求であるのか、更新要求であるのか等の要求内容を判定する。そして、処理スレッド設定部112は、そのクエリが更新要求であると判定した場合に、立ち上げた要求処理スレッド150のトランザクションにおいて、(抽象的な)更新要求をナイーブツリー用のSQLに変換し、同期装置20に更新要求(update要求)を送信する(ステップS21)。
同期装置20のデータ更新指示部212は、木構造データ処理装置10から更新要求(update要求)を受信すると、DBサーバ30(図1)に対して更新指示(update更新)を送信することにより、データを更新させる(ステップS22)。
同期装置20のデータ更新指示部212は、木構造データ処理装置10から更新要求(update要求)を受信すると、DBサーバ30(図1)に対して更新指示(update更新)を送信することにより、データを更新させる(ステップS22)。
次に、同期装置20の同期待ち指示部213は、DBサーバ30(図1)からナイーブツリーデータテーブル310の更新完了(update完了)の情報を受信する(ステップS23)。そして、同期待ち指示部213は、この更新完了の受信を契機として、記憶部23に登録しておいた各要求処理スレッド150の識別情報(識別子)を参照し、その各要求処理スレッド150に対する同期待ち指示情報を生成して、木構造データ処理装置10に送信する(ステップS24)。
木構造データ処理装置10の同期状態管理部113は、各要求処理スレッド150に対する同期待ち指示情報を受信すると、すべての要求処理スレッド150の状態を「通常」(同期待ちしていない状態)から「同期待ち」に切り替える(ステップS25)。
次に、同期装置20の同期処理部214は、バックグラウンドでナイーブツリーデータテーブル310を読み込み、入れ子集合データテーブル320の情報に変換し同期(sync)させる(ステップS26)。
このように、木構造データ処理システム1000では、サービスサーバ50からデータの更新要求を受信した場合には、まずナイーブツリーデータテーブル310を更新し、その後、バックグラウンドで入れ子集合データテーブル320を同期させることができる。よって、木構造を再構成するデータの更新書き込み(木構造の再構成)について、入れ子集合よりも処理負荷の少ない、ナイーブツリーデータテーブル310を優先して処理させることができる。
≪データ同期中の読み出し処理≫
次に、入れ子集合データテーブル320が同期処理中(「同期待ち」切替時)において行われる、読み出し要求の処理について説明する。
図7は、本実施形態に係る木構造データ処理システム1000による「同期待ち」切替時の読み出し要求の処理を説明する図である。図7においては、図6のステップS25において、各要求処理スレッド150の状態が「通常時」から「同期待ち」に切り替わっている状態、つまり、同期装置20による入れ子集合データテーブル320への同期処理が実行中であるとする。
この場合において、木構造データ処理システム1000では、読み出し要求に対する処理を、入れ子集合データテーブル320に代えて、ナイーブツリーデータテーブル310を参照して行う。
次に、入れ子集合データテーブル320が同期処理中(「同期待ち」切替時)において行われる、読み出し要求の処理について説明する。
図7は、本実施形態に係る木構造データ処理システム1000による「同期待ち」切替時の読み出し要求の処理を説明する図である。図7においては、図6のステップS25において、各要求処理スレッド150の状態が「通常時」から「同期待ち」に切り替わっている状態、つまり、同期装置20による入れ子集合データテーブル320への同期処理が実行中であるとする。
この場合において、木構造データ処理システム1000では、読み出し要求に対する処理を、入れ子集合データテーブル320に代えて、ナイーブツリーデータテーブル310を参照して行う。
まず、木構造データ処理装置10の要求受付部111は、サービスサーバ50からクエリとして(抽象的な)読み出し要求を受け付ける(ステップS30)。そして、要求受付部111は、その受け付けたクエリ(読み出し要求)を、処理スレッド設定部112に出力する。
続いて、木構造データ処理装置10の処理スレッド設定部112は、クエリを取得すると要求処理スレッド150を立ち上げ、その要求処理スレッド150の識別情報(識別士)を同期装置20に送信することにより登録させる(図示省略)。
次に木構造データ処理装置10の処理スレッド設定部112は、取得したクエリの内容が読み出し要求であるのか、更新要求であるのか等の要求内容を判定する。そして、処理スレッド設定部112は、そのクエリが読み出し要求であると判定した場合であり、各要求処理スレッド150が「同期待ち」の状態であるときには、立ち上げた要求処理スレッド150のトランザクションにおいて、(抽象的な)読み出し要求をナイーブツリー用の再帰SQLに変換し、ナイーブツリーデータテーブル310に読み出し要求(read要求)を送信する(ステップS31)。そして、DBサーバ30(図1)から、応答(read結果)を受信し(ステップS32)、木構造データ処理装置10の要求応答部114が、その応答(read結果)をサービスサーバ50に送信する。
このように、木構造データ処理システム1000では、入れ子集合データテーブル320の同期待ち時においては、入れ子集合データテーブル320の代わりに、ナイーブツリーデータテーブル310を参照して、読み出し結果を得ることができる。よって、更新ロックによるサービス応答不可時間を低減することができる。
≪データ同期完了時の処理≫
次に、入れ子集合データテーブル320の同期完了時の処理について説明する。
図8は、本実施形態に係る木構造データ処理システム1000による同期完了時の処理を説明する図である。
次に、入れ子集合データテーブル320の同期完了時の処理について説明する。
図8は、本実施形態に係る木構造データ処理システム1000による同期完了時の処理を説明する図である。
同期装置20は、入れ子集合データテーブル320の同期処理が完了すると、DBサーバ30(図1)から同期完了の結果情報を受信する(ステップS40)。
そして、同期装置20の同期完了通知部215は、この同期完了の結果情報を受信すると、記憶部23に登録しておいた各要求処理スレッド150の識別情報(識別子)を参照し、その各要求処理スレッド150に対する同期待ちの解消を示す同期完了通知を生成して、木構造データ処理装置10に送信する(ステップS41)。
そして、同期装置20の同期完了通知部215は、この同期完了の結果情報を受信すると、記憶部23に登録しておいた各要求処理スレッド150の識別情報(識別子)を参照し、その各要求処理スレッド150に対する同期待ちの解消を示す同期完了通知を生成して、木構造データ処理装置10に送信する(ステップS41)。
木構造データ処理装置10の同期状態管理部113は、各要求処理スレッド150に対して同期完了通知を受信すると、すべての要求処理スレッド150の状態を「同期待ち」から「通常」に切り替えることにより、「同期待ち」状態を解消する(ステップS42)。
このように、木構造データ処理システム1000では、入れ子集合データテーブル320の同期処理が完了した場合には、各要求処理スレッド150の状態を「同期待ち」から「通常」に切り替えることができる。
≪データ同期中のデータ更新処理≫
次に、木構造データ処理システム1000がデータ同期中の場合において、同じデータテーブルに対しさらにデータの更新要求(更新書き込み(木構造の再構成))を受け付けたときの処理を説明する。
図9は、本実施形態に係る木構造データ処理システム1000による、データ同期中におけるデータ更新処理を説明する図である。木構造データ処理システム1000では、同期装置20により入れ子集合データテーブル320が同期処理中の場合において、さらに、更新要求を受け付けた場合には、同期装置20が直前の同期処理をキャンセルし、更新された最新のデータで改めて同期処理を行う。
次に、木構造データ処理システム1000がデータ同期中の場合において、同じデータテーブルに対しさらにデータの更新要求(更新書き込み(木構造の再構成))を受け付けたときの処理を説明する。
図9は、本実施形態に係る木構造データ処理システム1000による、データ同期中におけるデータ更新処理を説明する図である。木構造データ処理システム1000では、同期装置20により入れ子集合データテーブル320が同期処理中の場合において、さらに、更新要求を受け付けた場合には、同期装置20が直前の同期処理をキャンセルし、更新された最新のデータで改めて同期処理を行う。
まず、木構造データ処理装置10の要求受付部111は、サービスサーバ50からクエリとして(抽象的な)更新要求を受け付ける(ステップS50)。そして、要求受付部111は、その受け付けたクエリ(更新要求)を、処理スレッド設定部112に出力する。
続いて、木構造データ処理装置10の処理スレッド設定部112は、クエリを取得すると要求処理スレッド150を立ち上げ、その要求処理スレッド150の識別情報(識別士)を同期装置20に送信することにより登録させる(図示省略)。
次に木構造データ処理装置10の処理スレッド設定部112は、取得したクエリの内容が読み出し要求であるのか、更新要求であるのか等の要求内容を判定する。そして、処理スレッド設定部112は、そのクエリが更新要求であると判定した場合に、立ち上げた要求処理スレッド150のトランザクションにおいて、(抽象的な)更新要求をナイーブツリー用のSQLに変換し、同期装置20に更新要求(update要求)を送信する(ステップS51)。
同期装置20のデータ更新指示部212は、木構造データ処理装置10から更新要求(update要求)を受信すると、DBサーバ30(図1)に対して更新指示(update更新)を送信することにより(ステップS52)、データを更新させる。
同期装置20のデータ更新指示部212は、木構造データ処理装置10から更新要求(update要求)を受信すると、DBサーバ30(図1)に対して更新指示(update更新)を送信することにより(ステップS52)、データを更新させる。
次に、同期装置20の同期待ち指示部213は、DBサーバ30(図1)からナイーブツリーデータテーブル310の更新完了(update完了)の情報を受信する(ステップS53)。
続いて、同期装置20の同期処理部214は、現時点で実行している(直前の)同期処理をキャンセルする(ステップS54)。そして、同期処理部214は、改めて最新のナイーブツリーデータテーブル310を読み込み、入れ子集合データテーブル320の情報に変換し同期(sync)させる(ステップS55)。
このように木構造データ処理システム1000では、データ同期中の場合において、同じデータテーブルに対しさらにデータの更新要求(更新書き込み(木構造の再構成))を受け付けたときに、直前の同期処理をキャンセルした上で、最新のナイーブツリーデータテーブル310のデータに基づき、入れ子集合データテーブル320を同期させることが可能となる。
≪トランザクション中の同期待ち処理≫
次に、木構造データ処理システム1000の木構造データ処理装置10が立ち上げた、ある要求処理スレッド150のトランザクション中に、別の要求処理スレッド150のトランザクションに起因する同期待ち切り替え処理が実行された場合について説明する。この場合は、DBサーバ30(図1)において予め設定されるトランザクションの分離レベルの高低により処理が異なるものとなる。ここでは、例えば、要求処理スレッド150のトランザクションにおいて、図5に示すような、入れ子集合データテーブル320からの読み出し処理が行われているときに、他のトランザクションの処理により、同期待ち切り替え処理を実行する場合として説明する。
なお、高いトランザクション分離レベルがDBサーバ30において設定されている場合には、そのトランザクション開始時にそのデータテーブル(入れ子集合データテーブル320)のスナップショットからデータを繰り返し読み込むため、同期待ち切り替え処理は、そのトランザクションには反映されないものとなる。一方、低いトランザクション分離レベルがDBサーバ30において設定されている場合には、トランザクションの処理中でも同期待ち切り替え処理が直ちに反映される。
次に、木構造データ処理システム1000の木構造データ処理装置10が立ち上げた、ある要求処理スレッド150のトランザクション中に、別の要求処理スレッド150のトランザクションに起因する同期待ち切り替え処理が実行された場合について説明する。この場合は、DBサーバ30(図1)において予め設定されるトランザクションの分離レベルの高低により処理が異なるものとなる。ここでは、例えば、要求処理スレッド150のトランザクションにおいて、図5に示すような、入れ子集合データテーブル320からの読み出し処理が行われているときに、他のトランザクションの処理により、同期待ち切り替え処理を実行する場合として説明する。
なお、高いトランザクション分離レベルがDBサーバ30において設定されている場合には、そのトランザクション開始時にそのデータテーブル(入れ子集合データテーブル320)のスナップショットからデータを繰り返し読み込むため、同期待ち切り替え処理は、そのトランザクションには反映されないものとなる。一方、低いトランザクション分離レベルがDBサーバ30において設定されている場合には、トランザクションの処理中でも同期待ち切り替え処理が直ちに反映される。
具体的には、処理中の要求処理スレッド150でトランザクションが既に開始されている場合において、DBサーバ30に高いトランザクション分離レベルが設定されているときには、トランザクション開始時のスナップショットからデータを継続的に読み込む(REPEATABLE_READ)。そのため、木構造データ処理装置10が同期待ち切り替え処理を実行した場合においても、入れ子集合データテーブル320からの読み出し処理を続け、ナイーブツリーデータテーブル310からの読み出し処理に切り替えない。よって、高いトランザクション分離レベルでは、トランザクション中のデータ整合性が保証される。その代わり、現時点でのデータの変更が反映されないため、結果的にトランザクションの処理失敗が起こりやすいものとなる。
これに対し、処理中の要求処理スレッド150でトランザクションが既に開始されている場合において、DBサーバ30に低いトランザクション分離レベルが設定されているときには、トランザクション中であっても、データに反映された変更を直ちに読み込む必要がある。そのため、木構造データ処理装置10が同期待ち切り替え処理を実行した場合には、入れ子集合データテーブル320からの読み出しを中止し、更新されたナイーブツリーデータテーブル310からデータを読み出すように直ちに切り替わる。よって、低いトランザクション分離レベルでは、トランザクションのデータの整合性は保証されない。その代わりに、現時点でのデータの変更が反映されるため、結果的にトランザクションの処理が成功しやすいものとなる。
なお、処理中の要求処理スレッド150でトランザクションがまだ開始されていない場合には、トランザクション分離レベルに関係なく、ナイーブツリーデータテーブル310から読み出し処理を行うようにする。
また、木構造データ処理システム1000の木構造データ処理装置10が立ち上げたある要求処理スレッド150のトランザクション中に、別の要求処理スレッド150のトランザクションに起因して同期待ち処理が解消された場合においては、図7に示すように、読み出し要求に対する処理を、ナイーブツリーデータテーブル310を参照して行っていたものを、トランザクションの分離レベルに関係なく、入れ子集合データテーブル320から読み出すように切り替える。これは、ナイーブツリーデータテーブル310と入れ子集合データテーブル320の同期が完了しているためデータの整合性が保証されており、より処理負荷の少ない入れ子集合データテーブル320を利用する方が有利なためである。
以上、説明したように、本実施形態に係る木構造データ処理システム1000、木構造データ処理方法、木構造データ処理装置10および木構造データ処理プログラムによれば、リレーショナルデータベースにおける木構造の再構成時において、更新ロックによるサービス応答不可時間を低減するとともに、データ検索読み出し性能を低下させずに保持することができる。
10 木構造データ処理装置
11,21,31 制御部
12,22,32 入出力部
13,23,33 記憶部
20 同期装置
30 DBサーバ
50 サービスサーバ
111 要求受付部
112 処理スレッド設定部
113 同期状態管理部
114 要求応答部
150 要求処理スレッド
211 スレッド登録部
212 データ更新指示部
213 同期待ち指示部
214 同期処理部
215 同期完了通知部
310 ナイーブツリーデータテーブル
320 入れ子集合データテーブル
1000 木構造データ処理システム
11,21,31 制御部
12,22,32 入出力部
13,23,33 記憶部
20 同期装置
30 DBサーバ
50 サービスサーバ
111 要求受付部
112 処理スレッド設定部
113 同期状態管理部
114 要求応答部
150 要求処理スレッド
211 スレッド登録部
212 データ更新指示部
213 同期待ち指示部
214 同期処理部
215 同期完了通知部
310 ナイーブツリーデータテーブル
320 入れ子集合データテーブル
1000 木構造データ処理システム
Claims (4)
- リレーショナルデータベースにおける木構造データをデータテーブルに格納するDBサーバと、前記木構造データの更新および検索処理を制御する木構造データ処理装置と、前記DBサーバに格納されたデータテーブル同士を同期させる同期装置と、を備える木構造データ処理システムであって、
前記DBサーバは、1つのサービスについてのデータテーブルとして、前記木構造データをナイーブツリー方式でモデル化したデータテーブルを示すナイーブツリーデータテーブルと、前記木構造データを入れ子集合方式でモデル化したデータテーブルを示す入れ子集合データテーブルとを、対応付けて格納する記憶部を備え、
前記木構造データ処理装置は、
前記木構造データの更新要求および検索要求を受け付ける要求受付部と、
前記検索要求を受け付けた場合に、前記入れ子集合データテーブルを参照して検索処理する要求処理スレッドを立ち上げて実行するともに、前記更新要求を受け付けた場合に、前記ナイーブツリーデータテーブルのデータ更新をする要求処理スレッドを立ち上げて実行する処理スレッド設定部と、
前記ナイーブツリーデータテーブルと前記入れ子集合データテーブルとの間の同期処理の開始を示す同期待ち指示情報を受信した場合に、各前記要求処理スレッドの状態を同期待ちに切り替える同期状態管理部と、を備え、
前記同期装置は、
前記DBサーバから、前記ナイーブツリーデータテーブルの更新完了の情報を受信した場合に、前記同期待ち指示情報を前記木構造データ処理装置に送信する同期待ち指示部と、
前記更新要求により更新された前記ナイーブツリーデータテーブルのデータを、前記入れ子集合データテーブルのデータに変換して同期させる同期処理部と、を備え、
前記木構造データ処理装置は、
各前記要求処理スレッドの状態が同期待ちである場合において、前記要求受付部が前記木構造データの検索要求を受け付けたときに、前記処理スレッド設定部が、前記入れ子集合データテーブルに代えて、前記ナイーブツリーデータテーブルを参照して検索処理を実行すること
を特徴とする木構造データ処理システム。 - リレーショナルデータベースにおける木構造データをデータテーブルに格納するDBサーバと、前記木構造データの更新および検索処理を制御する木構造データ処理装置と、前記DBサーバに格納されたデータテーブル同士を同期させる同期装置と、を備える木構造データ処理システムの木構造データ処理方法であって、
前記DBサーバは、1つのサービスについてのデータテーブルとして、前記木構造データをナイーブツリー方式でモデル化したデータテーブルを示すナイーブツリーデータテーブルと、前記木構造データを入れ子集合方式でモデル化したデータテーブルを示す入れ子集合データテーブルとを、対応付けて格納しており、
前記木構造データ処理装置は、
前記木構造データの更新要求および検索要求を受け付けるステップと、
前記検索要求を受け付けた場合に、前記入れ子集合データテーブルを参照して検索処理する要求処理スレッドを立ち上げて実行するともに、前記更新要求を受け付けた場合に、前記ナイーブツリーデータテーブルのデータ更新をする要求処理スレッドを立ち上げて実行するステップと、
前記ナイーブツリーデータテーブルと前記入れ子集合データテーブルとの間の同期処理の開始を示す同期待ち指示情報を受信した場合に、各前記要求処理スレッドの状態を同期待ちに切り替えるステップと、を実行し、
前記同期装置は、
前記DBサーバから、前記ナイーブツリーデータテーブルの更新完了の情報を受信した場合に、前記同期待ち指示情報を前記木構造データ処理装置に送信するステップと、
前記更新要求により更新された前記ナイーブツリーデータテーブルのデータを、前記入れ子集合データテーブルのデータに変換して同期させるステップと、を実行し、
前記木構造データ処理装置は、
各前記要求処理スレッドの状態が同期待ちである場合において、前記木構造データの検索要求を受け付けたときに、前記入れ子集合データテーブルに代えて、前記ナイーブツリーデータテーブルを参照して検索処理を行うステップを実行すること
を特徴とする木構造データ処理方法。 - リレーショナルデータベースにおける木構造データをデータテーブルに格納するDBサーバと、前記DBサーバに格納されたデータテーブル同士を同期させる同期装置と、に通信接続され、前記木構造データの更新および検索処理を制御する木構造データ処理装置であって、
前記DBサーバは、1つのサービスについてのデータテーブルとして、前記木構造データをナイーブツリー方式でモデル化したデータテーブルを示すナイーブツリーデータテーブルと、前記木構造データを入れ子集合方式でモデル化したデータテーブルを示す入れ子集合データテーブルとを、対応付けて格納しており、
前記木構造データ処理装置は、
前記木構造データの更新要求および検索要求を受け付ける要求受付部と、
前記検索要求を受け付けた場合に、前記入れ子集合データテーブルを参照して検索処理する要求処理スレッドを立ち上げて実行するともに、前記更新要求を受け付けた場合に、前記ナイーブツリーデータテーブルのデータ更新をする要求処理スレッドを立ち上げて実行する処理スレッド設定部と、
前記ナイーブツリーデータテーブルと前記入れ子集合データテーブルとの間の同期処理の開始を示す同期待ち指示情報を前記同期装置から受信した場合に、各前記要求処理スレッドの状態を同期待ちに切り替える同期状態管理部と、を備え、
前記木構造データ処理装置は、
各前記要求処理スレッドの状態が同期待ちである場合において、前記要求受付部が前記木構造データの検索要求を受け付けたときに、前記処理スレッド設定部が、前記入れ子集合データテーブルに代えて、前記ナイーブツリーデータテーブルを参照して検索処理を実行すること
を特徴とする木構造データ処理装置。 - コンピュータを、請求項3に記載の木構造データ処理装置として機能させるための木構造データ処理プログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/441,026 US11741097B2 (en) | 2019-04-15 | 2020-04-03 | Tree structure data processing system, tree structure data processing method, tree structure data processing device, and tree structure data processing program |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2019076747A JP7172820B2 (ja) | 2019-04-15 | 2019-04-15 | 木構造データ処理システム、木構造データ処理方法、木構造データ処理装置および木構造データ処理プログラム |
| JP2019-076747 | 2019-04-15 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020213428A1 true WO2020213428A1 (ja) | 2020-10-22 |
Family
ID=72831662
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2020/015276 Ceased WO2020213428A1 (ja) | 2019-04-15 | 2020-04-03 | 木構造データ処理システム、木構造データ処理方法、木構造データ処理装置および木構造データ処理プログラム |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US11741097B2 (ja) |
| JP (1) | JP7172820B2 (ja) |
| WO (1) | WO2020213428A1 (ja) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090177688A1 (en) * | 2008-01-08 | 2009-07-09 | Evolutions Software As | Employee Tracking System |
| JP2012226499A (ja) * | 2011-04-18 | 2012-11-15 | Toshiba Corp | データベース装置およびデータベース再編成方法 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007094733A (ja) | 2005-09-28 | 2007-04-12 | Hitachi Ltd | 情報処理装置、スキーマ作成方法、及びプログラム |
| US7580918B2 (en) * | 2006-03-03 | 2009-08-25 | Adobe Systems Incorporated | System and method of efficiently representing and searching directed acyclic graph structures in databases |
| US11573947B2 (en) * | 2017-05-08 | 2023-02-07 | Sap Se | Adaptive query routing in a replicated database environment |
| US20190377801A1 (en) * | 2018-06-11 | 2019-12-12 | Deloitte Development Llc | Relational data model for hierarchical databases |
| GB201812375D0 (en) * | 2018-07-30 | 2018-09-12 | Ibm | Updating a table using incremental and batch updates |
| US11481370B1 (en) * | 2018-10-30 | 2022-10-25 | R&D Industries, Inc. | Devices, systems, and methods for optimization of data sets |
-
2019
- 2019-04-15 JP JP2019076747A patent/JP7172820B2/ja active Active
-
2020
- 2020-04-03 US US17/441,026 patent/US11741097B2/en active Active
- 2020-04-03 WO PCT/JP2020/015276 patent/WO2020213428A1/ja not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090177688A1 (en) * | 2008-01-08 | 2009-07-09 | Evolutions Software As | Employee Tracking System |
| JP2012226499A (ja) * | 2011-04-18 | 2012-11-15 | Toshiba Corp | データベース装置およびデータベース再編成方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2020173741A (ja) | 2020-10-22 |
| JP7172820B2 (ja) | 2022-11-16 |
| US20220156258A1 (en) | 2022-05-19 |
| US11741097B2 (en) | 2023-08-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102853079B1 (ko) | 데이터베이스 트랜잭션 프로세싱 방법 및 장치, 서버 및 저장 매체 | |
| CN112789606B (zh) | 数据重分布方法、装置及系统 | |
| US8713046B2 (en) | Snapshot isolation support for distributed query processing in a shared disk database cluster | |
| US9515878B2 (en) | Method, medium, and system for configuring a new node in a distributed memory network | |
| EP3564835B1 (en) | Data redistribution method and apparatus, and database cluster | |
| US12229162B2 (en) | Asynchronous data replication in a multiple availability zone cloud platform | |
| US8121979B2 (en) | System and method for replication and synchronisation | |
| JP2014532919A (ja) | オンライントランザクション処理 | |
| WO2019103950A1 (en) | Multi-region, multi-master replication of database tables | |
| US8209440B2 (en) | Device-configuration-information optimum arrangement method and device-configuration-information optimum arrangement system | |
| CN118714191B (zh) | 一种多类型服务统一注册、发现和调用的方法 | |
| CN116383227B (zh) | 一种分布式缓存和数据存储一致性处理系统及方法 | |
| KR100936238B1 (ko) | 파일 입출력과 복제의 균형적 수행을 위한 지연복제 시스템및 방법 | |
| US12292899B2 (en) | Method for scheduling multi-node cluster of K-DB database, device, and medium thereof | |
| US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
| JP5480046B2 (ja) | 分散トランザクション処理システム、装置、方法およびプログラム | |
| CN111797062B (zh) | 数据处理方法、装置和分布式数据库系统 | |
| JP7172820B2 (ja) | 木構造データ処理システム、木構造データ処理方法、木構造データ処理装置および木構造データ処理プログラム | |
| JP4971717B2 (ja) | ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム | |
| JP2013161398A (ja) | データベースシステム、データベース管理方法、およびデータベース管理プログラム | |
| JP6404892B2 (ja) | データベースシステムおよびデータ処理方法 | |
| CN119166741B (zh) | 一种快速构建代码搜索索引的方法及装置 | |
| CN118331945B (zh) | 一种面向航天离散制造的实时非实时数据迁移方法及装置 | |
| CN120872640B (zh) | 一种分布式系统的请求处理方法及电子设备 | |
| CN114218326A (zh) | 一种分布式数据库提升数据路由效率的方法 |
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: 20791000 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 20791000 Country of ref document: EP Kind code of ref document: A1 |