WO2016117007A1 - Database system and database management method - Google Patents

Database system and database management method Download PDF

Info

Publication number
WO2016117007A1
WO2016117007A1 PCT/JP2015/051249 JP2015051249W WO2016117007A1 WO 2016117007 A1 WO2016117007 A1 WO 2016117007A1 JP 2015051249 W JP2015051249 W JP 2015051249W WO 2016117007 A1 WO2016117007 A1 WO 2016117007A1
Authority
WO
WIPO (PCT)
Prior art keywords
database
version
unit
data
updated
Prior art date
Application number
PCT/JP2015/051249
Other languages
French (fr)
Japanese (ja)
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 PCT/JP2015/051249 priority Critical patent/WO2016117007A1/en
Publication of WO2016117007A1 publication Critical patent/WO2016117007A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Definitions

  • the present invention generally relates to database management.
  • a method of acquiring a database snapshot in the database development environment and executing a transaction for the snapshot is conceivable.
  • database snapshots or transactions for example, techniques of Patent Documents 1 and 2 are known.
  • the database snapshot has only one generation and is read-only. When the transaction is confirmed, the snapshot is switched to a new generation (return). For this reason, it is not suitable to simply use a database snapshot in a development environment.
  • the development environment is made weaker than the production environment (for example, if servers and storage that are less reliable than the production environment are introduced), testing in the development environment will be insufficient, and the reliability of the production environment will be reduced. (For example, failures that cannot be found in the development environment may occur in the production environment).
  • a first individual execution unit that executes a transaction for the database (first database) of the first version (for example, production environment)
  • a version management unit that generates an additional database that is a snapshot of the first database at the time and an additional individual execution unit that executes transactions for the additional database.
  • the version management unit updates the ID of the row to be updated and the update each time a row of any database among all databases corresponding to all the individual execution units including at least the first individual execution unit is updated.
  • An entry which is information including the updated data stored in the row to be updated and the version ID corresponding to the individual execution unit to be updated is added to the history information.
  • the “storage unit” may be one or more storage devices including a memory.
  • the storage unit may be at least a main storage device of a main storage device (typically a volatile memory) and an auxiliary storage device (typically a nonvolatile storage device).
  • PDEV indicates a physical storage device, and may typically be a nonvolatile storage device (for example, an auxiliary storage device).
  • the PDEV may be, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • processing may be described using a functional unit (eg, version management unit, simultaneous execution control unit, etc.) as the subject, but the functional unit is programmed by a processor (eg, CPU (Central Processing Unit)). Since the predetermined processing is performed by using the storage unit (for example, memory) and / or the interface device (for example, communication port) as appropriate, the subject of the processing may be a processor.
  • the processing described with the functional unit as the subject may be processing performed by a processor or an apparatus or system having the processor.
  • the processor may include a hardware circuit that performs a part or all of the processing. At least a part of the plurality of functional units may be realized by a hardware circuit.
  • the program may be installed in a computer-like device from a program source.
  • the program source may be, for example, a storage medium that can be read by a program distribution server or a computer.
  • the program distribution server may include a processor (for example, a CPU) and a storage unit, and the storage unit may further store a distribution program and a program to be distributed. Then, the processor of the program distribution server executes the distribution program, so that the processor of the program distribution server may distribute the distribution target program to other computers.
  • two or more functional units may be realized as one functional unit, or one functional unit may be realized as two or more functional units.
  • FIG. 1 is a configuration diagram of a computer system according to the embodiment.
  • the computer system 1 includes a plurality (or one) of client computers 100, a database server (an example of a database system) 200, and an external storage device 300.
  • the client computer 100 and the database server 200 are connected via a communication network (for example, a LAN (Local Area Network)) 10.
  • a communication network for example, a LAN (Local Area Network) 10.
  • the client computer 100 executes processing using database data. For example, the client computer 100 issues a database query to the database server 200 in the process.
  • the external storage apparatus 300 has one or more PDEVs and can store all or part of the database.
  • the external storage apparatus 300 may not be provided. That is, the entire database may be stored in the memory 220 described later, and the database server 200 may be an in-memory database.
  • the database server 200 includes a CPU 210, a memory 220, a NIC (Network Interface Card) 230, and an HBA (Host Bus Adapter) 240.
  • the NIC 230 is an interface device that communicates with the client computer 100 via the communication network 10.
  • the HBA 240 is an interface device that communicates with the external storage apparatus 300.
  • the memory 220 stores a program for realizing a functional unit (a program for executing processing) and management information referred to by at least one functional unit.
  • the memory 220 may store at least a part of the database.
  • the memory 220 stores a database engine program and management information.
  • the CPU 210 functions as a database engine 400 as shown in FIG. 2 by executing the database engine program.
  • the management information includes, for example, overall update history information and individual update history information, which will be described later.
  • FIG. 2 is a configuration diagram of the database engine 400.
  • the database engine 400 is an example of a database management system (DBMS), and includes a query processing unit 410, a simultaneous execution control unit 420, a data conversion unit 430, a resource management unit 440, a data comparison unit 450, and a query saving unit. 460, fast-forward unit 470, speculative execution unit 480, and version management unit 490.
  • DBMS database management system
  • the query processing unit 410 generates a query execution plan for executing the query received from the client computer 100.
  • the query is described in, for example, SQL (Structured Query Language).
  • the source of the query may be a source other than the client computer 100, for example, a program (for example, an application program) that is an upper program of the database engine 400 and is executed inside or outside the database server 200.
  • the query processing unit 410 can determine which version of a plurality of versions (production environment / development environment, etc.) the received query is, and associate the query with the version.
  • the query is executed by the concurrent execution control unit 420 corresponding to the version associated with the query.
  • the simultaneous execution control unit 420 is an example of an individual execution unit, and executes a query to the database based on a query execution plan.
  • the simultaneous execution control unit 420 controls the simultaneous execution of a plurality of transactions for one version of the database by, for example, MVCC (MultiVersion Concurrency Control).
  • MVCC MultiVersion Concurrency Control
  • the concurrent execution control unit 420 is generated for each version (environment) of the database.
  • the data conversion unit 430 converts the data including confidential attribute values (for example, name, telephone number, address, credit card number) in the database to make it impossible to specify the attribute value of the data. (Hereinafter, anonymization processing) is executed. For example, the data conversion unit 430 manages, for each database version, whether or not to execute the anonymization process and an anonymization method in the case of executing the anonymization process. The data conversion unit 430 converts (anonymizes) the data including the confidential attribute value in the target version database according to the anonymization method corresponding to the version.
  • confidential attribute values for example, name, telephone number, address, credit card number
  • anonymization processing is executed.
  • the data conversion unit 430 manages, for each database version, whether or not to execute the anonymization process and an anonymization method in the case of executing the anonymization process.
  • the data conversion unit 430 converts (anonymizes) the data including the confidential attribute value in the target version database according to the anonymization method corresponding to the version.
  • the resource management unit 440 manages resource constraints (for example, CPU usage rate, memory bandwidth, etc.) for each database version.
  • the resource constraint represents a usable resource amount (amount of resource portion) among resources (CPU, memory, etc.) of the database server 200.
  • the resource management unit 440 controls the amount of resources allocated to the database version (the concurrent execution control unit 420 corresponding to the version) according to the resource constraint corresponding to the database version.
  • the data comparison unit 450 compares a plurality of processing results respectively corresponding to a plurality of programs using a plurality of version databases.
  • the data comparison unit 450 outputs the comparison result (for example, outputs it to the client computer 100).
  • the query saving unit 460 accumulates the query so as to be identifiable for each database version.
  • the fast-forward unit 470 executes one or more queries corresponding to the version among the queries stored in the query saving unit 460 for any version of the database. Thereby, it can be expected to reproduce the CPU load or the like according to the execution of one or more queries corresponding to the database of that version.
  • the speculative execution unit 480 causes the simultaneous execution control unit 420 to execute a query using a plurality of query execution plans generated by the query processing unit 410.
  • the version management unit 490 manages a plurality of versions of the database.
  • the version management unit 490 includes a data access unit 491, an area collection unit 492, a data saving unit 493, a starting point setting unit 494, a version creation unit 495, and a branch identification unit 496. Each process of the function units 491 to 496 will be described later.
  • FIG. 3 shows the entire update history information.
  • the whole update history information 221 is information managed by the version management unit 490, and represents the update history of the database table for all versions. Specifically, the overall update history information 221 has an entry for each update transaction. Each entry stores a row ID 311, data (attribute value) 312, TR_ID 313, BR_ID 314, and TIME 315.
  • the row ID 311 is an ID of an added row (database table row).
  • Data 312 is updated data.
  • TR_ID 313 is an ID of the update transaction.
  • BR_ID 314 is an ID of the version of the database including the row added by the update transaction.
  • the TIME 315 stores information indicating the row update order (or update time).
  • the value of TIME 315 may be a value that can specify the update order (addition order).
  • BR_ID “n” (n is an integer of 0 or more) may be expressed as “version #n”.
  • a database of version #n or a table thereof may be referred to as “database #n” or “table #n”.
  • a row having a row ID “m” (m is an integer of 0 or more) may be referred to as “row #m”.
  • a transaction with TR_ID “p” (p is an integer of 0 or more) may be referred to as “transaction #p”.
  • the individual update history information 600 represents the update history of the database (table) updated by the simultaneous execution control unit 420 and is managed by the simultaneous execution control unit 420. Therefore, the individual update history information 600 has an entry for each transaction, and each entry has a row ID 601, data (attribute value) 602, and TR_ID 603, but BR_ID is not included in the individual update history information 600 (simultaneously. The BR_ID is not recognized (conscious) by the execution control unit 420).
  • the individual update history information 600 corresponding to the version #m corresponding to the simultaneous execution control unit 420 may be referred to as “individual update history information #m”. Therefore, FIG. 4A shows individual update history information # 0, FIG. 4B shows individual update history information # 1, and FIG. 4C shows individual update history information # 2.
  • the simultaneous execution control unit 420 corresponding to version #m may be referred to as “simultaneous execution control unit #m”.
  • the concurrent execution control unit #m executes a transaction for the database #m (table #m).
  • rows # 0 to # 2 are stored in table # 0 by the transactions # 0 to # 3 of the simultaneous execution control unit # 0, respectively. Added. As a result, the addition of rows # 0 to # 2 (data “A” to “C”) is recorded in the individual update history information # 0 by the simultaneous execution control unit # 0, and the entire update history is recorded by the version management unit 490. Information 221 is recorded. At this point, no version other than version # 0 exists.
  • Version # 1 is added after TIME “2”, and concurrent execution control unit # 1 is added (generated) accordingly.
  • the reference of the additional version is a database of a predetermined version (here, version # 0 (for example, production environment)) at the time of version addition. Therefore, up to TIME “3”, the table # 1 seen from the concurrent execution control unit # 1 and the table # 0 seen from the concurrent execution control unit # 0 are the same. That is, both table # 1 and table # 0 hold data “A” to “C” stored in rows # 0 to # 2, respectively.
  • version #k (k is an integer equal to or greater than 1) is added based on version # 0
  • concurrent execution control unit #k is added, and added concurrent execution control unit #k. Table #k will be visible.
  • the table #k at the time of version addition is not a copy of the table # 0 at the time of version addition, but a snapshot of the table # 0 at the time of version addition. Therefore, it is not necessary to copy the table # 0 (data
  • row # 3 (data “D”) is added to table # 1 by transaction # 3 of concurrent execution control unit # 1.
  • the addition of row # 3 (data “D”) is recorded in the individual update history information # 1 by the concurrent execution control unit # 1 and is recorded in the overall update history information 221 by the version management unit 490.
  • update the table # 1 such as adding data. Updates such as data addition are not actually reflected in the database, but are recorded in history information (log information) such as individual update history information # 1 and overall update history information 221. Thereby, a substantial update to the snapshot of Table # 0 is possible. Note that updating both the individual update history information # 1 and the overall update history information 221 is an example.
  • each individual update history information is included in the overall update history information 221, there is no individual update history information, and the simultaneous execution control unit 420 uses the BR_ID to determine each environment from the overall update history information 221. You may judge how you see it. That is, an example of the history information may be both the individual update history information and the overall update history information, or may be one of the individual update history information and the overall update history information (for example, the overall update history information).
  • row # 3 (data “E”) is added to table # 0 by transaction # 4 of concurrent execution control unit # 0.
  • the addition of row # 3 (data “E”) is recorded in the individual update history information # 0 by the concurrent execution control unit # 0, and is recorded in the overall update history information 221 by the version management unit 490. Therefore, the data “E” in row # 3 is referred to in version # 0 (for example, the production environment), but is not referred to other than version # 0 (version # 1 (for example, the first development environment)). That is, the addition of row # 3 (data “E”) is not recorded in the individual update history information other than the individual update history information # 0. Therefore, data “E” does not exist in row # 3 of table # 1.
  • Version # 2 is added after TIME “4”.
  • the reference for the additional version is a database of version # 0 (for example, production environment) at the time of version addition. Therefore, up to TIME “4”, the table # 2 seen from the concurrent execution control unit # 2 and the table # 0 seen from the concurrent execution control unit # 0 are the same. That is, both the table # 2 and the table # 0 hold the data “A” to “C” and “E” stored in the rows # 0 to # 3, respectively.
  • row # 3 (data “F”) is added to table # 2 by transaction # 5 of concurrent execution control unit # 2. That is, the data in row # 3 is updated from “E” to “F”.
  • the addition of row # 3 (data “F”) is recorded in the individual update history information # 2 by the concurrent execution control unit # 2, and is recorded in the overall update history information 221 by the version management unit 490.
  • Data “F” in row # 3 is referred to in version # 2 (for example, the second development environment), but other than version # 2 (for example, version # 0 (for example, the production environment) and version # 1 (for example, the first development environment). It is not referenced in the environment)). That is, the addition of row # 3 (data “F”) is not recorded in the individual update history information other than the individual update history information # 2. Therefore, data “F” does not exist in row # 3 of table # 0 and row # 3 of table # 1.
  • row # 2 (data “F”) is added to table # 0 by transaction # 6 of concurrent execution control unit # 0. That is, the data in row # 2 is updated from “C” to “F”.
  • the addition of row # 2 (data “F”) is recorded in the individual update history information # 0 by the concurrent execution control unit # 0, and is recorded in the overall update history information 221 by the version management unit 490.
  • the data “F” in row # 2 is referred to in version # 0, but is not referred to in versions other than version # 0 (version # 1 and version # 2). That is, the addition of row # 2 (data “F”) is not recorded in the individual update history information other than the individual update history information # 0. Therefore, data “F” does not exist in row # 2 of table # 1 and row # 2 of table # 2.
  • the version management unit 490 manages the update history of the database (table) for all versions, and the concurrent execution control unit #m manages the update history only for the version (m) database (table).
  • the version By adding the version, the development environment can be increased, and the database (table) can be updated in each development environment.
  • version #k (k is an integer equal to or greater than 1)
  • a concurrent execution control unit #k is generated, and thus a table #k that can be seen only by the concurrent execution control unit #k is created.
  • the reference table # 0 is not required to be copied.
  • the concurrent execution control unit #k (for example, the kth development environment) is executed by the database server 200 that executes the concurrent execution control unit # 0 (for example, the production environment). For this reason, it is possible to construct a development environment (test environment) equivalent to the present application environment without introducing a server and storage equivalent to the production environment. Therefore, a development environment equivalent to the production environment can be constructed quickly and at low cost.
  • the concurrent execution control unit 420 and the version management unit 490 are included in the database engine 400. This eliminates the need for a so-called proxy server or storage, and makes it easy to handle in-memory databases.
  • version #k not only the addition of version #k, it is also possible to delete version #k (for example, delete unnecessary development environment).
  • the simultaneous execution control unit #k corresponding to the version #k to be deleted is also deleted.
  • the area for storing the data K is recovered by the garbage collection process. (The area may be managed as an empty area).
  • the concept of this embodiment is not a replacement or diversion of a so-called general version management technique. Version control technology cannot simply be applied to database management technology. This is because a database normally manages data in units of rows, but a version management technique copies files and manages versions in units of files. Database and file are different. The database is structured data, the file is unstructured data, and one file can include a plurality of types of information. Therefore, if the normal version management technique is diverted to the database management technique, it is necessary to copy the database and perform version management. However, as described above, it is not necessary to copy the database (table) in this embodiment. Therefore, the concept of this embodiment is not a replacement or diversion of a so-called general version management technique. In this embodiment, a row-oriented database is adopted, but a column-oriented database (data management in units of columns) may be adopted instead of the row-oriented database.
  • the concept of this embodiment is not a replacement or diversion of so-called virtual machine technology.
  • data referred to by a virtual machine is not referred to by another virtual machine. Data is independent for each virtual machine, and therefore data unnecessary for the virtual machine can be deleted immediately.
  • data in the database may be shared by a plurality of simultaneous execution control units 420, and data recognized by at least one simultaneous execution control unit 420 cannot be deleted. Therefore, the concept of this embodiment is not a replacement or diversion of so-called virtual machine technology.
  • FIG. 5 is a flowchart of the snapshot creation process.
  • the version creation unit 495 receives a setting of a time point (TIME) when a new version is added to the database, for example, from the user via the client computer 100 (S501).
  • the version creation unit 495 refers to the overall update history information 221 and acquires the transaction ID (TR_ID) corresponding to the received time point (TIME) (S502). Note that the state of the database at the end of the transaction of TR_ID is the starting point of the new version. In the above process, TR_ID is acquired from TIME, but TR_ID may be directly received.
  • the starting point setting unit 494 identifies the BR_ID indicating the version to which the transaction of TR_ID belongs, and generates the BR_ID as a reference destination ID indicating the version serving as the reference destination (starting point) (S503).
  • the starting point setting unit 494 generates a new BR_ID for the new version, and generates a concurrent execution control unit 420 that associates the reference destination ID with the new BR_ID (S504).
  • a new version of the database starting from the state of the database at a certain point in time can be newly added.
  • FIG. 6 is a flowchart of the data writing process.
  • the data access unit 491 acquires the row ID of the write target row and the write target data from the simultaneous execution control unit 420 (S601). Next, the data access unit 491 acquires the TR_ID assigned to the transaction to be written from the simultaneous execution control unit 420 (S602).
  • the data access unit 491 acquires the BR_ID indicating the version of the database managed by the simultaneous execution control unit 420 from the simultaneous execution control unit 420 (S603).
  • the data access unit 491 acquires the current TIME (for example, the current time) (S604).
  • the data access unit 491 stores an entry including the acquired row ID, TR_ID, BR_ID, TIME, and data in the overall update history information 221 (S605).
  • FIG. 7 is a flowchart of the data reading process.
  • the data access unit 491 acquires the row ID of the row to be read from the simultaneous execution control unit 420 (S701). Next, the data access unit 491 acquires BR_ID indicating the version of the database managed by the simultaneous execution control unit 420 (S702), and passes the acquired row ID and BR_ID to the branch identification unit 496.
  • the branch identifying unit 496 determines whether data corresponding to the acquired row ID and BR_ID exists in the overall update history information 221 (S703).
  • the data access unit 491 reads the data from the overall update history information 221 and passes it to the simultaneous execution control unit 420 (S704).
  • the data is output from the simultaneous execution control unit 420.
  • the branch identification unit 496 determines whether the reference source ID corresponding to the BR_ID version database exists in the simultaneous execution control unit 420 (individual update history information 600). It is determined whether or not (S705).
  • the branch identification unit 496 sets this reference destination ID as BR_ID (S706), and advances the process to S703. As a result, the processing from S703 onward is further executed, and data corresponding to the version database corresponding to BR_ID (reference source ID) is searched.
  • a process for sequentially searching whether or not data corresponding to the version database exists that is, a process for searching for data by sequentially tracing the version database of the reference destination is performed.
  • S705 If the determination result in S705 is negative (S705: NO), it means that there is no row to be read, so the data access unit 491 notifies the concurrent execution control unit 420 of a row ID error (S707).
  • FIG. 8 is a flowchart of the garbage collection process.
  • the garbage collection process is a process of identifying data that is not referred to by any concurrent execution control unit 420 and collecting an area in which the data is stored.
  • the collected area is managed as an empty area where data can be newly stored.
  • the area to be collected is not referred to by any of the concurrent execution control units 420 and the area storing entries (entries of the entire update history information 221) corresponding to rows / data not referenced by any concurrent execution control unit 420. It may be at least one of the database area corresponding to the row / data.
  • the garbage collection process is executed at an arbitrary time point and may be executed repeatedly.
  • the area collection unit 492 determines whether or not there is an unprocessed line (process target line) in the overall update history information 221 (S801).
  • the area collection unit 492 acquires the row ID, TR_ID, and BR_ID of an unprocessed row as a processing target (S802).
  • the area collection unit 492 is a row having the same row ID as the processing target row ID, and the same BR_ID as the processing target BR_ID or the same reference source ID associated with the processing target BR_ID. It is determined whether or not there is a row that includes BR_ID and whose TIME is before the TIME of the row to be processed (S803). If the determination result in S803 is affirmative (S803: YES), the area collection unit 492 sets a retrievable mark for the line (S804), and advances the process to S801.
  • a dedicated field for the recoverable mark may be provided in the row of the overall update history information 221 and set in this field. You may make it store including.
  • the area collection unit 492 determines whether or not there are rows (processing target rows) in which the S806 and S807 are not processed in the overall update history information 221. Judgment is made (S805). If the determination result in S805 is affirmative (S805: YES), the area collection unit 492 determines whether or not a collectable mark has been set in an unprocessed line (S806).
  • the area collection unit 492 collects the area where the data of the corresponding row is stored (S807), and advances the process to S805.
  • the duplicate line in the same version or the reference version line duplicated with this version is deleted from the memory 220 (the area is collected and a free area is created). For this reason, the memory 220 can be used effectively.
  • the data saving unit 493 may temporarily save the deleted row in a predetermined storage area.
  • S805 If the determination result in S805 is negative (S805: NO), it means that the collection of the area has been determined for all rows, and the area collection unit 492 ends the garbage collection process.
  • the area collection by the area collection unit 492 is not limited to the above processing.
  • the row corresponding to the BR_ID of the version database to be deleted may be deleted from the overall update history information 221. If another version of the database is created based on the state of the database of a certain version at a predetermined time, the line corresponding to the state of the certain version of the database at the predetermined time , Don't be deleted.
  • FIG. 9 is a flowchart of the anonymization process.
  • Anonymization processing is processing that makes it impossible to specify an attribute value of data by converting data including confidential attribute values (for example, name, telephone number, address, credit card number).
  • the anonymization process is performed on the data read out in S704 of FIG. 7, for example.
  • the data conversion unit 430 acquires the row ID, column ID (attribute ID), BR_ID, and data for the row acquired in S704 (S901). Next, the data conversion unit 430 determines whether or not the data in this row has been updated after creating this version of the database (S902). Whether or not the data has been updated can be specified by whether or not the BR_ID of the row corresponding to the row ID is the BR_ID associated with the concurrent execution control unit 420 that has requested this data. Specifically, when the BR_ID of the row corresponding to the row ID is the BR_ID associated with the simultaneous execution control unit 420, it can be determined that the update has been completed.
  • S902 If the determination result in S902 is affirmative (S902: YES), it means that the data has already been anonymized, so the data conversion unit 430 returns the acquired data to the simultaneous execution control unit 420 (S903). .
  • the data conversion unit 430 determines whether the anonymization method corresponding to BR_ID has been set in the data conversion unit 430 (S904). If the determination result in S904 is negative (S904: NO), there is no need to anonymize this data, and the data conversion unit 430 advances the process to S903.
  • the data conversion unit 430 acquires an anonymization method for the column ID of the column in the data (S905).
  • the data may include, for example, a column (attribute value) such as a name, a credit card, a telephone number, and an address, and there is an appropriate anonymization method depending on the attribute.
  • the anonymization method according to an attribute it can be set as a well-known arbitrary method.
  • the data conversion unit 430 anonymizes each column (attribute value) of the data by the acquired anonymization method (S906), and returns the anonymized data to the simultaneous execution control unit 420 (S907).
  • anonymized data can be used as data of a certain version of the database, and it is possible to avoid leakage of confidential attribute values. Further, since the anonymization process is performed every time data is read out, it is not necessary to anonymize and store the data in advance, and the anonymized data can be provided quickly at a necessary time. Further, the data conversion unit 430 can perform anonymization processing only for data read from a database of a version other than version # 0. For example, only attribute values that should be kept secret in the development environment are converted, and anonymization processing may not be performed in the production environment.
  • FIG. 10 is a flowchart of the resource control process.
  • Resource control processing is to control the amount of available resources for each version (environment). For example, after the database engine 400 receives a query, the amount of resources used to process the version of the database associated with the query is controlled at a predetermined point in time (eg, before performing the data read process).
  • the resource management unit 440 acquires the BR_ID indicating the version of the database to be processed from the simultaneous execution control unit 420 (S1001). Next, the resource management unit 440 determines whether or not a resource constraint condition is set for the acquired BR_ID version database (S1002). If the determination result in S1002 is negative (S1002: NO), the resource management unit 440 advances the process to S1006.
  • the resource management unit 440 acquires the resource constraint condition corresponding to BR_ID (S1003), and acquires the resource usage status in the database processing of the BR_ID version (S1004). ).
  • the resource management unit 440 determines whether or not the acquired resource usage condition satisfies the resource constraint condition (S1005). If the determination result in S1005 is affirmative (S1005: YES), the resource management unit 440 advances the process to S1006.
  • the resource management unit 440 causes a process (for example, a data read process) to be performed on the acquired BR_ID version database.
  • the resource management unit 440 waits for execution of processing (for example, data read processing) on the acquired BR_ID version database (S1007), and the processing is performed in S1004. Proceed to
  • the process for a certain version of the database is controlled according to the resource constraint condition. Therefore, for example, it is possible to reduce the adverse effect of the processing on the production environment database due to the processing on the development environment (test environment) database.
  • the version creation unit 495 does not specify a new version of a new version in a consistent state at a predetermined timing (for example, monthly, weekly, daily timing).
  • the database may be added automatically.
  • the new version of the added database is saved without being updated, and by using that database, a consistent past state is maintained from another version of the database that has been altered. You can expect to revert to the database version you have.
  • the query save unit 460 saves a query for the database of the reference version, and later, the fast-forward unit 470 adds the new version database (query is being executed).
  • the query stored in the query saving unit 460 may be executed on the server that is not present. Thereby, it can be expected that the CPU load or the like in the database processing is reproduced.
  • the first query issued by the first program is executed using the database of the first version (for example, the reference version # 0), and the second version
  • the processing of the second query issued by the second program may be executed using a database of the version (for example, a new version).
  • Each of the first and second programs may be an example of a query source.
  • the first version database and the second version database may have the same contents.
  • the data comparison unit 450 compares the state (result) of the first version database used by the first program with the state (result) of the second version database used by the second program.
  • the comparison result (for example, information on whether or not the same state (result) is obtained by both programs) may be output. As a result, the operation of the program can be verified.
  • the query processing unit 410 may generate a plurality of query execution plans for the same query.
  • the speculative execution unit 480 may cause two or more simultaneous execution control units 420 respectively corresponding to two or more versions to execute two or more query execution plans.
  • the speculative execution unit 480 may use a database of a version in which the query execution plan that has obtained the earliest result is executed as a database used for subsequent processing. Thereby, it can be expected to execute the query quickly.
  • processing by a new program may be executed using the new version database.
  • the data comparison unit 450 may merge the table into the reference version database within a range where the execution result is, for example, a table as a unit and there is no problem in consistency. As a result, it can be expected that the execution result of the new program development environment is appropriately reflected in the production environment.
  • Computer system 100 Client computer 200: Database server 400: Database engine

Abstract

Provided is a database system, comprising a first discrete execution unit which executes a transaction upon a database (first database) of a first version (e.g., runtime environment), and a version management unit which, with each added version (e.g., additional development environment), generates an additional database which is a snapshot of the first database at the time that the version is added and an additional discrete execution unit which executes the transaction upon the additional database. With each update of a row of any database among all of the databases corresponding to each of all of the discrete execution units including at least the first discrete execution unit, the version management unit adds to history information an entry which is information including the ID of the updated row, the post-update data stored in the updated row, and the ID of the version corresponding to the discrete execution unit which carries out the update.

Description

データベースシステム及びデータベース管理方法Database system and database management method
 本発明は、概して、データベース管理に関する。 The present invention generally relates to database management.
 データベースの開発環境に、データベースのスナップショットを取得しそのスナップショットに対してトランザクションを実行する方法が考えられる。データベースのスナップショット又はトランザクションに関し、例えば、特許文献1及び2の技術が知られている。  A method of acquiring a database snapshot in the database development environment and executing a transaction for the snapshot is conceivable. With regard to database snapshots or transactions, for example, techniques of Patent Documents 1 and 2 are known.
特開平5-6297号公報JP-A-5-6297 特表2007-531156号公報JP-T 2007-53156
 データベースのスナップショットは、1世代しか存在せず、また、読出し専用であり、トランザクションが確定した段階で新しい世代に切り替わる(戻る)。このため、データベーススナップショットを開発環境に単純に利用することは適していない。 The database snapshot has only one generation and is read-only. When the transaction is confirmed, the snapshot is switched to a new generation (return). For this reason, it is not suitable to simply use a database snapshot in a development environment.
 データベースの開発環境として本番環境と同等の開発環境を構築するためには、本番環境に含まれるサーバやストレージと同等のサーバやストレージを導入する必要がある。また、データベースのコピーも必要になる。このため、環境構築の準備期間が長くなり、コストが大きくなる。 In order to build a development environment equivalent to the production environment as the database development environment, it is necessary to introduce a server and storage equivalent to the server and storage included in the production environment. You will also need a copy of the database. For this reason, the preparation period of environment construction becomes long and cost becomes large.
 この問題を回避しようと、開発環境を本番環境よりも貧弱にすると(例えば、本番環境よりも低信頼性のサーバやストレージを導入すると)、開発環境でのテストが不十分となり、本番環境の信頼性が低下し得る(例えば、開発環境で発見できない障害が本番環境で発生し得る)。 In order to avoid this problem, if the development environment is made weaker than the production environment (for example, if servers and storage that are less reliable than the production environment are introduced), testing in the development environment will be insufficient, and the reliability of the production environment will be reduced. (For example, failures that cannot be found in the development environment may occur in the production environment).
 データベースシステムが、第1のバージョン(例えば本番環境)のデータベース(第1のデータベース)に対するトランザクションを実行する第1の個別実行部と、バージョンの追加(例えば開発環境追加)の都度に、そのバージョン追加時の第1のデータベースのスナップショットである追加のデータベースと、その追加のデータベースに対するトランザクションを実行する追加の個別実行部とを生成するバージョン管理部とを有する。バージョン管理部は、少なくとも第1の個別実行部を含む全ての個別実行部にそれぞれ対応した全てのデータベースのうちのいずれかのデータベースの行の更新の都度に、更新される行のIDと、更新される行に格納される更新後のデータと、更新を行う個別実行部に対応したバージョンのIDとを含んだ情報であるエントリを履歴情報に追加する。 Each time the database system adds a version (for example, a development environment), a first individual execution unit that executes a transaction for the database (first database) of the first version (for example, production environment) A version management unit that generates an additional database that is a snapshot of the first database at the time and an additional individual execution unit that executes transactions for the additional database. The version management unit updates the ID of the row to be updated and the update each time a row of any database among all databases corresponding to all the individual execution units including at least the first individual execution unit is updated. An entry which is information including the updated data stored in the row to be updated and the version ID corresponding to the individual execution unit to be updated is added to the history information.
 本番環境と同等の開発環境を迅速且つ低コストに構築できる。 Develop a development environment equivalent to the production environment quickly and at low cost.
実施形態に係る計算機システムの構成図である。It is a block diagram of the computer system which concerns on embodiment. データベースエンジンの構成図である。It is a block diagram of a database engine. 全体更新履歴情報を示す。Indicates overall update history information. 個別更新履歴情報#0を示す。Individual update history information # 0 is shown. 個別更新履歴情報#1を示す。Individual update history information # 1 is shown. 個別更新履歴情報#2を示す。Individual update history information # 2 is shown. スナップショット作成処理のフローチャートである。It is a flowchart of a snapshot creation process. データ書き込み処理のフローチャートである。It is a flowchart of a data writing process. データ読み出し処理のフローチャートである。It is a flowchart of a data reading process. ガーベージコレクション処理のフローチャートである。It is a flowchart of a garbage collection process. 匿名化処理のフローチャートである。It is a flowchart of an anonymization process. リソース制御処理のフローチャートである。It is a flowchart of a resource control process.
 以下、一実施形態を説明する。 Hereinafter, an embodiment will be described.
 以下の説明では、「記憶部」は、メモリを含んだ1以上の記憶デバイスでよい。例えば、記憶部は、主記憶デバイス(典型的には揮発性のメモリ)及び補助記憶デバイス(典型的には不揮発性の記憶デバイス)のうちの少なくとも主記憶デバイスでよい。 In the following description, the “storage unit” may be one or more storage devices including a memory. For example, the storage unit may be at least a main storage device of a main storage device (typically a volatile memory) and an auxiliary storage device (typically a nonvolatile storage device).
 また、以下の説明では、「PDEV」は、物理的な記憶デバイスを示し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。 Also, in the following description, “PDEV” indicates a physical storage device, and may typically be a nonvolatile storage device (for example, an auxiliary storage device). The PDEV may be, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
 また、以下の説明では、機能部(例えばバージョン管理部、同時実行制御部等)を主語として処理を説明する場合があるが、機能部は、プログラムがプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。機能部を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置又はシステムが行う処理としてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。複数の機能部のうちの少なくとも一部がハードウェア回路で実現されてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶部を含み、記憶部はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上の機能部が1つの機能部として実現されてもよいし、1つの機能部が2以上の機能部として実現されてもよい。 In the following description, processing may be described using a functional unit (eg, version management unit, simultaneous execution control unit, etc.) as the subject, but the functional unit is programmed by a processor (eg, CPU (Central Processing Unit)). Since the predetermined processing is performed by using the storage unit (for example, memory) and / or the interface device (for example, communication port) as appropriate, the subject of the processing may be a processor. The processing described with the functional unit as the subject may be processing performed by a processor or an apparatus or system having the processor. The processor may include a hardware circuit that performs a part or all of the processing. At least a part of the plurality of functional units may be realized by a hardware circuit. The program may be installed in a computer-like device from a program source. The program source may be, for example, a storage medium that can be read by a program distribution server or a computer. When the program source is a program distribution server, the program distribution server may include a processor (for example, a CPU) and a storage unit, and the storage unit may further store a distribution program and a program to be distributed. Then, the processor of the program distribution server executes the distribution program, so that the processor of the program distribution server may distribute the distribution target program to other computers. In the following description, two or more functional units may be realized as one functional unit, or one functional unit may be realized as two or more functional units.
 図1は、実施形態に係る計算機システムの構成図である。 FIG. 1 is a configuration diagram of a computer system according to the embodiment.
 計算機システム1は、複数(又は1つ)のクライアント計算機100と、データベースサーバ(データベースシステムの一例)200と、外部ストレージ装置300とを有する。クライアント計算機100と、データベースサーバ200とは、通信ネットワーク(例えば、LAN(Local Area Network))10を介して接続されている。 The computer system 1 includes a plurality (or one) of client computers 100, a database server (an example of a database system) 200, and an external storage device 300. The client computer 100 and the database server 200 are connected via a communication network (for example, a LAN (Local Area Network)) 10.
 クライアント計算機100は、データベースのデータを用いて処理を実行する。例えば、クライアント計算機100は、処理において、データベースに対するクエリをデータベースサーバ200に発行する。 The client computer 100 executes processing using database data. For example, the client computer 100 issues a database query to the database server 200 in the process.
 外部ストレージ装置300は、1以上のPDEVを有し、データベースの全部又は一部を記憶することができる。外部ストレージ装置300は無くてもよい。すなわち、データベースの全部が後述のメモリ220に格納されていて、データベースサーバ200がインメモリデータベースでもよい。 The external storage apparatus 300 has one or more PDEVs and can store all or part of the database. The external storage apparatus 300 may not be provided. That is, the entire database may be stored in the memory 220 described later, and the database server 200 may be an in-memory database.
 データベースサーバ200は、CPU210と、メモリ220と、NIC(Network Interface Card)230と、HBA(Host Bus Adapter)240とを有する。NIC230は、通信ネットワーク10を介してクライアント計算機100と通信するインターフェースデバイスである。HBA240は、外部ストレージ装置300と通信するインターフェースデバイスである。 The database server 200 includes a CPU 210, a memory 220, a NIC (Network Interface Card) 230, and an HBA (Host Bus Adapter) 240. The NIC 230 is an interface device that communicates with the client computer 100 via the communication network 10. The HBA 240 is an interface device that communicates with the external storage apparatus 300.
 メモリ220は、機能部を実現するためのプログラム(処理を実行するためのプログラム)、及び、少なくとも1つの機能部により参照される管理情報を記憶する。メモリ220は、データベースの少なくとも一部を記憶してもよい。本実施形態では、メモリ220は、データベースエンジンプログラムや、管理情報を記憶する。CPU210は、データベースエンジンプログラムを実行することにより、図2に示すようなデータベースエンジン400として機能する。管理情報は、例えば、後述の全体更新履歴情報及び個別更新履歴情報を含む。 The memory 220 stores a program for realizing a functional unit (a program for executing processing) and management information referred to by at least one functional unit. The memory 220 may store at least a part of the database. In the present embodiment, the memory 220 stores a database engine program and management information. The CPU 210 functions as a database engine 400 as shown in FIG. 2 by executing the database engine program. The management information includes, for example, overall update history information and individual update history information, which will be described later.
 図2は、データベースエンジン400の構成図である。 FIG. 2 is a configuration diagram of the database engine 400.
 データベースエンジン400は、データベース管理システム(DBMS)の一例であり、クエリ処理部410と、同時実行制御部420と、データ変換部430と、リソース管理部440と、データ比較部450と、クエリ退避部460と、早送り部470と、投機実行部480と、バージョン管理部490とを有する。 The database engine 400 is an example of a database management system (DBMS), and includes a query processing unit 410, a simultaneous execution control unit 420, a data conversion unit 430, a resource management unit 440, a data comparison unit 450, and a query saving unit. 460, fast-forward unit 470, speculative execution unit 480, and version management unit 490.
 クエリ処理部410は、クライアント計算機100から受け付けたクエリを実行するためのクエリ実行プランを生成する。ここで、クエリは、例えば、SQL(Structured Query Language)で記述されている。なお、クエリのソースは、クライアント計算機100以外のソース、例えば、データベースエンジン400の上位のプログラムであってデータベースサーバ200の中又は外で実行されるプログラム(例えばアプリケーションプログラム)であってもよい。また、クエリ処理部410は、複数のバージョン(本番環境/開発環境など)のうちのいずれのバージョンについて受け付けたクエリであるかを判断し、クエリとバージョンとを関連付けることができる。クエリは、そのクエリに関連付けられているバージョンに対応した同時実行制御部420により実行される。 The query processing unit 410 generates a query execution plan for executing the query received from the client computer 100. Here, the query is described in, for example, SQL (Structured Query Language). The source of the query may be a source other than the client computer 100, for example, a program (for example, an application program) that is an upper program of the database engine 400 and is executed inside or outside the database server 200. Further, the query processing unit 410 can determine which version of a plurality of versions (production environment / development environment, etc.) the received query is, and associate the query with the version. The query is executed by the concurrent execution control unit 420 corresponding to the version associated with the query.
 同時実行制御部420は、個別実行部の一例であり、クエリ実行プランに基づいてデータベースに対するクエリを実行する。同時実行制御部420は、例えば、MVCC(MultiVersion Concurrency Control)により、データベースの1つのバージョンに対する複数のトランザクションの同時実行を制御する。同時実行制御部420は、データベースのバージョン(環境)毎に生成される。 The simultaneous execution control unit 420 is an example of an individual execution unit, and executes a query to the database based on a query execution plan. The simultaneous execution control unit 420 controls the simultaneous execution of a plurality of transactions for one version of the database by, for example, MVCC (MultiVersion Concurrency Control). The concurrent execution control unit 420 is generated for each version (environment) of the database.
 データ変換部430は、データベースのうち秘匿性のある属性値(例えば、氏名、電話番号、住所、クレジットカード番号)を含んだデータを変換することでそのデータの属性値を特定不可能にする処理(以下、匿名化処理)を実行する。データ変換部430は、例えば、データベースバージョン毎に、匿名化処理を実行するか否かと、匿名化処理を実行する場合の匿名化方法とを管理している。データ変換部430は、対象となるバージョンのデータベースのうち秘匿性のある属性値を含んだデータを、そのバージョンに対応した匿名化方法に従い変換(匿名化)する。 The data conversion unit 430 converts the data including confidential attribute values (for example, name, telephone number, address, credit card number) in the database to make it impossible to specify the attribute value of the data. (Hereinafter, anonymization processing) is executed. For example, the data conversion unit 430 manages, for each database version, whether or not to execute the anonymization process and an anonymization method in the case of executing the anonymization process. The data conversion unit 430 converts (anonymizes) the data including the confidential attribute value in the target version database according to the anonymization method corresponding to the version.
 リソース管理部440は、データベースバージョン毎のリソース制約(例えば、CPU利用率、メモリバンド幅等)を管理する。リソース制約は、データベースサーバ200のリソース(CPU、メモリ等)のうち使用可能なリソース量(リソース部分の量)を表す。リソース管理部440は、データベースバージョン(そのバージョンに対応した同時実行制御部420)に割り当てるリソース量を、そのデータベースバージョンに対応したリソース制約に従い制御する。 The resource management unit 440 manages resource constraints (for example, CPU usage rate, memory bandwidth, etc.) for each database version. The resource constraint represents a usable resource amount (amount of resource portion) among resources (CPU, memory, etc.) of the database server 200. The resource management unit 440 controls the amount of resources allocated to the database version (the concurrent execution control unit 420 corresponding to the version) according to the resource constraint corresponding to the database version.
 データ比較部450は、複数のバージョンのデータベースをそれぞれ利用した複数のプログラムにそれぞれ対応する複数の処理結果を比較する。データ比較部450は、その比較結果を出力(例えば、クライアント計算機100に出力)する。 The data comparison unit 450 compares a plurality of processing results respectively corresponding to a plurality of programs using a plurality of version databases. The data comparison unit 450 outputs the comparison result (for example, outputs it to the client computer 100).
 クエリ退避部460は、データベースバージョン毎にクエリを識別可能に蓄積する。 The query saving unit 460 accumulates the query so as to be identifiable for each database version.
 早送り部470は、いずれかのバージョンのデータベースに対して、クエリ退避部460に蓄積されたクエリのうちそのバージョンに対応する1以上のクエリを実行する。これにより、そのバージョンのデータベースに対応する1以上のクエリの実行に従うCPU負荷等を再現することが期待できる。 The fast-forward unit 470 executes one or more queries corresponding to the version among the queries stored in the query saving unit 460 for any version of the database. Thereby, it can be expected to reproduce the CPU load or the like according to the execution of one or more queries corresponding to the database of that version.
 投機実行部480は、クエリ処理部410により生成された複数のクエリ実行プランを用いて同時実行制御部420にクエリを実行させる。 The speculative execution unit 480 causes the simultaneous execution control unit 420 to execute a query using a plurality of query execution plans generated by the query processing unit 410.
 バージョン管理部490は、データベースの複数のバージョンを管理する。バージョン管理部490は、データアクセス部491と、領域回収部492と、データ退避部493と、起点設定部494と、バージョン作成部495と、ブランチ識別部496とを有する。機能部491~496の各々の処理については後述する。 The version management unit 490 manages a plurality of versions of the database. The version management unit 490 includes a data access unit 491, an area collection unit 492, a data saving unit 493, a starting point setting unit 494, a version creation unit 495, and a branch identification unit 496. Each process of the function units 491 to 496 will be described later.
 図3は、全体更新履歴情報を示す。 FIG. 3 shows the entire update history information.
 全体更新履歴情報221は、バージョン管理部490により管理される情報であり、全てのバージョンについてデータベースの表の更新の履歴を表す。具体的には、全体更新履歴情報221は、更新トランザクション毎にエントリを有する。各エントリが、行ID311、データ(属性値)312、TR_ID313、BR_ID314及びTIME315を記憶する。 The whole update history information 221 is information managed by the version management unit 490, and represents the update history of the database table for all versions. Specifically, the overall update history information 221 has an entry for each update transaction. Each entry stores a row ID 311, data (attribute value) 312, TR_ID 313, BR_ID 314, and TIME 315.
 行ID311は、追加された行(データベースの表の行)のIDである。データ312は、更新後のデータである。TR_ID313は、更新トランザクションのIDである。BR_ID314は、更新トランザクションにより追加された行を含むデータベースのバージョンのIDである。TIME315は、行の更新順番(又は更新時刻)を示す情報が格納される。TIME315の値は、更新順序(追加順序)が特定可能な値であればよい。 The row ID 311 is an ID of an added row (database table row). Data 312 is updated data. TR_ID 313 is an ID of the update transaction. BR_ID 314 is an ID of the version of the database including the row added by the update transaction. The TIME 315 stores information indicating the row update order (or update time). The value of TIME 315 may be a value that can specify the update order (addition order).
 以下、BR_ID「n」(nは0以上の整数)を、「バージョン#n」と表記することがある。また、バージョン#nのデータベース又はそれの表を「データベース#n」又は「表#n」と表記することがある。また、行ID「m」(mは0以上の整数)の行を「行#m」と表記することがある。また、TR_ID「p」(pは0以上の整数)のトランザクションを「トランザクション#p」と表記することがある。 Hereinafter, BR_ID “n” (n is an integer of 0 or more) may be expressed as “version #n”. A database of version #n or a table thereof may be referred to as “database #n” or “table #n”. In addition, a row having a row ID “m” (m is an integer of 0 or more) may be referred to as “row #m”. A transaction with TR_ID “p” (p is an integer of 0 or more) may be referred to as “transaction #p”.
 図4A~図4Cは、それぞれ、図3の全体更新履歴情報221に対応しTIME「6」の時点での個別更新履歴情報600を示す。個別更新履歴情報600は、同時実行制御部420により更新されたデータベース(表)の更新の履歴を表し、その同時実行制御部420により管理される。このため、個別更新履歴情報600は、トランザクション毎にエントリを有し、各エントリが、行ID601、データ(属性値)602及びTR_ID603を有するものの、BR_IDは個別更新履歴情報600に含まれない(同時実行制御部420によりBR_IDは認識(意識)されない)。以下、同時実行制御部420に対応したバージョン#mに対応する個別更新履歴情報600を「個別更新履歴情報#m」と表記することがある。従って、図4Aは、個別更新履歴情報#0を示し、図4Bは、個別更新履歴情報#1を示し、図4Cは、個別更新履歴情報#2を示す。また、以下、バージョン#mに対応する同時実行制御部420を「同時実行制御部#m」と表記することがある。同時実行制御部#mが、データベース#m(表#m)に対するトランザクションを実行する。 4A to 4C show the individual update history information 600 at the time of TIME “6”, corresponding to the overall update history information 221 of FIG. The individual update history information 600 represents the update history of the database (table) updated by the simultaneous execution control unit 420 and is managed by the simultaneous execution control unit 420. Therefore, the individual update history information 600 has an entry for each transaction, and each entry has a row ID 601, data (attribute value) 602, and TR_ID 603, but BR_ID is not included in the individual update history information 600 (simultaneously. The BR_ID is not recognized (conscious) by the execution control unit 420). Hereinafter, the individual update history information 600 corresponding to the version #m corresponding to the simultaneous execution control unit 420 may be referred to as “individual update history information #m”. Therefore, FIG. 4A shows individual update history information # 0, FIG. 4B shows individual update history information # 1, and FIG. 4C shows individual update history information # 2. Hereinafter, the simultaneous execution control unit 420 corresponding to version #m may be referred to as “simultaneous execution control unit #m”. The concurrent execution control unit #m executes a transaction for the database #m (table #m).
 図3及び図4A~図4Cの履歴情報によれば、例えば次のことが言える。 According to the history information of FIG. 3 and FIGS. 4A to 4C, the following can be said, for example.
 すなわち、TIME「0」~「2」において、それぞれ、同時実行制御部#0のトランザクション#0~#3により、表#0に行#0~#2(データ「A」~「C」)が追加される。これにより、行#0~#2(データ「A」~「C」)の追加が、同時実行制御部#0により個別更新履歴情報#0に記録され、且つ、バージョン管理部490により全体更新履歴情報221に記録される。なお、この時点では、バージョン#0以外のバージョンは存在していない。 That is, in TIME “0” to “2”, rows # 0 to # 2 (data “A” to “C”) are stored in table # 0 by the transactions # 0 to # 3 of the simultaneous execution control unit # 0, respectively. Added. As a result, the addition of rows # 0 to # 2 (data “A” to “C”) is recorded in the individual update history information # 0 by the simultaneous execution control unit # 0, and the entire update history is recorded by the version management unit 490. Information 221 is recorded. At this point, no version other than version # 0 exists.
 TIME「2」の後、バージョン#1が追加され、それに伴い、同時実行制御部#1が追加(生成)される。追加バージョンの基準は、バージョン追加時点での所定バージョン(ここではバージョン#0(例えば本番環境))のデータベースである。従って、TIME「3」までは、同時実行制御部#1から見える表#1も、同時実行制御部#0から見える表#0も、同じである。つまり、表#1も表#0も、行#0~#2にそれぞれ格納されているデータ「A」~「C」を保持する。このように、バージョン#0を基準にバージョン#k(kは1以上の整数)が追加されると、同時実行制御部#kが追加されることになり、追加された同時実行制御部#kから表#kが見えることになる。そして、バージョン追加時点の表#kは、バージョン追加時点の表#0のコピーではなく、バージョン追加時点での表#0のスナップショットである。従って、表#0(データベース)のコピーは不要である。 Version # 1 is added after TIME “2”, and concurrent execution control unit # 1 is added (generated) accordingly. The reference of the additional version is a database of a predetermined version (here, version # 0 (for example, production environment)) at the time of version addition. Therefore, up to TIME “3”, the table # 1 seen from the concurrent execution control unit # 1 and the table # 0 seen from the concurrent execution control unit # 0 are the same. That is, both table # 1 and table # 0 hold data “A” to “C” stored in rows # 0 to # 2, respectively. As described above, when version #k (k is an integer equal to or greater than 1) is added based on version # 0, concurrent execution control unit #k is added, and added concurrent execution control unit #k. Table #k will be visible. The table #k at the time of version addition is not a copy of the table # 0 at the time of version addition, but a snapshot of the table # 0 at the time of version addition. Therefore, it is not necessary to copy the table # 0 (database).
 TIME「3」において、同時実行制御部#1のトランザクション#3により、表#1に行#3(データ「D」)が追加される。行#3(データ「D」)の追加が、同時実行制御部#1により個別更新履歴情報#1に記録され、且つ、バージョン管理部490により全体更新履歴情報221に記録される。このように、表#1に対してデータの追加等の更新が可能である。また、データ追加等の更新は、実際にデータベースに反映されるのではなく、個別更新履歴情報#1や全体更新履歴情報221といった履歴情報(ログ情報)に記録される。これにより、表#0のスナップショットに対する実質的な更新が可能である。なお、個別更新履歴情報#1や全体更新履歴情報221の両方を更新することは、一例である。別の例として、例えば、それぞれの個別更新履歴情報が全体更新履歴情報221に含まれていて、個別更新履歴情報が存在せず、全体更新履歴情報221から同時実行制御部420がBR_IDにより各環境での見え方を判断してもよい。すなわち、履歴情報の一例が、個別更新履歴情報と全体更新履歴情報の両方でもよいし、個別更新履歴情報と全体更新履歴情報の一方(例えば全体更新履歴情報)でもよい。 In TIME “3”, row # 3 (data “D”) is added to table # 1 by transaction # 3 of concurrent execution control unit # 1. The addition of row # 3 (data “D”) is recorded in the individual update history information # 1 by the concurrent execution control unit # 1 and is recorded in the overall update history information 221 by the version management unit 490. In this way, it is possible to update the table # 1 such as adding data. Updates such as data addition are not actually reflected in the database, but are recorded in history information (log information) such as individual update history information # 1 and overall update history information 221. Thereby, a substantial update to the snapshot of Table # 0 is possible. Note that updating both the individual update history information # 1 and the overall update history information 221 is an example. As another example, for example, each individual update history information is included in the overall update history information 221, there is no individual update history information, and the simultaneous execution control unit 420 uses the BR_ID to determine each environment from the overall update history information 221. You may judge how you see it. That is, an example of the history information may be both the individual update history information and the overall update history information, or may be one of the individual update history information and the overall update history information (for example, the overall update history information).
 TIME「4」において、同時実行制御部#0のトランザクション#4により、表#0に行#3(データ「E」)が追加される。行#3(データ「E」)の追加が、同時実行制御部#0により個別更新履歴情報#0に記録され、且つ、バージョン管理部490により全体更新履歴情報221に記録される。従って、行#3のデータ「E」は、バージョン#0(例えば本番環境)において参照されるが、バージョン#0以外(バージョン#1(例えば1番目の開発環境))においては参照されない。つまり、個別更新履歴情報#0以外の個別更新履歴情報に、行#3(データ「E」)の追加は記録されない。従って、表#1の行#3にデータ「E」は存在しない。 In TIME “4”, row # 3 (data “E”) is added to table # 0 by transaction # 4 of concurrent execution control unit # 0. The addition of row # 3 (data “E”) is recorded in the individual update history information # 0 by the concurrent execution control unit # 0, and is recorded in the overall update history information 221 by the version management unit 490. Therefore, the data “E” in row # 3 is referred to in version # 0 (for example, the production environment), but is not referred to other than version # 0 (version # 1 (for example, the first development environment)). That is, the addition of row # 3 (data “E”) is not recorded in the individual update history information other than the individual update history information # 0. Therefore, data “E” does not exist in row # 3 of table # 1.
 TIME「4」の後、バージョン#2が追加される。追加バージョンの基準は、バージョン追加時点でのバージョン#0(例えば本番環境)のデータベースである。従って、TIME「4」までは、同時実行制御部#2から見える表#2も、同時実行制御部#0から見える表#0も、同じである。つまり、表#2も表#0も、行#0~#3にそれぞれ格納されているデータ「A」~「C」及び「E」を保持する。 Version # 2 is added after TIME “4”. The reference for the additional version is a database of version # 0 (for example, production environment) at the time of version addition. Therefore, up to TIME “4”, the table # 2 seen from the concurrent execution control unit # 2 and the table # 0 seen from the concurrent execution control unit # 0 are the same. That is, both the table # 2 and the table # 0 hold the data “A” to “C” and “E” stored in the rows # 0 to # 3, respectively.
 TIME「5」において、同時実行制御部#2のトランザクション#5により、表#2に行#3(データ「F」)が追加される。つまり、行#3のデータが「E」から「F」に更新される。行#3(データ「F」)の追加が、同時実行制御部#2により個別更新履歴情報#2に記録され、且つ、バージョン管理部490により全体更新履歴情報221に記録される。行#3のデータ「F」は、バージョン#2(例えば2番目の開発環境)において参照されるが、バージョン#2以外(バージョン#0(例えば本番環境)及びバージョン#1(例えば1番目の開発環境))においても参照されない。つまり、個別更新履歴情報#2以外の個別更新履歴情報に、行#3(データ「F」)の追加は記録されない。従って、表#0の行#3にも表#1の行#3にもデータ「F」は存在しない。 In TIME “5”, row # 3 (data “F”) is added to table # 2 by transaction # 5 of concurrent execution control unit # 2. That is, the data in row # 3 is updated from “E” to “F”. The addition of row # 3 (data “F”) is recorded in the individual update history information # 2 by the concurrent execution control unit # 2, and is recorded in the overall update history information 221 by the version management unit 490. Data “F” in row # 3 is referred to in version # 2 (for example, the second development environment), but other than version # 2 (for example, version # 0 (for example, the production environment) and version # 1 (for example, the first development environment). It is not referenced in the environment)). That is, the addition of row # 3 (data “F”) is not recorded in the individual update history information other than the individual update history information # 2. Therefore, data “F” does not exist in row # 3 of table # 0 and row # 3 of table # 1.
 TIME「6」において、同時実行制御部#0のトランザクション#6により、表#0に行#2(データ「F」)が追加される。つまり、行#2のデータが「C」から「F」に更新される。行#2(データ「F」)の追加が、同時実行制御部#0により個別更新履歴情報#0に記録され、且つ、バージョン管理部490により全体更新履歴情報221に記録される。行#2のデータ「F」は、バージョン#0において参照されるが、バージョン#0以外(バージョン#1及びバージョン#2)においても参照されない。つまり、個別更新履歴情報#0以外の個別更新履歴情報に、行#2(データ「F」)の追加は記録されない。従って、表#1の行#2にも表#2の行#2にもデータ「F」は存在しない。 In TIME “6”, row # 2 (data “F”) is added to table # 0 by transaction # 6 of concurrent execution control unit # 0. That is, the data in row # 2 is updated from “C” to “F”. The addition of row # 2 (data “F”) is recorded in the individual update history information # 0 by the concurrent execution control unit # 0, and is recorded in the overall update history information 221 by the version management unit 490. The data “F” in row # 2 is referred to in version # 0, but is not referred to in versions other than version # 0 (version # 1 and version # 2). That is, the addition of row # 2 (data “F”) is not recorded in the individual update history information other than the individual update history information # 0. Therefore, data “F” does not exist in row # 2 of table # 1 and row # 2 of table # 2.
 以上のように、バージョン管理部490が、全てのバージョンについてデータベース(表)の更新の履歴を管理し、同時実行制御部#mが、バージョン#mのデータベース(表)についてのみ更新の履歴を管理する。バージョンを追加することで、開発環境を増やすことがで、各開発環境において、データベース(表)を更新することができる。バージョン#k(kは1以上の整数)が追加されることで、同時実行制御部#kが生成され、故に、同時実行制御部#kからのみ見える表#kができる。そして、基準となる表#0のコピーは不要である。更に、同時実行制御部#k(例えばk番目の開発環境)は、同時実行制御部#0(例えば本番環境)を実行するデータベースサーバ200により実行される。このため、本番環境と同等のサーバ及びストレージ等を導入すること無しに、本願環境と同等の開発環境(テスト環境)が構築可能である。従って、本番環境と同等の開発環境を迅速且つ低コストに構築できる。 As described above, the version management unit 490 manages the update history of the database (table) for all versions, and the concurrent execution control unit #m manages the update history only for the version (m) database (table). To do. By adding the version, the development environment can be increased, and the database (table) can be updated in each development environment. By adding version #k (k is an integer equal to or greater than 1), a concurrent execution control unit #k is generated, and thus a table #k that can be seen only by the concurrent execution control unit #k is created. The reference table # 0 is not required to be copied. Furthermore, the concurrent execution control unit #k (for example, the kth development environment) is executed by the database server 200 that executes the concurrent execution control unit # 0 (for example, the production environment). For this reason, it is possible to construct a development environment (test environment) equivalent to the present application environment without introducing a server and storage equivalent to the production environment. Therefore, a development environment equivalent to the production environment can be constructed quickly and at low cost.
 また、同時実行制御部420もバージョン管理部490もデータベースエンジン400に含まれている。このため、いわゆるプロキシ用のサーバやストレージ等が不要であり、インメモリデータベースへの対応が容易である。 Also, the concurrent execution control unit 420 and the version management unit 490 are included in the database engine 400. This eliminates the need for a so-called proxy server or storage, and makes it easy to handle in-memory databases.
 バージョン#kの追加に限らず、バージョン#kの削除(例えば不要な開発環境の削除)も可能である。この場合、削除対象のバージョン#kに対応した同時実行制御部#kも削除される。これにより、データベース(表)に、同時実行制御部#kのみから参照されるデータ(この段落でデータ「K」と言う)がある場合、ガーベージコレクション処理により、データKを格納する領域が回収されてもよい(その領域が空き領域として管理されてよい)。 Not only the addition of version #k, it is also possible to delete version #k (for example, delete unnecessary development environment). In this case, the simultaneous execution control unit #k corresponding to the version #k to be deleted is also deleted. Thereby, when there is data (referred to as data “K” in this paragraph) referred to only by the concurrent execution control unit #k in the database (table), the area for storing the data K is recovered by the garbage collection process. (The area may be managed as an empty area).
 本実施形態のコンセプトは、いわゆる一般的なバージョン管理技術の置換又は転用ではない。バージョン管理技術をデータベース管理技術に単純に適用できない。なぜなら、通常、データベースは行単位でデータを管理するが、バージョン管理技術では、ファイルをコピーしファイル単位でバージョンを管理する。データベースとファイルは違う。データベースは構造化データであり、ファイルは非構造化データであり、1つのファイルは複数種類の情報を含むことができる。従って、通常のバージョン管理技術をデータベース管理技術に転用すると、データベースをコピーしてバージョン管理を行う必要がでる。しかし、上述したように、本実施形態ではデータベース(表)のコピーは不要である。従って、本実施形態のコンセプトは、いわゆる一般的なバージョン管理技術の置換又は転用ではない。なお、本実施形態では、行指向データベースが採用されているが、行指向データベースに代えて列指向データベース(列単位でデータ管理)が採用されてもよい。 The concept of this embodiment is not a replacement or diversion of a so-called general version management technique. Version control technology cannot simply be applied to database management technology. This is because a database normally manages data in units of rows, but a version management technique copies files and manages versions in units of files. Database and file are different. The database is structured data, the file is unstructured data, and one file can include a plurality of types of information. Therefore, if the normal version management technique is diverted to the database management technique, it is necessary to copy the database and perform version management. However, as described above, it is not necessary to copy the database (table) in this embodiment. Therefore, the concept of this embodiment is not a replacement or diversion of a so-called general version management technique. In this embodiment, a row-oriented database is adopted, but a column-oriented database (data management in units of columns) may be adopted instead of the row-oriented database.
 また、本実施形態のコンセプトは、いわゆる仮想マシン技術の置換又は転用でもない。一般に、仮想マシン技術において、仮想マシンが参照するデータを別の仮想マシンが参照することは無い。仮想マシン毎にデータは独立しており、故に、仮想マシンにとって不要なデータは直ちに削除されても差し支えない。一方、本実施形態では、データベースのデータが複数の同時実行制御部420に共有されることがあり、少なくとも1つの同時実行制御部420から認識されているデータを削除することはできない。従って、本実施形態のコンセプトは、いわゆる仮想マシン技術の置換又は転用でもない。 Also, the concept of this embodiment is not a replacement or diversion of so-called virtual machine technology. In general, in virtual machine technology, data referred to by a virtual machine is not referred to by another virtual machine. Data is independent for each virtual machine, and therefore data unnecessary for the virtual machine can be deleted immediately. On the other hand, in this embodiment, data in the database may be shared by a plurality of simultaneous execution control units 420, and data recognized by at least one simultaneous execution control unit 420 cannot be deleted. Therefore, the concept of this embodiment is not a replacement or diversion of so-called virtual machine technology.
 図5は、スナップショット作成処理のフローチャートである。 FIG. 5 is a flowchart of the snapshot creation process.
 バージョン作成部495は、データベースに対する新たなバージョンを追加する時点(TIME)の設定を、例えば、ユーザからクライアント計算機100を介して受け付ける(S501)。バージョン作成部495は、全体更新履歴情報221を参照し、受け付けた時点(TIME)に対応するトランザクションのID(TR_ID)を取得する(S502)。なお、このTR_IDのトランザクションの終了時点のデータベースの状態が、新しいバージョンの起点となる。なお、上記処理では、TIMEからTR_IDを取得するようにしていたが、TR_IDを直接受け付けるようにしてよい。 The version creation unit 495 receives a setting of a time point (TIME) when a new version is added to the database, for example, from the user via the client computer 100 (S501). The version creation unit 495 refers to the overall update history information 221 and acquires the transaction ID (TR_ID) corresponding to the received time point (TIME) (S502). Note that the state of the database at the end of the transaction of TR_ID is the starting point of the new version. In the above process, TR_ID is acquired from TIME, but TR_ID may be directly received.
 次に、起点設定部494は、TR_IDのトランザクションが属するバージョンを示すBR_IDを特定し、そのBR_IDを参照先(起点)となるバージョンを示す参照先IDとして生成する(S503)。起点設定部494は、新しいバージョンに対する新しいBR_IDを生成し、参照先IDと、新しいBR_IDとを対応付けた同時実行制御部420を生成する(S504)。 Next, the starting point setting unit 494 identifies the BR_ID indicating the version to which the transaction of TR_ID belongs, and generates the BR_ID as a reference destination ID indicating the version serving as the reference destination (starting point) (S503). The starting point setting unit 494 generates a new BR_ID for the new version, and generates a concurrent execution control unit 420 that associates the reference destination ID with the new BR_ID (S504).
 このスナップショット作成処理によると、或る時点のデータベースの状態を起点とする新たなバージョンのデータベースを新たに追加することができる。また、新たなバージョンのデータベースを追加する際に、起点となるデータベースの状態をコピーする必要がないので、早期に新たなバージョンのデータベースを生成することができる。 According to this snapshot creation process, a new version of the database starting from the state of the database at a certain point in time can be newly added. In addition, when adding a new version of the database, it is not necessary to copy the state of the starting database, so that a new version of the database can be generated at an early stage.
 図6は、データ書き込み処理のフローチャートである。 FIG. 6 is a flowchart of the data writing process.
 データアクセス部491は、同時実行制御部420から、書き込み対象の行の行IDと、書き込み対象のデータを取得する(S601)。次に、データアクセス部491は、同時実行制御部420から、書き込みを行うトランザクションに割り当てられたTR_IDを取得する(S602)。 The data access unit 491 acquires the row ID of the write target row and the write target data from the simultaneous execution control unit 420 (S601). Next, the data access unit 491 acquires the TR_ID assigned to the transaction to be written from the simultaneous execution control unit 420 (S602).
 次に、データアクセス部491は、同時実行制御部420から、その同時実行制御部420が管理するデータベースのバージョンを示すBR_IDを取得する(S603)。次に、データアクセス部491は、現時点のTIME(例えば現在時刻)を取得する(S604)。次に、データアクセス部491は、取得した行ID、TR_ID、BR_ID、TIME、及びデータを含むエントリを、全体更新履歴情報221に格納する(S605)。 Next, the data access unit 491 acquires the BR_ID indicating the version of the database managed by the simultaneous execution control unit 420 from the simultaneous execution control unit 420 (S603). Next, the data access unit 491 acquires the current TIME (for example, the current time) (S604). Next, the data access unit 491 stores an entry including the acquired row ID, TR_ID, BR_ID, TIME, and data in the overall update history information 221 (S605).
 図7は、データ読み出し処理のフローチャートである。 FIG. 7 is a flowchart of the data reading process.
 データアクセス部491は、同時実行制御部420から、読み出し対象の行の行IDを取得する(S701)。次に、データアクセス部491は、同時実行制御部420が管理するデータベースのバージョンを示すBR_IDを取得し(S702)、取得した行ID及びBR_IDをブランチ識別部496に渡す。 The data access unit 491 acquires the row ID of the row to be read from the simultaneous execution control unit 420 (S701). Next, the data access unit 491 acquires BR_ID indicating the version of the database managed by the simultaneous execution control unit 420 (S702), and passes the acquired row ID and BR_ID to the branch identification unit 496.
 次に、ブランチ識別部496は、取得した行ID及びBR_IDに対応するデータが全体更新履歴情報221に存在するか否かを判断する(S703)。 Next, the branch identifying unit 496 determines whether data corresponding to the acquired row ID and BR_ID exists in the overall update history information 221 (S703).
 S703の判断結果が肯定の場合(S703:YES)、データアクセス部491は、全体更新履歴情報221からそのデータをリードし、同時実行制御部420に渡す(S704)。そのデータは、同時実行制御部420から出力される。 If the determination result in S703 is affirmative (S703: YES), the data access unit 491 reads the data from the overall update history information 221 and passes it to the simultaneous execution control unit 420 (S704). The data is output from the simultaneous execution control unit 420.
 一方、S703の判断結果が否定の場合(S703:NO)、ブランチ識別部496は、BR_IDのバージョンのデータベースに対応する参照元IDが同時実行制御部420(個別更新履歴情報600)に存在するか否かを判断する(S705)。 On the other hand, if the determination result in S703 is negative (S703: NO), the branch identification unit 496 determines whether the reference source ID corresponding to the BR_ID version database exists in the simultaneous execution control unit 420 (individual update history information 600). It is determined whether or not (S705).
 S705の判断結果が肯定の場合(S705:YES)、ブランチ識別部496は、この参照先IDをBR_IDとして設定し(S706)、処理をS703に進める。この結果、S703以降の処理が更に実行されることとなり、BR_ID(参照元ID)に対応するバージョンのデータベースに対応するデータを探し、さらに存在しない場合には、このバージョンが参照する、更に前のバージョンのデータベースに対応するデータが存在するか否かを順次探す処理、すなわち、参照先のバージョンのデータベースを順次辿ってデータを探索する処理が行われる。 If the determination result in S705 is affirmative (S705: YES), the branch identification unit 496 sets this reference destination ID as BR_ID (S706), and advances the process to S703. As a result, the processing from S703 onward is further executed, and data corresponding to the version database corresponding to BR_ID (reference source ID) is searched. A process for sequentially searching whether or not data corresponding to the version database exists, that is, a process for searching for data by sequentially tracing the version database of the reference destination is performed.
 S705の判断結果が否定場合(S705:NO)、読み出し対象の行が存在しないことを意味しているので、データアクセス部491は、行IDエラーを同時実行制御部420に通知する(S707)。 If the determination result in S705 is negative (S705: NO), it means that there is no row to be read, so the data access unit 491 notifies the concurrent execution control unit 420 of a row ID error (S707).
 図8は、ガーベージコレクション処理のフローチャートである。 FIG. 8 is a flowchart of the garbage collection process.
 ガーベージコレクション処理とは、いずれの同時実行制御部420からも参照されないデータを特定しそのデータが格納されている領域を回収する処理である。回収された領域は、新たにデータを格納可能に空き領域として管理される。回収される領域は、いずれの同時実行制御部420からも参照されない行/データに対応したエントリ(全体更新履歴情報221のエントリ)を格納した領域と、いずれの同時実行制御部420からも参照されない行/データに対応したデータベース領域とのうちの少なくとも一方でよい。ガーベージコレクション処理は、任意の時点に実行され、繰り返し実行されてよい。 The garbage collection process is a process of identifying data that is not referred to by any concurrent execution control unit 420 and collecting an area in which the data is stored. The collected area is managed as an empty area where data can be newly stored. The area to be collected is not referred to by any of the concurrent execution control units 420 and the area storing entries (entries of the entire update history information 221) corresponding to rows / data not referenced by any concurrent execution control unit 420. It may be at least one of the database area corresponding to the row / data. The garbage collection process is executed at an arbitrary time point and may be executed repeatedly.
 領域回収部492は、全体更新履歴情報221に、未処理の行(処理対象の行)が存在するか否かを判断する(S801)。 The area collection unit 492 determines whether or not there is an unprocessed line (process target line) in the overall update history information 221 (S801).
 S801の判断結果が肯定の場合(S801:YES)、領域回収部492は、未処理の行の行ID、TR_ID、BR_IDを処理対象として取得する(S802)。 If the determination result in S801 is affirmative (S801: YES), the area collection unit 492 acquires the row ID, TR_ID, and BR_ID of an unprocessed row as a processing target (S802).
 次に、領域回収部492は、処理対象の行IDと同一の行IDを有する行であって、処理対象のBR_IDと同一のBR_ID又は処理対象のBR_IDに対応付けられた参照元IDと同一のBR_IDが含まれ、TIMEが処理対象の行のTIMEよりも前である行が存在するか否かを判断する(S803)。S803の判断結果が肯定の場合(S803:YES)、領域回収部492は、その行に対して回収可能マークを設定し(S804)、処理をS801に進める。ここで、回収可能マークの設定方法としては、全体更新履歴情報221の行に回収可能マーク用の専用のフィールドを設けて、このフィールドに設定してもよく、いずれかのフィールドに回収可能マークを含めて格納するようにしてもよい。 Next, the area collection unit 492 is a row having the same row ID as the processing target row ID, and the same BR_ID as the processing target BR_ID or the same reference source ID associated with the processing target BR_ID. It is determined whether or not there is a row that includes BR_ID and whose TIME is before the TIME of the row to be processed (S803). If the determination result in S803 is affirmative (S803: YES), the area collection unit 492 sets a retrievable mark for the line (S804), and advances the process to S801. Here, as a method of setting the recoverable mark, a dedicated field for the recoverable mark may be provided in the row of the overall update history information 221 and set in this field. You may make it store including.
 S803の判断結果が否定の場合(S803:NO)、領域回収部492は、処理をS801に進める。 If the determination result in S803 is negative (S803: NO), the area collection unit 492 advances the process to S801.
 一方、S801の判断結果が否定の場合(S801:NO)、領域回収部492は、全体更新履歴情報221に、S806及びS807が未処理の行(処理対象の行)が存在するか否かを判断する(S805)。S805の判断結果が肯定の存在する場合(S805:YES)、領域回収部492は、未処理の行に回収可能マークが設定済みか否かを判断する(S806)。 On the other hand, if the determination result in S801 is negative (S801: NO), the area collection unit 492 determines whether or not there are rows (processing target rows) in which the S806 and S807 are not processed in the overall update history information 221. Judgment is made (S805). If the determination result in S805 is affirmative (S805: YES), the area collection unit 492 determines whether or not a collectable mark has been set in an unprocessed line (S806).
 S806の判断結果が肯定の場合(S806:YES)、領域回収部492は、該当する行のデータが格納されている領域を回収し(S807)、処理をS805に進める。この処理により、同一のバージョンにおける重複する行、又は、このバージョンと重複する参照元のバージョンの行が、メモリ220から削除される(領域が回収され空き領域ができる)。このため、メモリ220を有効に利用することができるようになる。なお、データ退避部493は、このように削除された行を一時的に所定の記憶領域に退避するようにしてもよい。 If the determination result in S806 is affirmative (S806: YES), the area collection unit 492 collects the area where the data of the corresponding row is stored (S807), and advances the process to S805. By this process, the duplicate line in the same version or the reference version line duplicated with this version is deleted from the memory 220 (the area is collected and a free area is created). For this reason, the memory 220 can be used effectively. Note that the data saving unit 493 may temporarily save the deleted row in a predetermined storage area.
 S806の判断結果が否定の場合(S806:NO)、領域回収部492は、処理をS805に進める。 If the determination result in S806 is negative (S806: NO), the area collection unit 492 advances the process to S805.
 S805の判断結果が否定の場合(S805:NO)、全ての行を対象に領域の回収が判断されたことを意味しているので、領域回収部492は、ガーベージコレクション処理を終了する。 If the determination result in S805 is negative (S805: NO), it means that the collection of the area has been determined for all rows, and the area collection unit 492 ends the garbage collection process.
 なお、領域回収部492による領域の回収は、上記処理に限らない。例えば、或るバージョンのデータベースの使用を終了する場合には、全体更新履歴情報221から、削除するバージョンのデータベースのBR_IDに対応する行が削除されてもよい。なお、この或るバージョンのデータベースの所定の時点の状態に基づいて、他のバージョンのデータベースが作成されている場合には、この或るバージョンのデータベースの所定の時点の状態に対応する行については、削除されないでよい。 The area collection by the area collection unit 492 is not limited to the above processing. For example, when the use of a certain version of the database is terminated, the row corresponding to the BR_ID of the version database to be deleted may be deleted from the overall update history information 221. If another version of the database is created based on the state of the database of a certain version at a predetermined time, the line corresponding to the state of the certain version of the database at the predetermined time , Don't be deleted.
 図9は、匿名化処理のフローチャートである。 FIG. 9 is a flowchart of the anonymization process.
 匿名化処理は、秘匿性のある属性値(例えば、氏名、電話番号、住所、クレジットカード番号)を含んだデータを変換することでそのデータの属性値を特定不可能にする処理である。匿名化処理は、例えば、図7のS704により読み出されたデータについて行われる。 Anonymization processing is processing that makes it impossible to specify an attribute value of data by converting data including confidential attribute values (for example, name, telephone number, address, credit card number). The anonymization process is performed on the data read out in S704 of FIG. 7, for example.
 データ変換部430は、S704で取得した行について、行IDと、列ID(属性ID)と、BR_IDと、データとを取得する(S901)。次に、データ変換部430は、この行のデータが、このバージョンのデータベースを作成した後において、更新済みであるか否かを判断する(S902)。データが更新済みであるか否かは、行IDに対応する行のBR_IDが、このデータを要求した同時実行制御部420に対応付けられたBR_IDであるか否かにより特定できる。具体的には、行IDに対応する行のBR_IDが同時実行制御部420に対応付けられたBR_IDである場合には、更新済みであると判断できる。 The data conversion unit 430 acquires the row ID, column ID (attribute ID), BR_ID, and data for the row acquired in S704 (S901). Next, the data conversion unit 430 determines whether or not the data in this row has been updated after creating this version of the database (S902). Whether or not the data has been updated can be specified by whether or not the BR_ID of the row corresponding to the row ID is the BR_ID associated with the concurrent execution control unit 420 that has requested this data. Specifically, when the BR_ID of the row corresponding to the row ID is the BR_ID associated with the simultaneous execution control unit 420, it can be determined that the update has been completed.
 S902の判断結果が肯定の場合(S902:YES)、データはすでに匿名化されていることを意味しているので、データ変換部430は、取得したデータを同時実行制御部420に返す(S903)。 If the determination result in S902 is affirmative (S902: YES), it means that the data has already been anonymized, so the data conversion unit 430 returns the acquired data to the simultaneous execution control unit 420 (S903). .
 S902の判断結果が否定の場合(S902:NO)、データ変換部430は、BR_IDに対応する匿名化方法がデータ変換部430に設定済みであるか否かを判断する(S904)。S904の判断結果が否定の場合(S904:NO)、このデータについて匿名化する必要がないので、データ変換部430は、処理をS903に進める。 If the determination result in S902 is negative (S902: NO), the data conversion unit 430 determines whether the anonymization method corresponding to BR_ID has been set in the data conversion unit 430 (S904). If the determination result in S904 is negative (S904: NO), there is no need to anonymize this data, and the data conversion unit 430 advances the process to S903.
 一方、S904の判断結果が肯定の場合(S904:YES)、このデータについて匿名化する必要があるので、データ変換部430は、データ内の列の列IDに対する匿名化方法を取得する(S905)。ここで、データの中には、例えば、名前、クレジットカード、電話番号、住所等の列(属性値)が含まれる場合があり、属性によって適切な匿名化方法がある。なお、属性に応じた匿名化方法については、公知の任意の方法とすることができる。 On the other hand, if the determination result in S904 is affirmative (S904: YES), since this data needs to be anonymized, the data conversion unit 430 acquires an anonymization method for the column ID of the column in the data (S905). . Here, the data may include, for example, a column (attribute value) such as a name, a credit card, a telephone number, and an address, and there is an appropriate anonymization method depending on the attribute. In addition, about the anonymization method according to an attribute, it can be set as a well-known arbitrary method.
 次に、データ変換部430は、データの各列(属性値)について、取得した匿名化方法により匿名化し(S906)、匿名化したデータを同時実行制御部420に返す(S907)。 Next, the data conversion unit 430 anonymizes each column (attribute value) of the data by the acquired anonymization method (S906), and returns the anonymized data to the simultaneous execution control unit 420 (S907).
 匿名化処理により、或るバージョンのデータベースのデータとして、匿名化したデータを利用させることができ、秘匿性のある属性値が漏洩してしまうことを回避できる。また、匿名化処理はデータ読出しの都度に行われるので、予めデータを匿名化して記憶させておく必要がなく、必要な時点に迅速に匿名化したデータを提供することができる。また、データ変換部430は、バージョン#0以外のバージョンのデータベースから読み出されたデータについてのみ、匿名化処理を行うことができる。例えば、開発環境にて秘匿にされるべき属性値のみ変換され、本番環境では匿名化処理はなされないでよい。 By anonymization processing, anonymized data can be used as data of a certain version of the database, and it is possible to avoid leakage of confidential attribute values. Further, since the anonymization process is performed every time data is read out, it is not necessary to anonymize and store the data in advance, and the anonymized data can be provided quickly at a necessary time. Further, the data conversion unit 430 can perform anonymization processing only for data read from a database of a version other than version # 0. For example, only attribute values that should be kept secret in the development environment are converted, and anonymization processing may not be performed in the production environment.
 図10は、リソース制御処理のフローチャートである。 FIG. 10 is a flowchart of the resource control process.
 リソース制御処理とは、利用可能なリソース量をバージョン(環境)毎に制御することである。例えば、データベースエンジン400がクエリを受信した後において、所定の時点に(例えば、データ読み出し処理の実行前に)、クエリに関連付いたバージョンのデータベースの処理に使用されるリソース量が制御される。 Resource control processing is to control the amount of available resources for each version (environment). For example, after the database engine 400 receives a query, the amount of resources used to process the version of the database associated with the query is controlled at a predetermined point in time (eg, before performing the data read process).
 リソース管理部440は、同時実行制御部420から処理対象のデータベースのバージョンを示すBR_IDを取得する(S1001)。次に、リソース管理部440は、取得したBR_IDのバージョンのデータベースに対するリソースの制約条件が設定されているか否かを判断する(S1002)。S1002の判断結果が否定の場合(S1002:NO)、リソース管理部440は、処理をS1006に進める。 The resource management unit 440 acquires the BR_ID indicating the version of the database to be processed from the simultaneous execution control unit 420 (S1001). Next, the resource management unit 440 determines whether or not a resource constraint condition is set for the acquired BR_ID version database (S1002). If the determination result in S1002 is negative (S1002: NO), the resource management unit 440 advances the process to S1006.
 S1002の判断結果が肯定の場合(S1002:YES)、リソース管理部440は、BR_IDに対応するリソース制約条件を取得し(S1003)、BR_IDのバージョンのデータベースの処理におけるリソース使用状況を取得する(S1004)。 If the determination result in S1002 is affirmative (S1002: YES), the resource management unit 440 acquires the resource constraint condition corresponding to BR_ID (S1003), and acquires the resource usage status in the database processing of the BR_ID version (S1004). ).
 次に、リソース管理部440は、取得したリソース使用状況がリソース制約条件を満たしているか否かを判断する(S1005)。S1005の判断結果が肯定の場合(S1005:YES)、リソース管理部440は、処理をS1006に進める。 Next, the resource management unit 440 determines whether or not the acquired resource usage condition satisfies the resource constraint condition (S1005). If the determination result in S1005 is affirmative (S1005: YES), the resource management unit 440 advances the process to S1006.
 S1006では、リソース管理部440は、取得したBR_IDのバージョンのデータベースに対する処理(例えば、データ読み出し処理)を実行させる。 In S1006, the resource management unit 440 causes a process (for example, a data read process) to be performed on the acquired BR_ID version database.
 一方、S1005の判断結果が否定の場合(S1005:NO)、リソース管理部440は、取得したBR_IDのバージョンのデータベースに対する処理(例えば、データ読み出し処理)の実行を待たせ(S1007)、処理をS1004に進める。 On the other hand, if the determination result in S1005 is negative (S1005: NO), the resource management unit 440 waits for execution of processing (for example, data read processing) on the acquired BR_ID version database (S1007), and the processing is performed in S1004. Proceed to
 リソース制御処理によれば、データベースの或るバージョンに対する処理が、リソース制約条件に従って制御される。このため、例えば、本番環境のデータベースに対する処理が、開発環境(テスト環境)のデータベースに対する処理によって悪影響を受けることを低減できる。 According to the resource control process, the process for a certain version of the database is controlled according to the resource constraint condition. Therefore, for example, it is possible to reduce the adverse effect of the processing on the production environment database due to the processing on the development environment (test environment) database.
 以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。 As mentioned above, although one embodiment was described, this is an illustration for explaining the present invention, and the scope of the present invention is not limited to this embodiment. The present invention can be implemented in various other forms.
 例えば、上記実施形態では、バージョン作成部495は、ユーザからの指定無しに、所定のタイミング(例えば、月次、週次、日次のタイミング)で、整合性の取れた状態の新たなバージョンのデータベースを自動で追加してもよい。これにより、追加した新たなバージョンのデータベースを更新することなく保存しておき、そのデータベースを用いることにより、改変されてしまった別のバージョンのデータベースから整合性のとれた過去の状態が維持されているバージョンのデータベースに復帰することが期待できる。 For example, in the above-described embodiment, the version creation unit 495 does not specify a new version of a new version in a consistent state at a predetermined timing (for example, monthly, weekly, daily timing). The database may be added automatically. As a result, the new version of the added database is saved without being updated, and by using that database, a consistent past state is maintained from another version of the database that has been altered. You can expect to revert to the database version you have.
 また、例えば、新たなバージョンを追加した後に、基準バージョンのデータベースに対するクエリをクエリ退避部460が退避しておき、後に、早送り部470が、追加された新たなバージョンのデータベース(クエリが実行されていないもの)に対して、クエリ退避部460に格納されたクエリを実行させるようにしてもよい。これにより、データベースの処理におけるCPU負荷等を再現することが期待できる。 Further, for example, after adding a new version, the query save unit 460 saves a query for the database of the reference version, and later, the fast-forward unit 470 adds the new version database (query is being executed). The query stored in the query saving unit 460 may be executed on the server that is not present. Thereby, it can be expected that the CPU load or the like in the database processing is reproduced.
 また、例えば、新たなバージョンを追加した後に、第1のバージョン(例えば基準バージョン#0)のデータベースを用いて、第1のプログラムにより発行された第1のクエリの処理を実行し、第2のバージョン(例えば新しいバージョン)のデータベースを用いて、第2のプログラム(例えば、第1のプログラムがバージョンアップ)により発行された第2のクエリの処理が実行されてよい。第1及び第2のプログラムは、それぞれ、クエリソースの一例でよい。第1のバージョンのデータベースと第2のバージョンのデータベースは同じ内容でよい。データ比較部450が、第1のプログラムにより利用される第1のバージョンのデータベースの状態(結果)と、第2のプログラムにより利用される第2のバージョンのデータベースの状態(結果)とを比較し、比較の結果(例えば、双方のプログラムによって同じ状態(結果)が得られたか否かに関する情報)を出力してよい。これにより、プログラムの動作の検証を行うことができる。 Further, for example, after adding a new version, the first query issued by the first program is executed using the database of the first version (for example, the reference version # 0), and the second version The processing of the second query issued by the second program (for example, the first program is upgraded) may be executed using a database of the version (for example, a new version). Each of the first and second programs may be an example of a query source. The first version database and the second version database may have the same contents. The data comparison unit 450 compares the state (result) of the first version database used by the first program with the state (result) of the second version database used by the second program. The comparison result (for example, information on whether or not the same state (result) is obtained by both programs) may be output. As a result, the operation of the program can be verified.
 また、例えば、クエリ処理部410が、同一のクエリに対して複数のクエリ実行プランを生成してよい。投機実行部480が、2以上のバージョンにそれぞれ対応する2以上の同時実行制御部420に、それぞれ2以上のクエリ実行プランを実行させてよい。投機実行部480は、最も早く結果が得られたクエリ実行プランが実行されたバージョンのデータベースを、以降の処理に用いるデータベースとしてもよい。これにより、クエリを迅速に実行することが期待できる。 For example, the query processing unit 410 may generate a plurality of query execution plans for the same query. The speculative execution unit 480 may cause two or more simultaneous execution control units 420 respectively corresponding to two or more versions to execute two or more query execution plans. The speculative execution unit 480 may use a database of a version in which the query execution plan that has obtained the earliest result is executed as a database used for subsequent processing. Thereby, it can be expected to execute the query quickly.
 また、例えば、新たなバージョンを追加した後に、新たなバージョンのデータベースを用いて、新たなプログラム(例えば新しい機能が追加されたプログラム)による処理が実行されてよい。データ比較部450が、その実行結果を、例えば、表を単位とし、整合性に問題がない範囲で、基準バージョンのデータベースに対し表をマージしてもよい。これにより、新たなプログラムの開発環境での実行結果を本番環境に適切に反映させることが期待できる。 Also, for example, after a new version is added, processing by a new program (for example, a program to which a new function is added) may be executed using the new version database. The data comparison unit 450 may merge the table into the reference version database within a range where the execution result is, for example, a table as a unit and there is no problem in consistency. As a result, it can be expected that the execution result of the new program development environment is appropriately reflected in the production environment.
 1:計算機システム 100:クライアント計算機 200:データベースサーバ 400:データベースエンジン

 
1: Computer system 100: Client computer 200: Database server 400: Database engine

Claims (13)

  1.  クエリに従いトランザクションを実行するデータベースシステムであって、
     第1のバージョンのデータベースである第1のデータベースに対するトランザクションを実行する第1の個別実行部と、
     バージョンの追加の都度に、そのバージョン追加時の前記第1のデータベースのスナップショットである追加のデータベースと、その追加のデータベースに対するトランザクションを実行する追加の個別実行部とを生成するバージョン管理部と
    を有し、
     前記バージョン管理部は、少なくとも第1の個別実行部を含む全ての個別実行部にそれぞれ対応した全てのデータベースのうちのいずれかのデータベースの行の更新の都度に、更新される行のIDと、更新される行に格納される更新後のデータと、更新を行う個別実行部に対応したバージョンのIDとを含んだ情報であるエントリを履歴情報に追加する、
    データベースシステム。
    A database system that executes transactions according to queries,
    A first individual execution unit that executes a transaction for a first database that is a first version database;
    Each time a version is added, an additional database that is a snapshot of the first database when the version is added, and a version management unit that generates an additional individual execution unit that executes a transaction for the additional database, Have
    The version management unit includes an ID of a row to be updated each time a row of any database among all databases corresponding to all the individual execution units including at least the first individual execution unit is updated, Adding an entry, which is information including the updated data stored in the row to be updated, and the ID of the version corresponding to the individual execution unit to be updated, to the history information;
    Database system.
  2.  少なくともいずれかの追加のバージョンのデータベースにあるデータのうちの所定種類の属性値を特定不可能に変換する変換処理を実行するデータ変換部を更に有する、
    請求項1記載のデータベースシステム。
    A data conversion unit that executes a conversion process for converting an attribute value of a predetermined type of data in at least any additional version of the database to be unspecified;
    The database system according to claim 1.
  3.  前記変換処理は、クエリに従い少なくともいずれかの追加のバージョンのデータベースからデータが読み出された場合に、前記読み出されたデータ中の所定種類の属性値に対して行われる、
    請求項2記載のデータベースシステム。
    The conversion process is performed on a predetermined type of attribute value in the read data when the data is read from at least one additional version database according to the query.
    The database system according to claim 2.
  4.  少なくとも第1の個別実行部を含む1以上の個別実行部の各々に割り当てられるリソースの制約条件に基づいて、前記1以上の個別実行部の各々に割り当てられるリソース量を制御するリソース制御部を更に有する、
    請求項1記載のデータベースシステム。
    A resource control unit for controlling a resource amount allocated to each of the one or more individual execution units based on a constraint condition of resources allocated to each of the one or more individual execution units including at least the first individual execution unit; Have
    The database system according to claim 1.
  5.  前記バージョン管理部は、前記履歴情報を参照し、いずれのバージョンの個別実行部からも参照されないデータである不要データを特定し、前記特定した不要データの領域を解放する、
    請求項1記載のデータベースシステム。
    The version management unit refers to the history information, identifies unnecessary data that is not referenced by any version of the individual execution unit, and releases the area of the identified unnecessary data.
    The database system according to claim 1.
  6.  前記バージョン管理部は、予め設定された所定の時点に新たにバージョンを追加する、
    請求項1記載のデータベースシステム。
    The version management unit adds a new version at a predetermined time point set in advance.
    The database system according to claim 1.
  7.  クエリに基づいて複数のクエリ実行プランを生成するクエリ処理部と、
     前記生成された複数のクエリ実行プランをそれぞれ複数の個別実行部により実行させ、最も早く結果が得られたデータベースを後続のクエリの実行に用いるよう制御する投機実行部と
    を更に有する、
    請求項1記載のデータベースシステム。
    A query processing unit that generates a plurality of query execution plans based on the query;
    A speculative execution unit that controls the plurality of generated query execution plans to be executed by a plurality of individual execution units, respectively, and uses the database with the fastest result for execution of subsequent queries;
    The database system according to claim 1.
  8.  複数のクエリソースからそれぞれ発行された複数のクエリを、複数のバージョンにそれぞれ対応した複数のデータベースをそれぞれ用いて実行し、前記複数のクエリの実行後の前記複数のデータベースの結果を比較し、比較の結果を出力するデータ比較部を更に有する、
    請求項1記載の計算機システム。
    A plurality of queries issued from a plurality of query sources are executed using a plurality of databases respectively corresponding to a plurality of versions, and the results of the plurality of databases after execution of the plurality of queries are compared and compared. A data comparison unit that outputs the result of
    The computer system according to claim 1.
  9.  前記バージョン管理部は、いずれかの追加のバージョンに対応した追加の個別実行部により更新されたデータベースのうちの、前記第1のデータベースとの差分であり前記第1のデータベースとの整合性を阻害しない差分を、前記第1のデータベースにマージする、
    請求項1記載のデータベースシステム。
    The version management unit is a difference from the first database among the databases updated by an additional individual execution unit corresponding to any additional version, and hinders consistency with the first database Merge the differences that are not into the first database;
    The database system according to claim 1.
  10.  前記第1のバージョンのデータベースに対する所定の時点以降のクエリを蓄積するクエリ退避部と、
     前記所定の時点以降に更新されていない追加のバージョンのデータベースに対して、前記クエリ退避部により蓄積されたクエリを実行する早送り部と
    を更に有する、
    請求項1記載のデータベースシステム。
    A query saving unit for accumulating queries after a predetermined time for the first version database;
    A fast-forward unit that executes a query accumulated by the query saving unit for an additional version of the database that has not been updated since the predetermined time point;
    The database system according to claim 1.
  11.  第1のバージョンのデータベースである第1のデータベースに対するトランザクションを実行する第1の個別実行部を実行し、
     バージョンの追加の都度に、そのバージョン追加時の前記第1のデータベースのスナップショットである追加のデータベースと、その追加のデータベースに対するトランザクションを実行する追加の個別実行部とを生成し、
     少なくとも第1の個別実行部を含む全ての個別実行部にそれぞれ対応した全てのデータベースのうちのいずれかのデータベースの行の更新の都度に、更新される行のIDと、更新される行に格納される更新後のデータと、更新を行う個別実行部に対応したバージョンのIDとを含んだ情報であるエントリを履歴情報に追加する、
    データベース管理方法。
    Executing a first individual execution unit for executing a transaction for a first database which is a first version database;
    Each time a version is added, an additional database that is a snapshot of the first database at the time of adding the version and an additional individual execution unit that executes a transaction for the additional database are generated.
    Stored in the updated row ID and the updated row every time a row of any database among all databases corresponding to all the individual execution units including at least the first individual execution unit is updated An entry which is information including the updated data to be updated and the ID of the version corresponding to the individual execution unit to be updated is added to the history information.
    Database management method.
  12.  履歴情報を記憶する記憶部と、
     前記記憶部に接続されデータベースエンジンとして機能するプロセッサと
    を有し、
     前記プロセッサが、
      第1のバージョンのデータベースである第1のデータベースに対するトランザクションを実行する第1の個別実行部を実行し、
      バージョンの追加の都度に、そのバージョン追加時の前記第1のデータベースのスナップショットである追加のデータベースと、その追加のデータベースに対するトランザクションを実行する追加の個別実行部とを生成し、
      少なくとも第1の個別実行部を含む全ての個別実行部にそれぞれ対応した全てのデータベースのうちのいずれかのデータベースの行の更新の都度に、更新される行のIDと、更新される行に格納される更新後のデータと、更新を行う個別実行部に対応したバージョンのIDとを含んだ情報であるエントリを前記履歴情報に追加する、
    計算機。
    A storage unit for storing history information;
    A processor connected to the storage unit and functioning as a database engine;
    The processor is
    Executing a first individual execution unit for executing a transaction for a first database which is a first version database;
    Each time a version is added, an additional database that is a snapshot of the first database at the time of adding the version and an additional individual execution unit that executes a transaction for the additional database are generated.
    Stored in the updated row ID and the updated row every time a row of any database among all databases corresponding to all the individual execution units including at least the first individual execution unit is updated An entry that is information including the updated data to be updated and the ID of the version corresponding to the individual execution unit to be updated is added to the history information.
    calculator.
  13.  前記記憶部が、メモリであり、
     前記メモリが、前記第1のデータベースを格納しており、
     前記全ての個別実行部が前記データベースエンジンに含まれる、
    請求項12記載の計算機。

     
    The storage unit is a memory;
    The memory stores the first database;
    All the individual execution units are included in the database engine,
    The computer according to claim 12.

PCT/JP2015/051249 2015-01-19 2015-01-19 Database system and database management method WO2016117007A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/051249 WO2016117007A1 (en) 2015-01-19 2015-01-19 Database system and database management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/051249 WO2016117007A1 (en) 2015-01-19 2015-01-19 Database system and database management method

Publications (1)

Publication Number Publication Date
WO2016117007A1 true WO2016117007A1 (en) 2016-07-28

Family

ID=56416573

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/051249 WO2016117007A1 (en) 2015-01-19 2015-01-19 Database system and database management method

Country Status (1)

Country Link
WO (1) WO2016117007A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018018121A (en) * 2016-07-25 2018-02-01 富士通株式会社 Database control program, database control method, and database control device
CN108647357A (en) * 2018-05-17 2018-10-12 阿里巴巴集团控股有限公司 The method and device of data query
JP2020502626A (en) * 2016-11-08 2020-01-23 セールスフォース ドット コム インコーポレイティッド Formation and operation of test data in a database system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04112344A (en) * 1990-09-03 1992-04-14 Fujitsu Ltd Pseudo updating system for data base
JP2003076593A (en) * 2002-06-10 2003-03-14 Hitachi Ltd Database management method and system
JP2007011497A (en) * 2005-06-28 2007-01-18 Hitachi Ltd Performance test method and test server
WO2008114452A1 (en) * 2007-03-20 2008-09-25 Fujitsu Limited Simulator, simulation system, and computer program
JP2012079078A (en) * 2010-10-01 2012-04-19 Nippon Telegr & Teleph Corp <Ntt> Distributed database management device and distributed database management program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04112344A (en) * 1990-09-03 1992-04-14 Fujitsu Ltd Pseudo updating system for data base
JP2003076593A (en) * 2002-06-10 2003-03-14 Hitachi Ltd Database management method and system
JP2007011497A (en) * 2005-06-28 2007-01-18 Hitachi Ltd Performance test method and test server
WO2008114452A1 (en) * 2007-03-20 2008-09-25 Fujitsu Limited Simulator, simulation system, and computer program
JP2012079078A (en) * 2010-10-01 2012-04-19 Nippon Telegr & Teleph Corp <Ntt> Distributed database management device and distributed database management program

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018018121A (en) * 2016-07-25 2018-02-01 富士通株式会社 Database control program, database control method, and database control device
JP2020502626A (en) * 2016-11-08 2020-01-23 セールスフォース ドット コム インコーポレイティッド Formation and operation of test data in a database system
JP7090606B2 (en) 2016-11-08 2022-06-24 セールスフォース ドット コム インコーポレイティッド Formation and operation of test data in a database system
CN108647357A (en) * 2018-05-17 2018-10-12 阿里巴巴集团控股有限公司 The method and device of data query
CN108647357B (en) * 2018-05-17 2023-01-31 创新先进技术有限公司 Data query method and device

Similar Documents

Publication Publication Date Title
CN110799960B (en) System and method for database tenant migration
CN109952564B (en) Formation and manipulation of test data in a database system
US9569458B2 (en) Preserving a state using snapshots with selective tuple versioning
US9639426B2 (en) Single snapshot for multiple applications
US9753812B2 (en) Generating mapping information for single snapshot for multiple applications
US11321192B2 (en) Restoration of specified content from an archive
US11176102B2 (en) Incremental virtual machine metadata extraction
US20200265068A1 (en) Replicating Big Data
WO2021202175A1 (en) File systems constructed of block objects
KR102187127B1 (en) Deduplication method using data association and system thereof
US10621071B2 (en) Formation and manipulation of test data in a database system
US10922280B2 (en) Policy-based data deduplication
JP2018516409A (en) Indexing method and system for file storage
US20200201745A1 (en) Formation and manipulation of test data in a database system
US20130325814A1 (en) System and method for archive in a distributed file system
US20210303511A1 (en) Cloning a Managed Directory of a File System
US9298733B1 (en) Storing files in a parallel computing system based on user or application specification
KR20210058118A (en) Casedb: low-cost put-intensive key-value store for edge computing
WO2016117007A1 (en) Database system and database management method
JPWO2007099636A1 (en) File system migration method, file system migration program, and file system migration apparatus
US20130325813A1 (en) System and method for archive in a distributed file system
US20230222165A1 (en) Object storage-based indexing systems and method
US10268411B1 (en) Policy and heuristic based conversion of write-optimized virtual disk format into read-optimized virtual disk format
US9965488B2 (en) Back referencing of deduplicated data
US20140344538A1 (en) Systems, methods, and computer program products for determining block characteristics in a computer data storage system

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP