Patent ID: 8862628

Claim:
A method for storing a hierarchy in a database being part of a relational database management system, the hierarchy having a root element and being structured into branches with succeeding elements, the method being carried out by a first process responsible for maintaining an order of the hierarchy and a second process storing data of the branches in the database, the second process receiving commands from the first process, which comprises the steps of: i) structuring the second process in steps defining queues, where a queue is created via a command from the first process except a first queue which is previously created with a status RUNNING whereas other ones of the queues are created with a status WAIT; ii) each of the queues communicating with the database independently from another one of the queues; iii) inserting data defining the root element in the first queue and storing the data defining the root element in the database; iv) inserting the succeeding elements of the hierarchy in the other queues, where in each of the queues an unlock item is held indicating if a superior element already has been stored in the database, if not, the queue is held in the status WAIT until the unlock item contains an identifier of the superior element, the unlock item in combination with the status WAIT and the status RUNNING maintaining a proper timing allowing the queues to operate in a parallel manner allowing a parallel loading of the database in a properly maintained hierarchial order; v) performing a threading of the queues via the second process by: copying a first element; storing the first element in the database; and changing the status of the queue to RUNNING if the queue has the unlock item indicating that the superior element was just stored; and vi) restarting the steps iv) and v) in a case where a dead lock for storing elements occurs because of a failure of storing an element where the failure is caused by the superior element not being saved yet and the status of the queue experiencing the failure is RUNNING.