WO2013098918A1 - データベースシステム及びデータベース管理方法 - Google Patents

データベースシステム及びデータベース管理方法 Download PDF

Info

Publication number
WO2013098918A1
WO2013098918A1 PCT/JP2011/080077 JP2011080077W WO2013098918A1 WO 2013098918 A1 WO2013098918 A1 WO 2013098918A1 JP 2011080077 W JP2011080077 W JP 2011080077W WO 2013098918 A1 WO2013098918 A1 WO 2013098918A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
search
entry
index
program information
Prior art date
Application number
PCT/JP2011/080077
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 US14/369,029 priority Critical patent/US9703829B2/en
Priority to PCT/JP2011/080077 priority patent/WO2013098918A1/ja
Priority to JP2013551059A priority patent/JP5731015B2/ja
Publication of WO2013098918A1 publication Critical patent/WO2013098918A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Definitions

  • the present invention relates to a database system and a database management method for managing a table and an index for retrieving a table row (record).
  • Some databases manage indexes for table records so that the table records stored in the database can be searched at high speed.
  • the index is also updated.
  • logical destruction In the database system, if a write error occurs when updating an index, the index data may be corrupted, making it impossible to perform a table record search using the index.
  • a state in which the index data is broken is referred to as “logical destruction”.
  • Patent Document 1 a technique for repairing a database without stopping the provision of the database service is known (for example, see Patent Document 1).
  • the present invention has been made in view of the above problems, and an object of the present invention is to provide a technique capable of executing a search appropriately and quickly even when a logical breakdown occurs in an index.
  • the database system has an interface to the storage device and a control device that accesses the storage device through the interface.
  • the storage device stores a table that manages a plurality of rows having values of a plurality of items, and an index configured by a tree structure of a plurality of nodes for enabling the specification of rows by the values of one or more items.
  • the control device identifies the item value condition included in the search condition of the search query, determines whether or not the index node corresponding to the item value condition is not referable, and if the node is not referable A range of item values managed by the disabled node is specified, and a row satisfying the search condition is searched for the specified range.
  • the database system may include the storage device described above.
  • FIG. 1 is a diagram illustrating an example of a processing outline of the database system according to the embodiment.
  • FIG. 2 is a configuration diagram of an example of a computer system including the database system according to the embodiment.
  • FIG. 3 is a diagram illustrating an example of a search query according to the embodiment.
  • FIG. 4 is a diagram illustrating an example of a configuration of a table according to the embodiment.
  • FIG. 5 is a diagram illustrating an example of an index configuration according to the embodiment.
  • FIG. 6 is a diagram illustrating an example of a configuration of an index node according to the embodiment.
  • FIG. 7 is a diagram illustrating an example of the index stage number management table according to the embodiment.
  • FIG. 8 is a diagram illustrating an example of an index management table according to the embodiment.
  • FIG. 1 is a diagram illustrating an example of a processing outline of the database system according to the embodiment.
  • FIG. 2 is a configuration diagram of an example of a computer system including the database system according to the embodiment.
  • FIG. 9A is a diagram illustrating an example of a configuration of search program information according to the embodiment.
  • FIG. 9B is a diagram illustrating a first example of search program information according to the embodiment.
  • FIG. 9C is a diagram illustrating a second example of search program information according to the embodiment.
  • FIG. 9D is a diagram illustrating a third example of search program information according to the embodiment.
  • FIG. 9E is a diagram illustrating a fourth example of search program information according to the embodiment.
  • FIG. 9F is a diagram illustrating an example of a search program information management queue according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of the configuration of the unreferenceable node management information according to the embodiment.
  • FIG. 11 is a flowchart of an example of the index search process according to the embodiment.
  • FIG. 12 is a flowchart of an example of a node reference detection process according to the embodiment.
  • FIG. 13 is a flowchart of an example of entry reference detection processing according to the embodiment.
  • FIG. 14 is a flowchart of an example of the unreferenceable part specifying process according to the embodiment.
  • FIG. 15 is a flowchart of an example of an alternative search program selection process according to the embodiment.
  • FIG. 16A is a diagram illustrating a first specific example of search program information according to the embodiment.
  • FIG. 16B is a diagram illustrating a second specific example of search program information according to the embodiment.
  • FIG. 16C is a diagram illustrating a third specific example of search program information according to the embodiment.
  • aaa table various types of information may be described using the expression “aaa 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 “aaa table” can be called “aaa information”.
  • processing may be described using “program” or a program module as the subject, but the program or program module is controlled by a control device (for example, a processor (for example, a CPU (Central Processing Unit)).
  • a control device for example, a processor (for example, a CPU (Central Processing Unit)
  • the subject of the processing may be a control device in order to perform a predetermined processing using a storage resource (for example, a memory) and / or a communication interface device (for example, an interface) as appropriate.
  • the process described with the program or program module as the subject may be a process performed by the control device or an apparatus or system (for example, a server apparatus) having the control device.
  • the control device may include a hardware circuit that performs part or all of the processing.
  • the program may be installed from a program source.
  • the program source may be, for example, a program distribution server or a storage medium.
  • FIG. 1 is a diagram for explaining an example of processing outline of the database system according to the embodiment.
  • the index search unit 2120 searches for search program information registered in the root node of the index corresponding to the search query 3010 and the search program management queue 8100.
  • a search is executed for the node indicated by 8110.
  • the node reference detection unit 2113 detects the reference failure in the node 9100
  • the entry reference detection unit 2114 detects the reference failure in the entry 9104 of the node 9100.
  • the reference impossible part specifying unit 2115 specifies the search range by the node that cannot be referred to according to the type of node (root node, intermediate node, leaf node), and reference impossible node management information 11000 is generated.
  • the alternative search program selection unit 2116 selects search program information for searching a search range based on nodes that cannot be referenced based on the node management information 11000 that cannot be referenced. As a result, the index search unit 2120 appropriately searches the search range of the unreferenceable nodes, and obtains a search result.
  • FIG. 2 is a configuration diagram of a computer system including a database system according to an embodiment of the present invention.
  • the computer system includes a terminal device 2150, a server device 2100, and an external storage device 1001.
  • the terminal device 2150 and the server device 2100 are connected via a network 2160.
  • the external storage device 1001 is connected to the internal bus 2104 of the server device 2100.
  • a database system is configured by the server device 2100 and the external storage device 1001.
  • the terminal device 2150 executes an application that uses a database system, for example, and issues a search request (search query) to the table 6100 in the database to the server device 2100.
  • FIG. 3 is a diagram illustrating an example of a search query according to the embodiment.
  • the search query 3010 includes, for example, a table specification description 3011 for specifying a table to be searched (6100, etc.) and a search condition description 3012 for specifying a search condition.
  • the search query 3010 shown in FIG. 3 is an example of a search query using SQL, and searches the table “T1” that the value of the key “C1” is between “50” and “200”. It is required to select a row that satisfies the condition.
  • the external storage device 1001 stores a table 6100, an index management table 7100, an index stage number management table 10000, and indexes 4100, 7112, and 7113.
  • a plurality of tables may be provided.
  • FIG. 4 is a diagram illustrating an example of a configuration of a table according to the embodiment.
  • Table 6100 stores a plurality of rows (records) having row ID 6101 and row content 6102.
  • the row ID 6101 stores an ID that uniquely identifies a row in the table 6100.
  • the line content 6102 includes a plurality of items (6102, 6103, 6104,). Each item stores a value corresponding to the item.
  • the table 6100 whose table name is “T1” shown in FIG. 4 has items such as C1, C2, C3,. C1, C2, and C3 can be used as search keys, for example, alone or in combination.
  • FIG. 5 is a diagram illustrating an example of an index configuration according to the embodiment.
  • FIG. 6 is a diagram illustrating an example of a configuration of an index node according to the embodiment.
  • the index (4100, etc.) is configured in a tree structure by a plurality of nodes (pages) 9100. Therefore, in the index (such as 4100), each node 9100 is divided into a root node that is the highest node, a leaf node that is the lowest node, and an intermediate node between the root node and the leaf node. .
  • the index node has three levels and the intermediate node has one level. However, the number of node levels may be more than three, and in that case, two or more levels may be used. An intermediate node exists in the stage.
  • the node 9100 includes header part consistency confirmation information 9101, previous page number 9102, subsequent page number 9103, entry 9104, index stage number 9105, own page number 9106, and footer part matching. Sex confirmation information 9107.
  • the header part consistency confirmation information 9101 stores a value that is uniquely determined when updating the page that is the node, such as time data.
  • the value stored in the header part consistency check information 9101 is the same as the value stored in the footer part consistency check information 9107 if the node is updated normally.
  • the previous page number 9102 stores the page number of the node (previous page) immediately before the corresponding node in the same hierarchy. If the corresponding node is the head in the hierarchy, a null value is stored.
  • the subsequent page number 9103 stores the page number of the node (following page) immediately after the corresponding node in the same hierarchy. If the corresponding node is the last in the hierarchy, a null value is stored.
  • the index is arranged in order from the node that manages the entry with the smaller key value, and the previous page manages the entry with the smaller key value than the page, and , An entry having a key value larger than that of the page is managed.
  • the entry 9104 When the node is a root node or an intermediate node, the entry 9104 includes a number indicating the entry (entry number (entry #)) and a node (lower node) in a hierarchy directly below the node. The page number and the maximum value of the key value managed by the corresponding lower node are stored in association with each other. Further, when the node is a leaf node, the entry 9104 stores an entry #, a key value, and an ID (row ID) of a row of the table 6100 having the corresponding key value in association with each other. One or more entries 9104 can be provided in the node 9100. In this embodiment, the entries 9104 are arranged in ascending order based on the maximum key value.
  • the index stage number 9105 stores the stage number of the hierarchy of the corresponding node in the index 4100.
  • the number of stages of leaf nodes is 1, and the number of stages of nodes in a higher hierarchy is 2, 3,.
  • the own page number 9106 stores the page number of the node.
  • the footer unit consistency confirmation information 9107 stores a value uniquely determined when the page as the node is updated, such as time data. If the node is updated normally, the value is the same as the value stored in the header part consistency confirmation information 9101.
  • a node 9100 illustrated in FIG. 6 indicates the last (right end) node of the second stage in the index illustrated in FIG. 5.
  • the previous page number 9102 indicates the page number of the previous page “# 8 ”is stored, and the back page number 9103 has no back page, so a null value is set.
  • the entry 9104 is the page number“ # 4 ”and the maximum key value of the node of the page number.
  • the entry # associated with “130” is the entry # associated with “0006”, the page number “# 3”, and “160”, which is the maximum key value of the node of the page number.
  • the entry # associated with the entry “0007”, the page number “# 9”, and “200” which is the maximum key value of the node of the page number is “0008”. There are a entry, the index number, stores '2', the relevant page numbers, "# 5" are stored.
  • FIG. 7 is a diagram showing an example of the index stage number management table according to the embodiment.
  • the index stage number management table 10000 is provided corresponding to each index.
  • the index stage number management table 10000 includes a stage number 10001 and a page number (#) 10002.
  • the number of stages 10001 stores the number of stages of each stage included in the corresponding index.
  • the number of leaf nodes is 1.
  • the page # 10002 stores the page number of the node (page) having the smallest managed key value at the corresponding stage node. According to the index stage number management table 10000, the head node in each stage can be specified.
  • the index stage number management table 10000 shown in the figure is an index stage number management table 10000 corresponding to the index “IDX1” having the configuration shown in FIG. 5.
  • the maximum number of key values managed by page # 1 is shown. The value is the smallest, the maximum value of the key value managed by page # 8 is the smallest in the second row, and the maximum value of the key value managed by page # 2 is the smallest in the first row. It is shown that.
  • FIG. 8 is a diagram showing an example of the index management table according to the embodiment.
  • the index management table 7100 manages a record having a table name 7101, an index name 7102, and a configuration column 7103.
  • the table name 7101 stores the name (table name) of the table 6100 targeted by the index.
  • the index name 7102 stores the name of the corresponding index (index name).
  • the configuration column 7103 stores a column (item) constituting the corresponding index, that is, the index target.
  • the configuration column 7103 may store a plurality of columns.
  • the top record of the index management table 7100 indicates that the index 4100 of “IDX1” in the table 6100 of “T1” is composed of the item “C1”.
  • the second record indicates that the index 7113 of “IDX3” in the table 6100 of “T1” is composed of items “C1” and “C3”.
  • the server apparatus 2100 includes an interface 2101, a CPU 2102, and a memory 2103.
  • the interface 2101, the CPU 2102, and the memory 2103 are connected via an internal bus 2104.
  • the interface 2101 controls communication with the terminal device 2150.
  • the CPU 2102 executes various processes by executing programs stored in the memory 2103.
  • the memory 2103 stores a program executed by the CPU 2102 and data used by the CPU 2102. Specifically, the memory 2103 stores a database management system (DBMS) 2110.
  • the database management system 2110 stores a query reception unit 2111 and an index detection unit 2112 as program modules.
  • the query reception unit 2111 receives the search query 3010 transmitted from the terminal device 2150.
  • the query receiving unit 2111 creates an execution procedure including a search condition for executing the search included in the received search query 3010.
  • the index search unit 2112 includes a node reference detection unit 2113, an entry reference detection unit 2114, an unreferenceable part specifying unit 2115, and an alternative search program selection unit 2116.
  • the node reference detection unit 2113 detects the exclusion in units of nodes for the index or the impossibility of reference due to logical destruction.
  • the entry reference detection unit 2114 detects an exclusion in units of entries in a node or an impossibility of reference due to logical destruction for an index.
  • the unreferenceable part specifying unit 2115 specifies a range of key values of parts that cannot be referred to due to logical destruction of indexes.
  • the alternative search program selection unit 2116 selects an alternative search program that executes a search for a key value range that cannot be referred to by an index.
  • the database management system 2110 stores a search program information management queue 8100 and a reference impossible node management information 11000 as data.
  • the search program information management queue 8100 stores search program information used at the time of search.
  • the unreferenceable node management information 11000 stores information related to unreferenceable nodes.
  • FIG. 9A is a diagram illustrating an example of a configuration of search program information according to the embodiment.
  • FIG. 9B is a diagram illustrating a first example of search program information according to the embodiment.
  • FIG. 9C is a diagram illustrating a second example of search program information according to the embodiment.
  • FIG. 9D is a diagram illustrating a third example of search program information according to the embodiment.
  • FIG. 9E is a diagram illustrating a fourth example of search program information according to the embodiment.
  • FIG. 9F is a diagram illustrating an example of a search program information management queue according to the embodiment.
  • the search program information 8110 includes a search program ID 8111, a first area 8112, and a second area 8113, as shown in FIG. 9A.
  • the search program ID 8111 stores the ID of the search program or the alternative search program.
  • the first area 8112 and the second area 8113 store various types of information as shown in FIGS. 9B to 9E according to the type of the search program information 8110.
  • the first area 8112 stores the number of the entry (original entry) for starting the search.
  • the second area 8113 stores the number of the parent entry that is the parent of the original entry.
  • the search program ID 8111 stores an ID indicating the alternative search program.
  • the first area 8112 stores the number of the entry (original entry) for starting the search.
  • the second area 8113 stores the number of the parent entry that is the parent of the original entry. When the parent entry cannot be referred to, the second area 8113 stores the number of the entry that refers to the parent entry. For example, in the case where the original entry is entry # 0018 shown in FIG. 5 and node # 5 cannot be referred to, entry # 0002 that refers to node # 5 that cannot be referred to is stored in second area 8113. Stored.
  • the search program information 8110 for performing an alternative search using an alternative index stores an ID indicating the alternative search program in the search program ID 8111.
  • the first area 8112 stores the root node number (#) of the alternative index used for the search.
  • the second area 8113 stores a flag (alternative index use flag) indicating that the alternative index is used.
  • the search program information 8110 for performing an alternative search using a table stores an ID indicating an alternative search program in the search program ID 8111.
  • the first area 8112 stores the head data page number (#) of the table.
  • the second area 8113 stores a flag (table scan flag) indicating that a table scan is performed.
  • the search program information management queue 8100 can store one or more search program information 8110 as shown in FIG. 9F.
  • the search program information 8110 stored in the search program information management queue 8100 is extracted and executed one by one by the index search unit 2120.
  • FIG. 10 is a diagram illustrating an example of the configuration of the unreferenceable node management information according to the embodiment.
  • the non-referenceable node management information 11000 stores a non-referenceable node search range 11001, a non-referenceable node node type 11002, and a previous entry number (#) 11003.
  • the unreferenceable node search range 11001 includes a key value minimum value 11001a and a key value maximum value 11001b.
  • the key value minimum value 11001a stores the minimum value of the key value that is a search range by a node that cannot be referred to (a node that cannot be referred to).
  • the key value maximum value 11001b stores the maximum value of the key value that is the search range by the unreferenceable node.
  • a null value is stored in the key value minimum value 11001a and the key value maximum value 11001b.
  • the unreferenceable node node type 11002 stores the node type of the non-referenceable node.
  • the node type is one of a root node, an intermediate node, and a leaf node.
  • the previous entry number (#) 11003 stores the number of the previous entry (previous entry) in the node (parent node) including the unreferenceable node as an entry.
  • the previous entry is an entry of the immediately preceding node having a key value smaller than the key value set as the range of the non-referenceable node. If there is no previous entry, a null value is stored.
  • the non-referenceable node management information 11000 has “100” in the key value minimum value 11001a as shown in FIG. “200” is stored in the key value maximum value 11001b, “intermediate node” is stored in the unreferenceable node node type 11002, and “# 0001” is stored in the previous entry # 11003.
  • FIG. 11 is a flowchart of the index search process according to the embodiment.
  • the index search process (step S100) is realized by the CPU 2102 executing the index search unit 2112.
  • the CPU 2102 receives a search request from the query reception unit 2111 (step S101), and determines whether or not it is the first search for the search request, that is, whether or not the result has been returned even once (step S102). ).
  • step S102 if it is the first search (Yes in step S102), the CPU 2102 advances the process to step S105. If it is not the first search (No in step S102), the CPU 2102 starts from the search program information management queue 8100. An attempt is made to acquire the search program information 8110 (step S103).
  • the CPU 2102 determines whether or not the search program information 8110 is exhausted in the search program information management queue 8100 (step S104). As a result, if the search program information is exhausted (Yes in step S104), it means that the search process corresponding to the search request has been completed, and thus the CPU 2102 ends the process while the search program information 8110 is finished. Is not depleted (No in step S104), the process proceeds to step S105.
  • step S105 the CPU 2102 moves to the root node in the case of the first search (Yes in step S102), and moves to the node specified in the search program information 8110 when the search program information 8110 is acquired. . If an alternative index use flag is set in the search program information 8110, the CPU 2102 uses the alternative index to perform a search, focusing on the key value of the search condition. For example, the CPU 2102 executes a search using the alternative index, with the key value range of the reference impossible node search range 11001 of the reference impossible node management information 11000 as the search range.
  • the CPU 2102 executes a node reference detection process for detecting a reference state with respect to the target node (step S200).
  • step S106 determines whether or not reference failure has been detected. If no reference failure has been detected (No in step S106), the CPU 2102 The first entry is stored as the current position (S115), and if there is another entry in the node (S116: Yes), the loop processing from step S107 to step S111 is executed while the entry satisfying the search condition exists. To do.
  • the CPU 2102 acquires one entry that satisfies the search condition in the target node (step S108), and executes entry reference detection processing for detecting the reference state for the entry (step S400).
  • the CPU 2102 determines a search ID, stores the search entry including the search ID, and stores the entry # of the acquired entry in the first area 8112.
  • the search program information 8110 having the original entry stored in the second area 8113 is created and registered in the search program information management queue 8100 (step S110), and the process proceeds to step S111.
  • step S106 when the reference failure is detected for the node (Yes in step S106) or the reference failure is detected for the entry (Yes in step S109), the CPU 2102 executes a reference impossible location specifying process (step S600), An alternative search program selection process is executed (step S700), and the process proceeds to step S102.
  • step S112 determines whether or not the target node is a leaf node (step S112) and is not a leaf node. In the case (No in step S112), the process proceeds to step S102 to continue another search process, while in the case of a leaf node (Yes in step S112), a row ID satisfying the search condition is acquired. (Step S113), and the process proceeds to step S102.
  • search program information 8110 for searching for leaf node # 4 shown in FIG. 5 (entry # 0002 includes entry # 0006 in first area 8112 and entry # 0002 in second area 8113).
  • the search condition is (50 ⁇ key (C1) ⁇ 200)
  • the first area 8112 includes entries # 0019 and # 0020 in step S110 shown in FIG.
  • Two pieces of search program information are created and registered in the search program information management queue 8100.
  • step S113 a row ID corresponding to the entry # 0018 is acquired, and the row ID is returned as a part of the search result.
  • FIG. 12 is a flowchart of node reference detection processing according to the embodiment.
  • the node reference detection process (step S200) is realized by the CPU 2102 executing the node reference detection unit 2113.
  • the CPU 2102 confirms whether or not the target node is exclusive (step S201), and further, the value of the header part consistency check information 9101 of the target node 9100 and the footer part match Depending on whether or not the value of the property confirmation information 9107 matches, it is confirmed whether or not logical consistency is achieved, in other words, whether or not logical destruction has occurred (step S202).
  • the CPU 2102 determines whether or not reference is not possible because the target node is exclusive or logically broken (step S203). As a result of the determination, when reference is impossible (Yes in step S203), reference impossible detection is set as a return code (step S204), and the process ends. On the other hand, when reference is not possible (No in step S203), The process is terminated as it is.
  • FIG. 13 is a flowchart of entry reference detection processing according to the embodiment.
  • the entry reference detection process (step S400) is realized by the CPU 2102 executing the entry reference detection unit 2114.
  • the CPU 2102 checks whether or not the target entry is exclusive (step S401), and whether or not the key value of the target entry is logically consistent. In other words, it is confirmed whether or not logic breakdown has occurred (step S402). In this embodiment, it is confirmed whether or not the key value of the target entry 9104 is larger than the key value of the previous entry in the node and smaller than the key value of the subsequent entry.
  • the CPU 2102 determines whether or not the target node is a leaf node (step S403). If it is not a leaf node (No in step S403), the consistency of the page number of the lower node of the entry is confirmed. (Step S404). Specifically, the CPU 2102 confirms whether or not the page number in the entry 9104 matches the page number of the own page number 9106 of the lower node 9100 connected to the entry 9104 with a pointer.
  • step S403 the consistency of the entry row ID is confirmed (step S405). Specifically, the CPU 2102 checks whether or not the row ID in the entry 9104 matches the row ID 6101 of the row of the table 6100 connected to the entry 9104 with a pointer.
  • the CPU 2102 determines whether or not the target entry cannot be referred to because exclusion or logical destruction has occurred (step S406). As a result of the determination, if reference is impossible (Yes in step 406), reference impossible detection is set as a return code (step S407), and the process ends. On the other hand, if reference is not possible (No in step S406), The process is terminated as it is.
  • FIG. 14 is a flowchart of the unreferenceable part specifying process according to the embodiment.
  • the non-referenceable part specifying process (step S600) is realized by the CPU 2102 executing the non-referenceable part specifying unit 2115.
  • the CPU 2102 obtains the node type of the target node based on the index stage number 9105 of the node 9100 and the index stage number management table 10000 and registers it in the unreferenceable node management information 11000 (step S601). ).
  • the CPU 2102 determines whether or not the original entry of the search program information 8110 exists in the search program information 8110 at the target node (step S602). As a result, when the original entry does not exist (No in step S602), it means that the node is a root node, and thus the CPU 2102 indicates that the key value minimum value 11001a of the unreferenceable node management information 11000, A null value is registered in the key value maximum value 11001b (step S612), and the process ends.
  • the original entry may be set in the search program information that is created when the search program information is created.
  • step S602 when the original entry exists (Yes in step S602), the CPU 2102 registers the key value of the original entry in the key value maximum value 11001b of the unreferenceable node management information 11000 (step S603). It is determined whether or not a previous entry exists (step S604).
  • step S604 if there is a previous entry (Yes in step S604), the CPU 2102 registers the key value of the previous entry in the minimum key value 11001b of the unreferenceable node management information 11000 (step S605). Is registered in the previous entry # 11003 of the unreferenceable node management information 11000 (step S606), and the process ends.
  • the CPU 2102 further determines whether or not a parent entry for the original entry exists in the search program information (step S607), and no parent entry exists. In the case (No in step S607), a null value is registered in the key value minimum value 11001a of the reference impossible node management information 11000 (step S608), and the process is terminated.
  • the parent entry may be set in the search program information that is created when the search program information is created.
  • step S607 the CPU 2102 determines whether there is a previous entry for the parent entry (step S609), and if there is no previous entry for the parent entry (step S609).
  • step S609 the null value is registered in the key value minimum value 11001a of the unreferenceable node management information 11000 (step S608), and the process ends.
  • step S609 if there is a previous entry for the parent entry (Yes in step S609), the key value of the previous entry is registered in the minimum key value 11001a of the unreferenceable node management information 11000 (step S610), and the previous entry for the parent entry is registered.
  • the entry number of the entry is registered in the previous entry # 11003 of the unreferenceable node management information 11000 (step S611), and the process ends.
  • the key value range in each node can be appropriately stored in the unreferenceable node management information 11000.
  • FIG. 15 is a flowchart of an example of an alternative search program selection process according to the embodiment.
  • FIGS. 16A to 16C are referred to as appropriate.
  • FIG. 16A is a diagram illustrating a first specific example of search program information according to the embodiment.
  • FIG. 16B is a diagram illustrating a second specific example of search program information according to the embodiment.
  • FIG. 16C is a diagram illustrating a third specific example of search program information according to the embodiment.
  • the alternative search program selection process (step S700) is realized by the CPU 2102 executing the alternative search program selection unit 2116.
  • the CPU 2102 obtains the node type and node search range (key value range) from the unreferenceable node management information 11000 (step S701), and whether or not the node type of the target node is a leaf node. Is determined (step S702).
  • step S702 if the target node is a leaf node (Yes in step S702), the CPU 2102 searches the index management table 7100 for an index that includes the same component column as the index as an alternative index (step S703). It is determined whether or not there is an index (step S704).
  • search program information 8110 for searching for a key value range similar to that of the unreferenceable node is created from the alternative index (step S705), and the process proceeds to step S707. .
  • the search program information 8110 created in step S705 is as shown in FIG.
  • the alternative search program ID is included in the program ID 8111, the page number of the root node of the alternative index is included in the first area 8112, and the flag indicating the use of the alternative index is included in the second area 8113.
  • the index search unit 2120 acquires such search program information 8110, a search process is executed using a part of another existing index, so that the search can be performed quickly.
  • search program information for searching for the same key value range as the unreferenceable node is created from the table 6100 (step S706), and the process proceeds to step S707. Proceed.
  • the search program information 8110 created in step S706 includes the alternative search program ID in the program ID 8111, the page number with the head of the table 6100 in the first area 8112, and scans the table.
  • the second area 8113 includes a flag to indicate.
  • the index search unit 2120 obtains such search program information 8110, the search for the table 6100 is limited to the same key value range as that of the node that cannot be referred to. Thus, the search processing time and load can be reduced. Note that the key value range of the unreferenceable node can be acquired from the unreferenceable node management information 11000.
  • step S707 the created search program information 8110 is registered in the search program information management queue 8100, and the process ends.
  • the CPU 2102 determines whether or not the target node is a root node (step S708). If the target node is the root node (Yes in step S708), the CPU 2102 moves to a lower node based on the index stage number management table 10000 (step S709), and executes node reference detection processing (step S200). ). On the other hand, if the target node is not the root node (No in step S708), the CPU 2102 moves to a lower node based on the index stage number management table 10000 or the previous entry (step S710), and performs node reference detection processing. Execute (Step S200).
  • the subordinate nodes mean all nodes indicated by entries of the target node.
  • the method of moving to a lower node is to specify the entry (entry # 0001) before the original entry (entry # 0002) of node # 5.
  • the node moves to the node # 8 based on the last entry of the node # 8 (entry # 0005), and moves to the node # 6 based on the subsequent page #
  • the node moves to node # 4, that is, the first node (node immediately below) of the nodes lower than node # 5.
  • step S711 determines whether or not reference is detected based on the result of the node reference detection process (step S711). If the reference is not detected (No in step S711), reference is not possible.
  • the loop processing of step S711 to step S716 is executed for the number of entries within the range of the key value of the node.
  • step S711 to step S716 are executed for the entry of the lower node of the target node. For example, when node # 1 which is the root node shown in FIG. 5 cannot be referred to, entries of node # 8 and node # 5 are targeted, and when node # 5 cannot be referred to, node # 4 and node # 4 The entries of # 3 and node # 9 are targeted. *
  • the CPU 2102 acquires one target entry and executes an entry reference detection process for detecting the reference state for the entry (step S400).
  • the CPU 2102 determines whether or not the key value matches the search condition (step S714), and if the key value matches the search condition.
  • the search ID is determined, search program information 8110 including the search ID and storing the entry # of the entry in the first area 8112 is created and registered in the search program information management queue 8100 (step S715).
  • the process proceeds to step S716.
  • search program information 8110 for searching for all entries satisfying the search condition that is, the entries # 0018 to 0026 # is created.
  • step S711 when the reference failure is detected for the node (Yes in step S711) or the reference failure is detected for the entry (Yes in step S713), the CPU 2102 executes the reference impossible location specifying process (step S600), An alternative search program selection process is executed (step S700), and the process ends.
  • the CPU 2102 determines whether the target node is a leaf node (step S111), the process is terminated. By this processing, it becomes possible to appropriately execute the search for the search range by the non-referenceable node.
  • the index is searched from the one with the smaller key value.
  • the index may be searched from the one with the larger key value.
  • each node manages the minimum value of the key value of each node as an entry of each lower node, and in the same stage, the node that manages the large key value becomes the previous node.
  • the page number for managing the maximum value of the key value of each stage may be managed.
  • the non-referenceable node is an intermediate node
  • the lower node of the non-referenceable node may be specified by tracing an adjacent node that manages a key value larger than that of the non-referenceable node. .
  • retrieval program information is extracted one by one and sequentially executed.
  • the present invention is not limited to this.
  • a plurality of retrieval program information is retrieved and a search based on each retrieval program information is performed. May be executed in parallel.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

データベースシステムは、記憶デバイスに対するインタフェースと、インタフェースを通じて記憶デバイスにアクセスする制御デバイスとを有する。記憶デバイスは、複数の項目の値を有する行を複数管理する表と、1以上の項目の値により行を特定可能にするための複数のノードによる木構造で構成されたインデクスとを記憶する。制御デバイスは、検索クエリの検索条件に含まれる項目値条件を特定し、項目値条件に対応するインデクスのノードが参照不可であるか否かを判定し、ノードが参照不可である場合に、参照不可のノードが管理する項目値の範囲を特定し、特定した範囲に対して検索条件を満たす行を検索する。

Description

データベースシステム及びデータベース管理方法
 本発明は、表と、表の行(レコード)を検索するためのインデクスとを管理するデータベースシステム及びデータベース管理方法に関する。
 データベースには、データベースに格納されている表のレコードを高速に検索できるようにするために、表のレコードについてのインデクスを管理しているものがある。このようなデータベースを管理するデータベースシステムでは、データベースの表を更新する場合には、インデクスも併せて更新するようにしている。
 データベースシステムにおいて、インデクスの更新時に、ライトエラーが発生してしまうと、インデクスのデータが壊れてしまい、インデクスを用いて表のレコードの検索を実行することができなくなってしまう虞がある。ここで、インデクスのデータが壊れてしまっている状態を、「論理破壊」ということとする。
 このような状況に対して、データベースのサービス提供を停止せずに、データベースを修復する技術が知られている(例えば、特許文献1参照)。
特開2009-252148号公報
 上記したように、データベースの修復が行われる場合においては、修復しているインデクスを用いた表の検索を実行することができず、表を直に検索することとなり、検索処理に長時間を要することとなる。また、検索処理の負荷が大きくなるので、同じデータベースを利用した他の検索処理の性能に対しても悪影響を及ぼすこととなる。
 本発明は、上記課題に鑑みなされたものであり、その目的は、インデクスに論理破壊が発生した場合であっても、適切且つ迅速に検索を実行することのできる技術を提供することにある。
 データベースシステムは、記憶デバイスに対するインタフェースと、インタフェースを通じて記憶デバイスにアクセスする制御デバイスとを有する。記憶デバイスは、複数の項目の値を有する行を複数管理する表と、1以上の項目の値により行を特定可能にするための複数のノードによる木構造で構成されたインデクスとを記憶する。制御デバイスは、検索クエリの検索条件に含まれる項目値条件を特定し、項目値条件に対応するインデクスのノードが参照不可であるか否かを判定し、ノードが参照不可である場合に、参照不可のノードが管理する項目値の範囲を特定し、特定した範囲に対して検索条件を満たす行を検索する。
 データベースシステムが、前述の記憶デバイスを含んでいても良い。
図1は、実施形態に係るデータベースシステムの処理概要の一例を説明する図である。 図2は、実施形態に係るデータベースシステムを含む計算機システムの一例の構成図である。 図3は、実施形態に係る検索クエリの一例を説明する図である。 図4は、実施形態に係る表の構成の一例を示す図である。 図5は、実施形態に係るインデクスの構成の一例を示す図である。 図6は、実施形態に係るインデクスのノードの構成の一例を示す図である。 図7は、実施形態に係るインデクス段数管理表の一例を示す図である。 図8は、実施形態に係るインデクス管理表の一例を示す図である。 図9Aは、実施形態に係る検索プログラム情報の構成の一例を示す図である。図9Bは、実施形態に係る検索プログラム情報の第1の例を示す図である。図9Cは、実施形態に係る検索プログラム情報の第2の例を示す図である。図9Dは、実施形態に係る検索プログラム情報の第3の例を示す図である。図9Eは、実施形態に係る検索プログラム情報の第4の例を示す図である。図9Fは、実施形態に係る検索プログラム情報管理キューの一例を示す図である。 図10は、実施形態に係る参照不可ノード管理情報の構成の一例を示す図である。 図11は、実施形態に係るインデクス検索処理の一例のフローチャートである。 図12は、実施形態に係るノード参照検知処理の一例のフローチャートである。 図13は、実施形態に係るエントリ参照検知処理の一例のフローチャートである。 図14は、実施形態に係る参照不可箇所特定処理の一例のフローチャートである。 図15は、実施形態に係る代替検索プログラム選定処理の一例のフローチャートである。 図16Aは、実施形態に係る検索プログラム情報の第1の具体例を示す図である。図16Bは、実施形態に係る検索プログラム情報の第2の具体例を示す図である。図16Cは、実施形態に係る検索プログラム情報の第3の具体例を示す図である。
 実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 なお、以下の説明では、「aaa表」の表現にて各種情報を説明することがあるが、各種情報は、表以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaa表」を「aaa情報」と呼ぶことができる。
 また、以下の説明では、「プログラム」、又は、プログラムのモジュールを主語として処理を説明する場合があるが、プログラムやプログラムモジュールは、制御デバイス(例えばプロセッサ(例えばCPU(Central Processing Unit)))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェースデバイス(例えばインタフェース)を用いながら行うため、処理の主語が制御デバイスとされてもよい。プログラム、プログラムモジュールを主語として説明された処理は、制御デバイス或いはその制御デバイスを有する装置やシステム(例えば、サーバ装置)が行う処理としても良い。また、制御デバイスは、処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースからインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
 まず、実施形態の処理概要について説明する。
 図1は、実施形態に係るデータベースシステムの処理概要の一例を説明する図である。
 例えば、外部記憶装置1001と、サーバ装置2100とで構成されるデータベースシステムにおいて、インデクス検索部2120が、検索クエリ3010に対応するインデクスのルートノードや、検索プログラム管理キュー8100に登録された検索プログラム情報8110が示すノードを対象に検索を実行する。この際に、ノード参照検知部2113がノード9100における参照不可を検知し、エントリ参照検知部2114がノード9100のエントリ9104における参照不可を検知する。参照不可が検知されると、参照不可箇所特定部2115が、ノードの種別(ルートノード、中間ノード、リーフノード)に応じて、参照不可のノードによる検索範囲を特定して、参照不可ノード管理情報11000を生成する。
 代替検索プログラム選定部2116は、参照不可ノード管理情報11000に基づいて、参照不可のノードによる検索範囲を検索するための検索プログラム情報を選定する。これにより、インデクス検索部2120により、参照不可ノードの検索範囲に対しても適切に検索され、検索結果が得られることとなる。
 次に、本発明の一実施形態について、詳細に説明する。
 図2は、本発明の一実施形態に係るデータベースシステムを含む計算機システムの構成図である。
 計算機システムは、端末装置2150と、サーバ装置2100と、外部記憶装置1001とを有する。端末装置2150と、サーバ装置2100とは、ネットワーク2160を介して接続されている。外部記憶装置1001は、サーバ装置2100の内部バス2104に接続されている。ここで、サーバ装置2100と、外部記憶装置1001とにより、データベースシステムが構成される。
 端末装置2150は、例えば、データベースシステムを利用するアプリケーションを実行し、サーバ装置2100に対して、データベース内の表6100に対する検索要求(検索クエリ)を発行する。
 図3は、実施形態に係る検索クエリの一例を説明する図である。
 検索クエリ3010は、例えば、検索対象の表(6100等)を指定する表指定記述3011と、検索条件を指定する検索条件記述3012とが含まれる。図3に示す検索クエリ3010は、SQLを用いた検索クエリの一例であり、表“T1”を対象として、キー“C1”の値が“50”と“200”との間にあるとの検索条件を満たす行を選択することを要求している。
 図2の説明に戻り、外部記憶装置1001は、表6100と、インデクス管理表7100と、インデクス段数管理表10000と、インデクス4100、7112、7113とを格納する。外部記憶装置1001において、表は、複数備えてもよい。
 図4は、実施形態に係る表の構成の一例を示す図である。
 表6100は、行ID6101と、行内容6102とを有する行(レコード)を複数格納する。行ID6101は、表6100内で、行を一意に識別するIDを格納する。行内容6102は、複数の項目(6102、6103、6104、・・・)を含む。各項目は、項目に対応する値を格納する。図4に示す表名が“T1”の表6100は、項目として、C1、C2、C3、・・・等を有する。C1、C2、C3は、例えば、一つで、又は組み合わせて検索用のキーとして用いることができる。
 図5は、実施形態に係るインデクスの構成の一例を示す図である。図6は、実施形態に係るインデクスのノードの構成の一例を示す図である。
 インデクス(4100等)は、複数のノード(ページ)9100により木構造に構成されている。従って、インデクス(4100等)において、各ノード9100は、最上位のノードであるルートノードと、最下位のノードであるリーフノードと、ルートノードとリーフノードとの間にある中間ノードとに分けられる。なお、図5では、インデクスのノードの階層は、3段であり、中間ノードについては1段となっているが、ノードの階層は、3段より多くてもよく、その場合には、2以上の段に中間ノードが存在することとなる。
 ノード9100は、図6に示すように、ヘッダ部整合性確認情報9101と、前ページ番号9102と、後ページ番号9103と、エントリ9104と、インデクス段数9105と、自ページ番号9106と、フッタ部整合性確認情報9107とを含む。
 ヘッダ部整合性確認情報9101は、時刻データ等、当該ノードであるページの更新時に一意に決まる値を格納する。ヘッダ部整合性確認情報9101に格納される値は、ノードが正常に更新されていれば、フッタ部整合性確認情報9107に格納される値と同一となる。
 前ページ番号9102は、同一の階層における、対応するノードの直前のノード(前ページ)のページ番号を格納する。なお、対応するノードが、階層における先頭である場合には、ナル値が格納される。後ページ番号9103は、同一の階層における、対応するノードの直後のノード(後ページ)のページ番号を格納する。なお、対応するノードが、階層における最後尾である場合には、ナル値が格納される。ここで、本実施形態では、インデクスが同一階層においては、キー値の小さいエントリを管理するノードから順に並んでおり、前ページは、当該ページよりもキー値が小さいエントリを管理し、後ページと、当該ページよりもキー値が大きいエントリを管理している。
 エントリ9104は、当該ノードが、ルートノード又は中間ノードである場合には、当該エントリを示す番号(エントリ番号(エントリ#))と、当該ノードに接続される直下の階層のノード(下位ノード)のページ番号と、対応する下位ノードで管理するキー値の最大値とを対応付けて格納する。また、エントリ9104は、当該ノードが、リーフノードである場合には、エントリ#と、キー値と、対応するキー値を有する表6100の行のID(行ID)とを対応付けて格納する。エントリ9104は、ノード9100において、1以上備えることができる。本実施形態では、エントリ9104は、キー値の最大値に基づいて昇順となるように配置されている。
 インデクス段数9105は、インデクス4100における対応するノードの階層の段数を格納する。本実施形態では、リーフノードの段数が1であり、それより上位の階層のノードの段数は、2、3、・・・となる。自ページ番号9106は、当該ノードのページ番号を格納する。フッタ部整合性確認情報9107は、時刻データ等、当該ノードであるページの更新時に一意に決まる値を格納する。ノードが正常に更新されている場合であれば、ヘッダ部整合性確認情報9101に格納される値と同一となる。
 図6に示すノード9100は、図5に示すインデクスにおける2段目の最後(右端)のノードを示しており、当該ノード9100において、前ページ番号9102には、前ページのページ番号である“#8”が格納され、後ページ番号9103には、後ろページがないので、ナル値が設定され、エントリ9104としては、ページ番号“#4”と、当該ページ番号のノードの最大のキー値である“130”とが対応付けられたエントリ#が“0006”のエントリと、ページ番号“#3”と、当該ページ番号のノードの最大のキー値である“160”とが対応付けられたエントリ#が“0007”のエントリと、ページ番号“#9”と、当該ページ番号のノードの最大のキー値である“200”とが対応付けられたエントリ#が“0008”のエントリとがあり、インデクス段数には、“2”が格納され、自ページ番号には、“#5”が格納されている。
 ここで、例えば、図5に示すページ番号が”#8”のノード9100において、論理破壊が発生すると、当該ノード9100の各エントリ9104として格納されている、”#4”、”#3”、及び”#9”のノードに対しては、当該ノード9100を用いて辿ることができなくなってしまう。
 図7は、実施形態に係るインデクス段数管理表の一例を示す図である。
 インデクス段数管理表10000は、各インデクスに対応して設けられる。インデクス段数管理表10000は、段数10001と、ページ番号(#)10002とを含む。段数10001は、対応するインデクスに含まれる各段の段数を格納する。本実施形態では、リーフノードの段数を1としている。ページ#10002は、対応する段のノードにおいて、管理しているキー値の最大値が最も小さいノード(ページ)のページ番号を格納する。このインデクス段数管理表10000によると、各段における先頭のノードを特定することができる。
 同図に示すインデクス段数管理表10000は、図5に示す構成のインデクス“IDX1”に対応するインデクス段数管理表10000であり、3段目においては、ページ#1が管理しているキー値の最大値が最も小さく、2段目においては、ページ#8が管理しているキー値の最大値が最も小さく、1段目においては、ページ#2が管理しているキー値の最大値が最も小さいことを示している。
 図8は、実施形態に係るインデクス管理表の一例を示す図である。
 インデクス管理表7100は、表名7101と、インデクス名7102と、構成列7103とを有するレコードを管理する。表名7101は、インデクスが対象とする表6100の名称(表名)を格納する。インデクス名7102は、対応するインデクスの名称(インデクス名)を格納する。構成列7103は、対応するインデクスを構成している、すなわち、インデクスの対象としている列(項目)を格納する。構成列7103は、複数の列を格納してもよい。例えば、インデクス管理表7100の一番上のレコードは、“T1”の表6100の“IDX1”のインデクス4100は、項目“C1”により構成していることを示しており、インデクス管理表7100の3番目のレコードは、“T1”の表6100の“IDX3”のインデクス7113は、項目“C1”及び“C3”により構成していることを示している。
 図2の説明に戻り、サーバ装置2100は、インタフェース2101と、CPU2102と、メモリ2103とを有する。インタフェース2101と、CPU2102と、メモリ2103とは、内部バス2104を介して接続されている。
 インタフェース2101は、端末装置2150との間の通信を制御する。CPU2102は、メモリ2103に格納されたプログラムを実行することにより各種処理を実行する。
 メモリ2103は、CPU2102により実行されるプログラムや、CPU2102により使用されるデータを記憶する。具体的には、メモリ2103は、データベース管理システム(DBMS)2110を記憶する。データベース管理システム2110は、プログラムモジュールとして、クエリ受付部2111と、インデクス検出部2112とを記憶する。
 クエリ受付部2111は、端末装置2150から送信された検索クエリ3010を受け付ける。クエリ受付部2111は、受け付けた検索クエリ3010に含まれている検索を実行するための検索条件を含む実行手順を作成する。インデクス検索部2112は、ノード参照検知部2113と、エントリ参照検知部2114と、参照不可箇所特定部2115と、代替検索プログラム選定部2116とを含む。ノード参照検知部2113は、インデクスに対して、ノード単位での排他、又は論理破壊による参照不可を検知する。エントリ参照検知部2114は、インデクスに対して、ノード内のエントリ単位での排他、又は論理破壊による参照不可を検知する。参照不可箇所特定部2115は、インデクスの論理破壊による参照不可能な箇所のキー値の範囲を特定する。代替検索プログラム選定部2116は、インデクスの参照不可能なキー値範囲の検索を実行する代替検索プログラムを選定する。
 また、データベース管理システム2110は、データとして、検索プログラム情報管理キュー8100と、参照不可ノード管理情報11000とを記憶する。検索プログラム情報管理キュー8100は、検索時に用いる検索プログラム情報を格納する。参照不可ノード管理情報11000は、参照不可ノードに関する情報を格納する。
 図9Aは、実施形態に係る検索プログラム情報の構成の一例を示す図である。図9Bは、実施形態に係る検索プログラム情報の第1の例を示す図である。図9Cは、実施形態に係る検索プログラム情報の第2の例を示す図である。図9Dは、実施形態に係る検索プログラム情報の第3の例を示す図である。図9Eは、実施形態に係る検索プログラム情報の第4の例を示す図である。図9Fは、実施形態に係る検索プログラム情報管理キューの一例を示す図である。
 検索プログラム情報8110は、図9Aに示すように、検索プログラムID8111と、第1領域8112と、第2領域8113とを含む。検索プログラムID8111は、検索プログラム、又は代替検索プログラムのIDを格納する。第1領域8112、第2領域8113は、検索プログラム情報8110の種類に応じて図9B乃至図9Eに示すよう各種情報を記憶する。
 通常の検索を行うための検索プログラム情報8110は、図9Bに示すように、第1領域8112は、検索を開始するエントリ(元エントリ)の番号を格納する。第2領域8113は、元エントリの親となる親エントリの番号を格納する。
 参照不可であるノードに対する検索を代替するための検索(代替検索)を行うための検索プログラム情報8110は、図9Cに示すように、検索プログラムID8111には、代替検索プログラムを示すIDを格納する。第1領域8112は、検索を開始するエントリ(元エントリ)の番号を格納する。第2領域8113は、元エントリの親となる親エントリの番号を格納する。なお、親エントリが参照不可である場合には、第2領域8113には、当該親エントリを参照するエントリの番号を格納する。例えば、元エントリが図5に示すエントリ#0018である場合において、ノード#5が参照不可である場合には、第2領域8113には、参照不可であるノード#5を参照するエントリ#0002が格納される。
 代替インデクスを用いて代替検索を行うための検索プログラム情報8110は、図9Dに示すように、検索プログラムID8111には、代替検索プログラムを示すIDを格納する。第1領域8112は、検索に利用する代替インデクスのルートノード番号(#)を格納する。第2領域8113は、代替インデクスを使用することを示すフラグ(代替インデクス使用フラグ)を格納する。
 テーブルを用いて代替検索を行うための検索プログラム情報8110は、図9Eに示すように、検索プログラムID8111には、代替検索プログラムを示すIDを格納する。第1領域8112は、テーブル(表)の先頭データページ番号(#)を格納する。第2領域8113は、テーブルスキャンを行うことを示すフラグ(テーブルスキャンフラグ)を格納する。
 検索プログラム情報管理キュー8100は、図9Fに示すように、1以上の検索プログラム情報8110を格納可能である。検索プログラム情報管理キュー8100に格納されている検索プログラム情報8110は、インデクス検索部2120により一つずつ取り出されて実行されることとなる。
 図10は、実施形態に係る参照不可ノード管理情報の構成の一例を示す図である。
 参照不可ノード管理情報11000は、参照不可ノード検索範囲11001と、参照不可ノードノード種別11002と、前エントリ番号(#)11003とを格納する。
 参照不可ノード検索範囲11001は、キー値最小値11001aと、キー値最大値11001bとを含む。キー値最小値11001aは、参照不可となったノード(参照不可ノード)による検索範囲であるキー値の最小値を格納する。キー値最大値11001bは、参照不可ノードによる検索範囲であるキー値の最大値を格納する。なお、参照不可ノードがルートノードである場合には、キー値最小値11001a、キー値最大値11001bには、ナル値が格納される。
 参照不可ノードノード種別11002は、参照不可ノードのノード種別を格納する。ノード種別は、ルートノード、中間ノード、リーフノードのいずれかである。
 前エントリ番号(#)11003は、参照不可ノードをエントリとして含むノード(親ノード)における前のエントリ(前エントリ)の番号を格納する。ここで、前エントリとは、参照不可ノードの範囲とするキー値よりも小さいキー値を持っている直前のノードのエントリである。なお、前エントリがない場合には、ナル値が格納される。
 例えば、図4に示すインデクスにおけるページ#5のノードが参照不可ノードとなった場合には、参照不可ノード管理情報11000は、図10に示すように、キー値最小値11001aに、“100”が格納され、キー値最大値11001bに、“200”が格納され、参照不可ノードノード種別11002に、“中間ノード”が格納され、前エントリ#11003に、“#0001”が格納される。
 次に、本実施形態のサーバ装置2100による処理動作について説明する。
 図11は、実施形態に係るインデクス検索処理のフローチャートである。
 インデクス検索処理(ステップS100)は、CPU2102がインデクス検索部2112を実行することにより実現される。インデクス検索処理において、CPU2102が、クエリ受付部2111から検索要求を受け取り(ステップS101)、検索要求に対する初回の検索であるか否か、すなわち、一度でも結果を返したか否かを判定する(ステップS102)。
 この結果、最初の検索である場合(ステップS102でYes)には、CPU2102は、処理をステップS105に進める一方、最初の検索でない場合(ステップS102でNo)には、検索プログラム情報管理キュー8100から検索プログラム情報8110を取得することを試みる(ステップS103)。
 CPU2102は、検索プログラム情報管理キュー8100で検索プログラム情報8110が枯渇しているか否かを判定する(ステップS104)。この結果、検索プログラム情報が枯渇している場合(ステップS104でYes)には、検索要求に対応する検索処理を終えたことを意味するので、CPU2102は、処理を終了する一方、検索プログラム情報8110が枯渇していない場合(ステップS104でNo)には、処理をステップS105に進める。
 ステップS105では、CPU2102は、初回検索の場合(ステップS102でYes)には、ルートノードに移動し、検索プログラム情報8110を取得した場合には、検索プログラム情報8110で指定されているノードに移動する。なお、検索プログラム情報8110に代替インデクス使用フラグが設定されている場合には、CPU2102は、代替インデクスを用いて、検索条件のキーの値に着目して、検索を実行する。例えば、CPU2102は、参照不可ノード管理情報11000の参照不可ノード検索範囲11001のキー値の範囲を検索範囲として、代替インデクスを用いて検索を実行する。
 次いで、CPU2102は、対象のノードに対する参照状態を検知するノード参照検知処理を実行する(ステップS200)。
 次いで、CPU2102は、ノード参照検知処理の結果に基づいて、参照不可を検知したか否かを判定し(ステップS106)、参照不可を検知していない場合(ステップS106でNo)には、ノード内の最初のエントリをカレントポジションとして記憶し(S115)、ノード内に他のエントリが存在する場合(S116:Yes)、検索条件を満たすエントリが存在する間、ステップS107~ステップS111のループ処理を実行する。
 ループ処理においては、CPU2102は、対象のノードにおける検索条件を満たすエントリを1件取得し(ステップS108)、当該エントリに対する参照状態を検知するエントリ参照検知処理を実行する(ステップS400)。次いで、CPU2102は、参照不可を検知していない場合(ステップS109でNo)には、検索IDを決定し、当該検索IDを含み、取得したエントリのエントリ#を第1領域8112に格納し、現在の元エントリを第2領域8113に格納した検索プログラム情報8110を作成し、検索プログラム情報管理キュー8100に登録し(ステップS110)、ステップS111に進む。
 一方、ノードについて参照不可を検知した場合(ステップS106でYes)又はエントリについて参照不可を検知した場合(ステップS109でYes)には、CPU2102は、参照不可箇所特定処理を実行し(ステップS600)、代替検索プログラム選定処理を実行し(ステップS700)、ステップS102に処理を進める。
 検索条件を満たすすべてのエントリに対して、ステップS107~ステップS111の処理を実行した場合には、CPU2102は、対象のノードがリーフノードであるか否かを判定し(ステップS112)、リーフノードでない場合(ステップS112でNo)には、他の検索処理を継続するために、ステップS102に処理を進める一方、リーフノードである場合(ステップS112でYes)には、検索条件を満たす行IDを取得して返却し(ステップS113)、ステップS102に処理を進める。
 例えば、図11に示す処理のステップS103において、図5に示すリーフノード#4に対する検索をするための検索プログラム情報8110(第1領域8112にエントリ#0006を含み、第2領域8113にエントリ#0002を含む)を取得した場合には、検索条件が(50≦キー(C1)≦200)であるとすると、図11に示すステップS110において、第1領域8112にエントリ#0019、#0020を含む2つの検索プログラム情報が作成されて検索プログラム情報管理キュー8100に登録され、ステップS113でエントリ#0018に対応する行IDを取得し、当該行IDを検索結果の一部として返す処理が実行される。
 図12は、実施形態に係るノード参照検知処理のフローチャートである。
 ノード参照検知処理(ステップS200)は、CPU2102がノード参照検知部2113を実行することにより実現される。ノード参照検知処理において、CPU2102が、対象のノードに排他がかけられているか否かを確認し(ステップS201)、さらに、対象のノード9100のヘッダ部整合性確認情報9101の値と、フッタ部整合性確認情報9107の値とが一致しているか否かにより、論理的な整合性が取れているか否か、言い換えれば、論理破壊が発生していないか否かを確認する(ステップS202)。
 この確認の結果に基づいて、CPU2102は、対象ノードが排他又は論理破壊が発生していることにより参照不可であるか否かを判定する(ステップS203)。判定の結果、参照不可である場合(ステップS203でYes)には、参照不可検知をリターンコードとして設定し(ステップS204)、処理を終了する一方、参照不可でない場合(ステップS203でNo)には、そのまま処理を終了する。
 図13は、実施形態に係るエントリ参照検知処理のフローチャートである。
 エントリ参照検知処理(ステップS400)は、CPU2102がエントリ参照検知部2114を実行することにより実現される。エントリ参照検知処理において、CPU2102が、対象のエントリに排他がかけられているか否かを確認し(ステップS401)、さらに、対象のエントリのキー値について、論理的な整合性が取れているか否か、言い換えれば、論理破壊が発生していないか否かを確認する(ステップS402)。本実施形態では、対象のエントリ9104のキー値が、当該ノード中の前のエントリのキー値より大きく、後ろのエントリのキー値より小さくなっているか否かを確認する。
 次いで、CPU2102は、対象のノードがリーフノードであるか否かを判定し(ステップS403)、リーフノードでない場合(ステップS403でNo)には、エントリの下位ノードのページ番号についての整合性を確認する(ステップS404)。具体的には、CPU2102は、エントリ9104中のページ番号と、エントリ9104とポインタで接続されている下位のノード9100の自ページ番号9106のページ番号とが一致しているか否かを確認する。
 一方、リーフノードである場合(ステップS403でYes)には、エントリの行IDについての整合性を確認する(ステップS405)。具体的には、CPU2102は、エントリ9104中の行IDと、エントリ9104とポインタで接続されている表6100の行が持つ行ID6101とが一致しているか否かを確認する。
 これらの確認の結果に基づいて、CPU2102は、対象エントリが排他又は論理破壊が発生していることにより参照不可であるか否かを判定する(ステップS406)。判定の結果、参照不可である場合(ステップ406でYes)には、参照不可検知をリターンコードとして設定し(ステップS407)、処理を終了する一方、参照不可でない場合(ステップS406でNo)には、そのまま処理を終了する。
 図14は、実施形態に係る参照不可箇所特定処理のフローチャートである。
 参照不可箇所特定処理(ステップS600)は、CPU2102が参照不可箇所特定部2115を実行することにより実現される。参照不可箇所特定処理において、CPU2102が、ノード9100のインデクス段数9105と、インデクス段数管理表10000とに基づいて、対象のノードのノード種別を求めて、参照不可ノード管理情報11000に登録する(ステップS601)。
 次いで、CPU2102は、対象のノードに、検索プログラム情報8110の元エントリがその検索プログラム情報8110に存在するか否かを判定する(ステップS602)。この結果、元エントリが存在しない場合(ステップS602のNo)には、当該ノードがルートノードであることを意味しているので、CPU2102は、参照不可ノード管理情報11000のキー値最小値11001aと、キー値最大値11001bにナル値を登録し(ステップS612)、処理を終了する。なお、元エントリは、検索プログラム情報作成時に、作成される検索プログラム情報に設定されて良い。
 一方、元エントリが存在する場合(ステップS602のYes)には、CPU2102は、元エントリのキー値を、参照不可ノード管理情報11000のキー値最大値11001bに登録し(ステップS603)、元エントリに対する前エントリが存在するか否かを判定する(ステップS604)。
 この結果、前エントリが存在する場合(ステップS604でYes)には、CPU2102は、前エントリのキー値を、参照不可ノード管理情報11000のキー値最小値11001bに登録し(ステップS605)、前エントリのエントリ番号を、参照不可ノード管理情報11000の前エントリ#11003に登録し(ステップS606)、処理を終了する。
 一方、前エントリが存在しない場合(ステップS604でNo)には、CPU2102は、さらに、元エントリに対する親エントリが検索プログラム情報に存在するか否かを判定し(ステップS607)、親エントリが存在しない場合(ステップS607でNo)には、参照不可ノード管理情報11000のキー値最小値11001aにナル値を登録し(ステップS608)、処理を終了する。なお、親エントリは、検索プログラム情報作成時に、作成される検索プログラム情報に設定されて良い。
 一方、親エントリが存在する場合(ステップS607でYes)には、CPU2102は、親エントリに対する前エントリが存在するか否かを判定し(ステップS609)、親エントリに対する前エントリが存在しない場合(ステップS609でNo)には、参照不可ノード管理情報11000のキー値最小値11001aにナル値を登録し(ステップS608)、処理を終了する。
 一方、親エントリに対する前エントリが存在する場合(ステップS609でYes)には、参照不可ノード管理情報11000のキー値最小値11001aに前エントリのキー値を登録し(ステップS610)、親エントリに対する前エントリのエントリ番号を、参照不可ノード管理情報11000の前エントリ#11003に登録し(ステップS611)、処理を終了する。上記処理により、各ノードにおけるキー値の範囲を適切に参照不可ノード管理情報11000に格納することができる。
 図15は、実施形態に係る代替検索プログラム選定処理の一例のフローチャートである。ここで、当該フローチャートの説明において、図16A乃至図16Cを適宜参照する。図16Aは、実施形態に係る検索プログラム情報の第1の具体例を示す図である。図16Bは、実施形態に係る検索プログラム情報の第2の具体例を示す図である。図16Cは、実施形態に係る検索プログラム情報の第3の具体例を示す図である。
 代替検索プログラム選定処理(ステップS700)は、CPU2102が代替検索プログラム選定部2116を実行することにより実現される。代替検索プログラム選定処理において、CPU2102が、参照不可ノード管理情報11000からノード種別、ノード検索範囲(キー値の範囲)を取得し(ステップS701)、対象のノードのノード種別がリーフノードであるか否かを判定する(ステップS702)。
 この結果、対象のノードがリーフノードである場合(ステップS702でYes)には、CPU2102は、インデクス管理表7100から当該インデクスと同じ構成列を含むインデクスを代替インデクスとして検索し(ステップS703)、代替インデクスがあるか否かを判定する(ステップS704)。
 代替インデクスがある場合(ステップS704でYes)には、代替インデクスから参照不可ノードと同様のキー値の範囲を検索するための検索プログラム情報8110を作成し(ステップS705)、ステップS707に処理を進める。ステップS705で作成される検索プログラム情報8110は、図16Aに示すように、
代替検索プログラムIDをプログラムID8111に含み、代替インデクスのルートノードのページ番号を第1領域8112に含み、代替インデクス使用を示すフラグを第2領域8113に含む。
 このような検索プログラム情報8110をインデクス検索部2120が取得すると、既にある他のインデクスの一部を利用して検索する処理を実行することとなるので、迅速に検索を行うことができる
 一方、代替インデクスがない場合(ステップS704でNo)には、表6100から参照不可ノードと同様のキー値の範囲を検索するための検索プログラム情報を作成し(ステップS706)、ステップS707に処理を進める。ステップS706で作成される検索プログラム情報8110は、図16Bに示すように、代替検索プログラムIDをプログラムID8111に含み、表6100の先頭があるページ番号を第1領域8112に含み、テーブルをスキャンすること示すフラグを第2領域8113に含む。
 このような検索プログラム情報8110をインデクス検索部2120が取得すると、表6100に対する検索を参照不可ノードと同様のキー値範囲に限って検索を行うので、すべての表6100から直接検索する場合に比して、検索処理の時間及び負荷を低減することができる。なお、参照不可ノードのキー値範囲は、参照不可ノード管理情報11000から取得することができる。
 ステップS707では、作成した検索プログラム情報8110を検索プログラム情報管理キュー8100に登録し、処理を終了する。
 一方、リーフノードではない場合(ステップS702でNo)には、CPU2102は、対象のノードがルートノードであるか否かを判定する(ステップS708)。対象のノードがルートノードである場合(ステップS708でYes)には、CPU2102は、インデクス段数管理表10000に基づいて、下位ノードに移動し(ステップS709)、ノード参照検知処理を実行する(ステップS200)。一方、対象のノードがルートノードでない場合(ステップS708でNo)には、CPU2102は、インデクス段数管理表10000、又は前エントリに基づいて、下位ノードに移動し(ステップS710)、ノード参照検知処理を実行する(ステップS200)。ここで、下位ノードとは、対象のノードが持つエントリが示すすべてのノードを意味している。
 例えば、図5に示すインデクスにおいて、ノード#5が参照不可である場合において、下位ノードに移動する方法としては、ノード#5の元エントリ(エントリ#0002)の前エントリ(エントリ#0001)を特定し、当該エントリ#0001に基づいて、ノード#8に移動し、ノード#8の最後のエントリ(エントリ#0005)に基づいて、ノード#6に移動し、ノード#6が持つ後ページ#に基づいて、ノード#4、すなわち、ノード#5の下位のノードの中の先頭のノード(直下ノード)に移動する。
 ここで、直下ノードに辿る方法としては、以下に示す方法がある。例えば、対象のノードを参照するエントリ(元エントリ)がない場合には、インデクス段数管理表10000に基づいて、直下ノードまで辿ることができる。また、元エントリが存在し、元エントリの前のエントリ(前エントリ)が存在する場合には、元エントリの前エントリを用いて、直下ノードまで辿ることができる。また、元エントリが存在するが、親エントリが存在しない場合には、インデクス段数管理表10000に基づいて、直下ノードまで辿ることができる。また、元エントリが存在するが、元エントリの前エントリが存在しない場合であって、親エントリの前エントリが存在する場合には、親エントリの前エントリに基づいて、直下ノードまで辿ることができる。また、元エントリ、親エントリが存在するが、元エントリの前エントリ、及び、親エントリの前エントリが存在しない場合には、インデクス段数管理表10000に基づいて、直下ノードまで辿ることができる。
 次いで、CPU2102は、ノード参照検知処理の結果に基づいて、参照不可を検知したか否かを判定し(ステップS711)、参照不可を検知していない場合(ステップS711でNo)には、参照不可ノードのキー値の範囲内のエントリの数だけ、ステップS711~ステップS716のループ処理を実行する。ここで、ステップS711~ステップS716は、対象とするノードの下位ノードのエントリを対象にして実行される。例えば、図5に示すルートノードであるノード#1が参照不可の場合には、ノード#8、ノード#5のエントリが対象となり、ノード#5が参照不可の場合には、ノード#4、ノード#3、ノード#9のエントリが対象になる。 
 ループ処理においては、CPU2102は、対象のエントリを1件取得して、当該エントリに対する参照状態を検知するエントリ参照検知処理を実行する(ステップS400)。
次いで、CPU2102は、参照不可を検知していない場合(ステップS713でNo)には、キー値が検索条件に合致しているか否かを判定し(ステップS714)、検索条件に合致している場合には、検索IDを決定し、当該検索IDを含み、当該エントリのエントリ#を第1領域8112に格納した検索プログラム情報8110を作成し、検索プログラム情報管理キュー8100に登録し(ステップS715)、ステップS716に進む。
 ここで、例えば、ノード#5が参照不可である場合においては、ステップS711~ステップS716のループ処理によって、図16Cに示すように、第1領域8112に、ノード#4以降のノードのエントリであって、検索条件を満たすエントリの全てエントリ、すなわち、エントリ#0018からエントリ0026#のそれぞれのエントリに対する検索をするための検索プログラム情報8110が作成される。
 一方、ノードについて参照不可を検知した場合(ステップS711でYes)又はエントリについて参照不可を検知した場合(ステップS713でYes)には、CPU2102は、参照不可箇所特定処理を実行し(ステップS600)、代替検索プログラム選定処理を実行し(ステップS700)、処理を終了する。
 参照不可ノードのキー値の範囲内のすべてのエントリに対して、ステップS712~ステップS716の処理を実行した場合には、CPU2102は、対象のノードがリーフノードであるか否かを判定し(ステップS111)、処理を終了する。この処理により、参照不可ノードによる検索範囲について、検索を適切に実行することができるようになる。
 以上、実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その趣旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
 例えば、上記実施形態では、インデクスをキー値の小さい方から検索する構成としていたが、例えば、キー値の大きい方から検索する構成としてもよい。この場合には、各ノードは、下位の各ノードのエントリとして、各ノードのキー値の最小値を管理するようにし、同一の段においては、大きいキー値を管理するノードが前のノードとなるようにし、インデクス段数管理表では、各段のキー値の最大値を管理するページ番号を管理するようにすればよい。このようにした場合には、参照不可ノードが中間ノードであれば、参照不可ノードよりも大きいキー値を管理する隣接するノードを辿って、参照不可ノードの下位ノードを特定するようにすればよい。
 また、上記実施形態では、検索プログラム情報を一つずつ取り出して、逐次実行する例を示していたが、本発明はこれに限られず、例えば、検索プログラム情報を複数取り出して、それぞれに基づいた検索を並行して実行するようにしてもよい。
2100:サーバ装置、1001:外部記憶装置、2150:端末装置

Claims (15)

  1.  記憶デバイスに対するインタフェースと、
     前記インタフェースを通じて前記記憶デバイスにアクセスする制御デバイスと
    を有し、
     前記記憶デバイスが、複数の項目の値を有する行を複数管理する表と、1以上の前記項目の値により前記行を特定可能にするための複数のノードを含む木構造で構成されたインデクスとを記憶し、
     前記制御デバイスは、
     前記表に対する検索クエリの検索条件に含まれる項目値条件を特定し、
     前記項目値条件に対応する前記インデクスの前記ノードが参照不可であるか否かを判定し、
     前記ノードが参照不可である場合に、前記参照不可のノードが管理する項目値の範囲を特定し、特定した前記範囲に対して前記検索条件を満たす行を検索する
    データベースシステム。
  2.  前記制御デバイスは、
     前記参照不可のノードが、前記インデクスにおける中間ノードである場合に、前記ノードと同じ段における直前のノードが管理する項目値に基づいて、前記参照不可のノードが管理する項目値の範囲を特定する
    請求項1に記載のデータベースシステム。
  3.  前記制御デバイスは、
     前記参照不可のノードが、前記インデクスにおける中間ノードである場合に、前記参照不可のノードの下位のノードを特定し、
     前記下位のノードを用いて、前記特定した前記範囲に対して前記検索条件を満たす行を検索する
    請求項2に記載のデータベースシステム。
  4.  前記記憶デバイスは、前記インデクスの各段における先頭のノードのノード番号を含む段数管理情報を記憶し、
     前記制御デバイスは、
     前記参照不可のノードが、前記インデクスにおける中間ノードである場合に、前記参照不可のノードの上位のノードの、前記参照不可のノードの直前のノードのエントリがあれば、当該エントリに従って前記直前のノードを経由して下位のノードを特定し、
     前記参照不可のノードの直前のノードのエントリがなければ、前記段数管理情報に基づいて、下位の段のノードを特定し、特定したノードを経由して下位のノードを特定する
    請求項3に記載のデータベースシステム。
  5.  前記制御デバイスは、
     前記参照不可のノードが、ルートノードである場合に、前記段数管理情報に基づいて、下位の最前のノードを特定し、特定したノード及び当該ノードから接続された各ノードを用いて、前記検索条件を満たす行を検索する
    請求項1に記載のデータベースシステム。
  6.  前記記憶デバイスは、前記インデクスが対象とする1以上の前記項目を含む複数項目について対象とする他のインデクスを記憶し、
     前記制御デバイスは、
     前記参照不可のノードが、リーフノードである場合に、前記他のインデクスに基づいて、前記参照不可のノードと同じ項目値の範囲を検索する
    請求項1に記載のデータベースシステム。
  7.  前記ノードは、ヘッダと、フッタとに、整合性確認用の情報を格納するように管理されており、
     前記制御デバイスは、
     前記ノードの前記ヘッダの整合性確認用の情報と、前記フッタの整合性確認用の情報とに基づいて、当該ノードが参照不可か否かを判定する
    請求項1に記載のデータベースシステム。
  8.  前記ノードに排他がかけられているか否かに基づいて、当該ノードが参照不可か否かを判定する
    請求項1に記載のデータベースシステム。
  9.  前記ノードは、当該ノードに接続される下位のノードのページ番号又は、当該ノードに接続される行を示す行IDと、項目の値とを含む1以上のエントリを、前記エントリの前記項目の値に従って並べて格納し、
     前記制御デバイスは、
     前記ノードの前記エントリが前記項目の値に従って並んでいるか否かに基づいて、当該ノードが参照不可であるか否かを判定する
    請求項1に記載のデータベースシステム。
  10.  前記ノードは、前記下位のノード又は前記接続されている行に対するポインタが設けられており、
     前記制御デバイスは、
     前記ポインタにより対応付けられているノードのページ番号又は行の行IDと、前記ノードが格納しているページ番号又は行IDとが一致しているか否かにより、前記ノードが参照不可であるか否かを判定する
    請求項1に記載のデータベースシステム。
  11.  前記制御デバイスは、前記ポインタにより対応付けられている前記ノードに排他がかけられているか否かに基づいて、当該ノードが参照不可か否かを判定する
    請求項1に記載のデータベースシステム。
  12.  検索対象とするノード又は行を示す1以上の検索プログラム情報を格納可能な検索プログラム情報キューを有し、
     前記制御デバイスは、前記検索プログラム情報キューから逐次前記検索プログラム情報を取得し、
     前記取得した検索プログラム情報が示す前記ノードが参照不可であるか否かを判定し、
     前記ノードから参照不可でなく、且つ検索条件に該当するエントリを検出した場合に、当該エントリを検索対象とするための検索プログラム情報を出力して、前記検索プログラム情報キューに登録する
    請求項1に記載のデータベースシステム。
  13.  前記制御デバイスは、
     前記参照不可のノードの下位のノードから、参照不可でなく、且つ検索条件に該当するエントリを検出した場合に、当該エントリを検索対象とするための検索プログラム情報を出力して、前記検索プログラム情報キューに登録する
    請求項12に記載のデータベースシステム。
  14.  前記制御デバイスは、
     複数の前記検索プログラム情報に基づいた処理を並行して実行する
    請求項12に記載のデータベースシステム。
  15.  複数の項目の値を有する行を複数管理する表と、1以上の前記項目の値により前記行を特定可能にするための複数のノードを含む木構造で構成されたインデクスとを記憶する記憶デバイスにおけるインデクスを用いて前記表を検索するデータベース管理方法であって、
     前記表に対する検索クエリの検索条件に含まれる項目値条件を特定し、
     前記項目値条件に対応する前記インデクスの前記ノードが参照不可であるか否かを判定し、
     前記ノードが参照不可である場合に、前記参照不可のノードが管理する項目値の範囲を特定し、特定した前記範囲に対して前記検索条件を満たす行を検索する
    データベース管理方法。
PCT/JP2011/080077 2011-12-26 2011-12-26 データベースシステム及びデータベース管理方法 WO2013098918A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US14/369,029 US9703829B2 (en) 2011-12-26 2011-12-26 Database system and database management method
PCT/JP2011/080077 WO2013098918A1 (ja) 2011-12-26 2011-12-26 データベースシステム及びデータベース管理方法
JP2013551059A JP5731015B2 (ja) 2011-12-26 2011-12-26 データベースシステム及びデータベース管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/080077 WO2013098918A1 (ja) 2011-12-26 2011-12-26 データベースシステム及びデータベース管理方法

Publications (1)

Publication Number Publication Date
WO2013098918A1 true WO2013098918A1 (ja) 2013-07-04

Family

ID=48696488

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/080077 WO2013098918A1 (ja) 2011-12-26 2011-12-26 データベースシステム及びデータベース管理方法

Country Status (3)

Country Link
US (1) US9703829B2 (ja)
JP (1) JP5731015B2 (ja)
WO (1) WO2013098918A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5960798B2 (ja) * 2012-03-08 2016-08-02 株式会社Murakumo データベースの管理方法
US20160154851A1 (en) * 2013-04-24 2016-06-02 Hitachi Ltd. Computing device, storage medium, and data search method
US9892158B2 (en) * 2014-01-31 2018-02-13 International Business Machines Corporation Dynamically adjust duplicate skipping method for increased performance
US11294961B2 (en) * 2017-05-19 2022-04-05 Kanagawa University Information search apparatus, search program, database update method, database update apparatus and database update program, for searching a specified search target item associated with specified relation item
CN110866003B (zh) * 2018-08-27 2023-09-26 阿里云计算有限公司 索引值数目的估算方法和装置以及电子设备
CN111488370B (zh) * 2020-04-02 2023-09-12 杭州迪普科技股份有限公司 列表分页快速响应系统和方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63191226A (ja) * 1987-02-03 1988-08-08 Ricoh Co Ltd B↑+tree上における同時実行制御方式
JP2004185617A (ja) * 2002-12-02 2004-07-02 Microsoft Corp 左リンクを使用してツリーをトラバースするアルゴリズム
JP2008065716A (ja) * 2006-09-08 2008-03-21 Ricoh Co Ltd データ管理装置、データ管理方法及びデータ管理プログラム
JP2009252148A (ja) * 2008-04-10 2009-10-29 Nippon Telegr & Teleph Corp <Ntt> データベース自動修復装置及びその方法並びにデータベース自動修復プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105025A (en) * 1996-03-08 2000-08-15 Oracle Corporation Method for using an index as a workspace for deferred enforcement of uniqueness constraints
US6859808B1 (en) * 2001-05-31 2005-02-22 Oracle International Corporation Mapping logical row identifiers for primary B+tree-like structures to physical row identifiers
US6772179B2 (en) * 2001-12-28 2004-08-03 Lucent Technologies Inc. System and method for improving index performance through prefetching
US7383276B2 (en) * 2004-01-30 2008-06-03 Microsoft Corporation Concurrency control for B-trees with node deletion
US7447233B2 (en) * 2004-09-29 2008-11-04 Intel Corporation Packet aggregation protocol for advanced switching
US7831624B2 (en) * 2005-06-24 2010-11-09 Seagate Technology Llc Skip list with address related table structure
US7702619B2 (en) * 2005-09-23 2010-04-20 Alan El-Sabbagh Methods and systems for joining database tables using indexing data structures
JP4445509B2 (ja) * 2007-03-20 2010-04-07 株式会社東芝 構造化文書検索システム及びプログラム
JP2009295013A (ja) * 2008-06-06 2009-12-17 Hitachi Ltd データベース管理方法、データベース管理装置およびプログラム
JP5339507B2 (ja) * 2008-10-01 2013-11-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 木構造を探索する方法
US8732139B2 (en) * 2008-12-18 2014-05-20 Sap Ag Method and system for dynamically partitioning very large database indices on write-once tables
US8676855B2 (en) * 2009-05-01 2014-03-18 Brother Kogyo Kabushiki Kaisha Distributed storage system, management apparatus, node apparatus, recording medium on which node program is recorded, page information acquisition method, recording medium on which page information sending program is recorded, and page information sending method
US8352488B2 (en) * 2009-06-02 2013-01-08 Saffron Technology, Inc. Methods, systems and computer program products for providing a distributed associative memory base
US8412708B2 (en) * 2009-09-17 2013-04-02 Los Alamos National Security, Llc System and method for modeling and analyzing complex scenarios
US9195657B2 (en) * 2010-03-08 2015-11-24 Microsoft Technology Licensing, Llc Columnar storage of a database index

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63191226A (ja) * 1987-02-03 1988-08-08 Ricoh Co Ltd B↑+tree上における同時実行制御方式
JP2004185617A (ja) * 2002-12-02 2004-07-02 Microsoft Corp 左リンクを使用してツリーをトラバースするアルゴリズム
JP2008065716A (ja) * 2006-09-08 2008-03-21 Ricoh Co Ltd データ管理装置、データ管理方法及びデータ管理プログラム
JP2009252148A (ja) * 2008-04-10 2009-10-29 Nippon Telegr & Teleph Corp <Ntt> データベース自動修復装置及びその方法並びにデータベース自動修復プログラム

Also Published As

Publication number Publication date
JPWO2013098918A1 (ja) 2015-04-30
US9703829B2 (en) 2017-07-11
US20150066943A1 (en) 2015-03-05
JP5731015B2 (ja) 2015-06-10

Similar Documents

Publication Publication Date Title
CN112559554B (zh) 一种查询语句优化方法及装置
US12032576B2 (en) Joining large database tables
JP5731015B2 (ja) データベースシステム及びデータベース管理方法
US8332366B2 (en) System and method for automatic weight generation for probabilistic matching
CN110325985B (zh) 使用对高速缓存友好的存储器内散列索引的原子rdma读取的基于主键的高效查询的方法
US9934289B2 (en) Fuzzy full text search
WO2010003061A1 (en) Database systems and methods
US9454561B2 (en) Method and a consistency checker for finding data inconsistencies in a data repository
JP2017526021A (ja) データ検索におけるエラー修正装置及びその方法
US8843499B2 (en) Accelerating database queries comprising positional text conditions plus bitmap-based conditions
US9971793B2 (en) Database management system and database management method
US8452757B2 (en) Index mechanism for finding nearest matches in a computer system
CN116561154A (zh) Sql语句优化方法及装置
CN114840487A (zh) 分布式文件系统的元数据管理方法和装置
CN114625554A (zh) 故障修复方法、装置、电子设备及存储介质
US10318388B2 (en) Datasets profiling tools, methods, and systems
CN111666302A (zh) 用户排名的查询方法、装置、设备及存储介质
CN110968267B (zh) 数据管理方法、装置、服务器及系统
CN110413617B (zh) 一种根据数据量的大小动态调节哈希表组的方法
CN113779955B (zh) 一种差异脚本的生成方法、装置和存储介质
US11301448B2 (en) Method and system of a secondary index in a distributed data base system
JP5953262B2 (ja) データ索引装置、データ索引方法及びプログラム
US10713305B1 (en) Method and system for document search in structured document repositories
JP5953277B2 (ja) データ索引装置、データ索引方法及びプログラム
CN118708611A (zh) 基于llm实现数据库精准输出的系统及方法

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: 11878592

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013551059

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 14369029

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 11878592

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 11878592

Country of ref document: EP

Kind code of ref document: A1