WO2017078158A1 - データ管理システム - Google Patents
データ管理システム Download PDFInfo
- Publication number
- WO2017078158A1 WO2017078158A1 PCT/JP2016/082855 JP2016082855W WO2017078158A1 WO 2017078158 A1 WO2017078158 A1 WO 2017078158A1 JP 2016082855 W JP2016082855 W JP 2016082855W WO 2017078158 A1 WO2017078158 A1 WO 2017078158A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- server
- business
- child
- registration
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/105—Human resources
- G06Q10/1053—Employment or hiring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24565—Triggers; Constraints
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/835—Timestamp
Definitions
- the present invention relates to a data management system, and more particularly to a technique for storing and managing various business data generated by an AP server in a DB server.
- an AP server that has received an order for three types of products from a user receives one order data including data items such as an order ID, a customer ID, and an order date as shown in FIG.
- order details data (1) order details data
- order details data (2) order details data (3) with data items such as order details ID, order ID, item ID, quantity for each product
- each order detail data has a common "order ID" of the order data, and since it is bundled together by this order ID, the order data is "parent data” and the order detail data is " It can be thought of as “child data”.
- the DB server that is requested to register these four data registers the order data in the order table, and the order details data (1), order details data (2), and order details data (3) in the order details table. Then, when all registrations are completed, a transaction completion message is sent to the AP server. On the AP server side, when this transaction completion message is received, each data is read.
- the DB server cancels registration for the data that has been registered, and a message indicating that registration has failed. Is sent to the AP server. Receiving this, the AP server sends the order data, order detail data (1), order detail data (2) order detail data, (3) again to the DB server, and starts the data registration process from the beginning.
- the DB server executes business data registration, update, deletion, and extraction processing according to the SQL statement issued by the AP server (see Non-Patent Document 3). If business data is updated or deleted through the DB server, there arises a problem that it is not possible to cope with the necessity of referring to data before update or before deletion. For example, regarding the management of HR-related master files, in the system where the surname has been changed due to marriage etc. until now, in the system that has been responded by updating the full name, there is a requirement to refer to the maiden name on the way, Recovering lost maiden data is not easy. In addition, when a retired employee is dealt with by deleting data, the same problem occurs when it becomes necessary to refer to the data of the retired employee later.
- the present invention has been devised in view of such a current situation, and when registering a plurality of related data in a DB server, even if a registration failure occurs for some data, a rollback process is performed.
- the first object is to realize a data management technique that does not need to be performed.
- a second object is to realize a data management technique that can flexibly cope with the need to refer to past data during the operation of the system.
- a third object is to realize a data management technique that enables execution of batch processing in parallel with data accumulation without separating target data for batch processing and non-target data.
- a data management system is a data management system including an AP server and a DB server, and the AP server stores business data generated as a result of business processing in the DB. It has a function of sending to a server and requesting registration to a corresponding table, and the business data is composed of a combination of parent data having a relationship with each other and a plurality of child data.
- the ID of the parent data is provided as an external key, and when registering the business data, the AP server first requests the DB server to register each child data, When registration completion notifications related to all child data are received from the DB server, the parent server is requested to register the parent data, and if any child data registration completion notification is not received within a certain period of time, Day When referencing registered business data, the AP server refers only to child data that has registered related parent data, and for child data that has no related parent data registered. It is characterized by excluding reference.
- the data management system is the system according to claim 1, further comprising a plurality of DB servers, and when the parent data is registered, the AP server requests registration of the child data. It is characterized in that registration is requested to a DB server different from the DB server.
- a data management system is the system according to claim 1, further comprising a plurality of DB servers each having a common table for storing the same data.
- the AP server requests each DB server to register each child data, and for all child data, when registration completion notification is received from any DB server, the parent data is registered. It is characterized in that the registration of the parent data is canceled when the registration completion notification of any child data is not received from any DB server within a certain period of time.
- the data management system according to claim 4 is the system according to claim 3, and the DB server table further includes a restriction that allows only reference and addition of records and prohibits deletion and update. It is characterized by being.
- the data management system is the system according to claim 4, wherein the AP server sets the ID of business data to be canceled when it is necessary to delete existing business data.
- Data for canceling data with data items to be generated is generated, and this data cancellation data is additionally registered in a table dedicated to cancellation provided in each DB server, thereby effectively invalidating existing business data. It is characterized by that.
- the data management system is the system according to claim 4 or 5, and each of the business data is stamped with a time stamp at the time of business processing, and the AP server When it is necessary to update existing business data, new business data for updating that has the same ID as the business data and has a corrected value and a time stamp at the time of correction is generated.
- the present invention is characterized in that existing business data is substantially updated by additionally registering data in a corresponding table provided in each DB server.
- the data management system is the system according to claim 6, wherein the AP server further updates each of a plurality of existing child data having relevance to each other.
- the child data unique ID, the ID of the parent data common to each other, the value after each correction, and the child data for updating having the correction time stamp common to each other are newly generated.
- the update management data is requested to be registered to each of the above DB servers, and if any child data registration completion notification is not received from any DB server within a certain period of time , Renewal tube Cancel the registration of physical data, and when referencing the update child data, only the update child data with the update management data registration with the ID and time stamp of the parent data related to each update child data is to be referenced The update child data that is not registered in the update management data is excluded from reference.
- the data management system is a system including an AP server and a DB server, and the DB server table allows only reference and addition of records, and prohibits deletion and update.
- the AP server adds a data generation time as a time stamp to the business data generated as a result of the business processing, and then sends the data to the DB server to request registration to the corresponding table.
- data for canceling data is generated with a data item that sets the ID of the business data to be canceled, and this is dedicated to the cancellation provided in the DB server.
- New business data for update that has the same ID as the data, and has a corrected value and a time stamp at the time of correction, and this business data for update is added to the corresponding table provided in the DB server. Recorded in the time stamp of each business data stored in the above table when it is necessary to refer to business data at a specific point in the past and the function to substantially update existing business data by registering A feature is that it has a function of extracting corresponding business data based on time.
- the data management system is the system according to claim 8, wherein the AP server is further based on business data generated within a specific period of business data stored in the table.
- the data management system has a mechanism in which registration of parent data is not performed unless registration in the DB server is completed for all child data. Since the rule that "unregistered child data is excluded" is applied, even if registration fails for some child data, the remaining child data that was successfully registered is deleted by rollback processing There is no need to do. In addition, as a result of the rollback processing by the DB server being unnecessary, it is freed from the restriction that the same DB server must be in charge of registration processing for a plurality of data included in one transaction as in the past. Furthermore, in transaction processing based on the conventional rollback, a transaction success message (commit) is issued from the DB server when all data has been registered, so it is necessary to wait until the AP server receives this message. there were. On the other hand, in this system, only the registration completion notification of each data is received from the DB server, and no transaction completion message is issued. Therefore, the amount of data communication in the entire system is reduced accordingly. And waiting time of the AP server can be reduced.
- the business data generated by the AP server is stamped with the data generation time as a time stamp, and the business data once generated is deleted and updated. Without being stored in the DB server table semi-permanently. For this reason, even if an unexpected data reference request occurs at a later date, there is an advantage that it can be flexibly handled.
- the target data and non-target data for batch processing are identified by referring to the time stamp of each business data. Therefore, batch processing can be executed in parallel with data accumulation without separating target data and non-target data for batch processing.
- FIG. 1 is an overall configuration diagram of a first data management system 10 according to the present invention.
- a first AP server 14 a first DB server 16, and a second DB server 18 are installed.
- a second AP server 22, a third DB server 24, and a fourth DB server 26 are installed in the second data center 20 located in Osaka.
- AP servers and DB servers those arranged in the same data center do not need to be configured by physically independent machines (having independent IP addresses).
- AP nodes AP nodes
- DB nodes DB nodes
- Each of the first AP server 14 and the second AP server 22 has the same application program, and executes the same business process for the request transmitted from the client terminal 28 via the communication network 27 such as the Internet. Has the function to
- first AP server 14 and the second AP server 22 are shown, but in reality, a plurality of AP servers having the same function are installed in each data center, and a load (not shown) is shown. Load distribution is achieved through a balancer. In this way, if multiple AP servers are provided in the same data center, even if any AP server is planned or unplanned, it is the same without switching to an AP server in another data center. The remaining AP server in the data center can be replaced, and downtime can be minimized.
- the number of DB servers is not limited, and three or more DB servers can be installed in each data center.
- each DB server 16 each has a common table, and the same data is stored in each table.
- each DB server includes an order table 40, an order cancellation table 41, an order detail table 42 and an order detail cancellation table 43.
- order table 40 data items of order ID (primary key), customer ID (external key), and time stamp are set.
- order cancellation table 41 data items of order ID (primary key / foreign key) and time stamp are set.
- order detail ID primary key
- order ID external key
- item ID external key
- quantity data items are set.
- order detail cancellation table 43 order detail ID (primary key / foreign key) and time stamp data items are set.
- the first AP server 14 is connected to the first DB server 16 and the second DB server 18 via the LAN, and is installed in the second data center 20 via the communication line 29.
- the DB server 24 and the fourth DB server 26 are also connected.
- the second AP server 22 is connected to the third DB server 24 and the fourth DB server 26 via the LAN, and is installed in the first data center 12 via the communication line 29.
- the first DB server 16 and the second DB server 18 are also connected.
- the client terminal 28 installed in eastern Japan is connected to the first AP server 14 installed in the first data center 12, and the client terminal 28 installed in western Japan is connected to the second data center 20. It is connected to a second AP server 22 installed inside.
- each data center normally provides services to neighboring client terminals 28, but also provides services to client terminals 28 nationwide in the event of a disaster.
- DB servers usually need to keep data of the same content mutually.
- the AP server can request any DB server to extract data when referring to the data. Dispersion can be achieved.
- the number of data centers is not limited to two. As many data centers as possible are provided in various locations, and multiple AP servers with the same functions are installed in each data center. It is desirable to connect to all DB servers via a communication network.
- FIG. 3 shows the internal configuration of the first AP server 14 and the second AP server 22.
- the business processing unit 30, the artificial key management unit 32, the data control unit 34, and a plurality of DB communications are shown. Part 38.
- the business processing unit 30 executes data generation processing, arithmetic processing, registration processing in the DB server, etc. in response to a request from the client terminal 28, and the AP server CPU operates according to a dedicated application program. Is realized.
- the artificial key management unit 32 has a function of issuing an artificial key (surrogate key) in response to a request from the business processing unit 30 (details will be described later).
- the artificial key management unit 32 is realized by the CPU of the AP server operating according to dedicated middleware.
- the data control unit 34 When the data control unit 34 receives a data registration instruction from the business processing unit 30, the data control unit 34 has a function of replicating data as many as the number of DB servers and passing them to the DB communication unit 38. This is realized by the CPU of the AP server operating according to the above. In addition, the data control unit 34 has a function of receiving an instruction from the artificial key management unit 32 and instructing the DB communication unit 38 in charge of each DB server installed in the same data center to update the artificial key management data. (Details will be described later).
- Each DB liaison unit 38 performs functions such as issuing an SQL statement to a DB server assigned to itself in advance and instructing additional registration and reference of data, and the CPU of the AP server according to dedicated middleware. It is realized by operating.
- the business processing unit 30 that has generated data as a result of the business processing requests the artificial key management unit 32 to designate a table and issue an artificial key (S10).
- an issue of an artificial key for “order ID” is requested.
- the artificial key management unit 32 Upon receipt of this, the artificial key management unit 32 refers to the artificial key management table 46 stored in the DB server installed in the same data center (S12).
- the artificial key management table 46 includes data items of “table ID”, “AP server ID”, and “next key value”, in units of “table ID” + “AP server”. The latest artificial key (next key value) is managed.
- the “artificial key” is a numerical value having a predetermined length (for example, 32 bits or 64 bits). In the last digit (end) of the numerical value, an identification code (any numerical value from 0 to 9) for specifying the AP server that generated the data is set.
- the relationship between the ID of each AP server and a numerical value from 0 to 9 is defined.
- the AP server management table 48 and the data center management table 49 the relationship between each AP server and the data center is defined. Similar to the artificial key management table 46, the lower one digit management table 47, the AP server management table 48, and the data center management table 49 of these artificial keys are also stored in the DB server in the same data center.
- the artificial key management unit 32 updates the value of “next key value” related to the order table 40 and notifies the business processing unit 30 of the latest artificial key (value before update) (S14). At the time of the above update, the artificial key management unit 32 removes the identification code at the end of the “previous value (the latest value) above” for the “next key value” in the order table 40 related to the AP server. Is set to a value obtained by adding 1 to the numerical value formed by the part.
- the update method of the latest value of the artificial key is not limited to such “ascending order”, but “in the immediately preceding value (the latest value described above) excluding the identification code at the end. It may be “descending order” in which “a value obtained by subtracting 1 from a configured numerical value” is set.
- the identification code of the AP server is not limited to the numerical value of “0 to 9” as described above, and other character types may be used. Further, an identification code may be inserted at the head of the artificial key. Further, only the numerical value excluding the identification code of the AP server is stored in the “next key value” of the artificial key management table 46, and the artificial key management unit 32 sets the corresponding identification code at the time of issuing the artificial key. It can also be added to the end of the numerical value and issued to the business processing unit 30.
- the business processing unit 30 Upon receiving the latest artificial key from the artificial key management unit 32, the business processing unit 30 generates data in which the artificial key is set as an ID in the primary key or the external key (S18). This data is transmitted to all DB servers via the data control unit 34 and the DB communication unit 38, and is additionally registered in corresponding tables (such as the order table 40 and the order details table 42) provided for each.
- the uniqueness of the artificial key is ensured in units of “AP server ⁇ table”, and each AP server is associated with a specific data center in the data center management table 49. For this reason, even if each AP server issues its own artificial key, the uniqueness of the last digit is ensured and there is no risk of duplicated artificial keys being issued. The uniqueness of is guaranteed.
- Data generated by the business processing unit 30 of each AP server is stored in a table in each DB server as described above, but deletion (delete) prohibition and update (update) prohibition in each table These restrictions are imposed in advance. In short, in this system 10, only addition (insert) and reference (select) to each table is allowed.
- the order detail cancellation data is added to the order detail cancellation table 43. Since the order item ID of the order item data to be canceled is filled in the primary key of this order item cancellation data, the business processing unit 30 includes the order item data registered in the order item table 42. Those whose order detail IDs are registered in the order detail cancellation table 43 are ignored as being out of scope.
- the business processing unit 30 receives the necessary artificial key from the population key management unit 32, and then, as shown in FIG. 7, three pieces of order details data (first order details) Data 61 to third order detail data 63) and one order data 64 are generated (S22).
- the order data 64 functions as parent data, and includes data items of a user ID of the user, an order date and time, and a time stamp in addition to the unique order ID.
- Each order detail data functions as child data, and includes an order ID, item ID, and quantity data items of parent data in addition to an original order detail ID.
- the business processing unit 30 first passes the three order details data to the data control unit 34 and requests registration to each DB server (S24). Receiving this, the data control unit 34 copies each order detail data into four cases, and, as shown in FIG. 8, the first DB server 16 to the fourth DB server 26 via each DB communication unit 38. To register. At this time, the order of arrival of each order detail data is not questioned, and the order may be preceded by each DB server.
- each DB server When each DB server receives data from the DB contact unit 38 and stores it in its own memory, it sends a registration completion notification to the DB contact unit 38, and then installs it in an external storage device such as a hard disk or SSD.
- the corresponding record is stored in the table (details will be described later).
- the registration completion notification transmitted from the DB server reaches the job processing unit 30 via each DB communication unit 38 and the data control unit 34 (S26).
- the business processing unit 30 receives a registration completion notification from any DB server for all of the first order detail data 61, the second order detail data 62, and the third order detail data 63 (S28). / Y), the order data 64 as the parent data is passed to the data control unit 34, and registration to each DB server is requested (S30).
- the data control unit 34 copies the order data into four items, and transmits the data to the first DB server 16 to the fourth DB server 26 via each DB communication unit 38, and each order.
- Register in table 40 When each DB server receives data from the DB contact unit 38 and stores it in its own memory, it sends a registration completion notification to the DB contact unit 38, and then installs it in an external storage device such as a hard disk or SSD. The corresponding record is stored in the specified table.
- the registration completion notification transmitted from the DB server reaches the job processing unit 30 via each DB communication unit 38 and the data control unit 34 (S32).
- the business processing unit 30 recognizes a time-out, and the order data See off registration of 64 (parent data) (S34). In this case, the business processing unit 30 generates the first order data having the different order ID and the first order detail data to the third order detail data having the different order detail IDs, and then again the first order detail data. Attempts to register order detail data to third order detail data. Then, when a registration completion notification is received from any DB server for each order detail data, new order data is registered in each DB server.
- the system 10 has a mechanism in which the order data as the parent data is not registered unless the registration in any DB server is completed for all the order details data as the child data. For this reason, by adopting the rule that “child data that does not have corresponding parent data registered at the time of data reference is excluded”, the registration of some order details data is temporarily failed. However, it becomes unnecessary to explicitly invalidate the remaining order detail data that has been successfully registered.
- the business processing unit 30 generates the parent data ⁇ ′ having substantially the same contents as the parent data ⁇ , the ID is changed, and is substantially the same as the previous child data D, child data E, and child data F.
- the child data D ′, the child data E ′, and the child data F ′ having the same contents and the new ID and the ID of the parent data ⁇ ′ are generated, and registration of each child data in the DB server is attempted.
- the business processing unit 30 registers the parent data ⁇ ′.
- the child data E and child data F that have been previously registered are left as they are on the table of the DB server.
- the system 10 conforms to the rule that “child data for which no corresponding parent data is registered is excluded from processing” as described above, when the business processing unit 30 aggregates data, etc. , The child data E and the child data F for which the corresponding parent data ⁇ is not registered are treated as non-reference targets. For this reason, even if the child data E and the child data F are not explicitly invalidated by the rollback process, there is no inconvenience that these inconsistent data are referred to.
- each DB server when each DB server is requested to register the order data, which is the parent data, in the above S30, there may be a situation in which no registration completion notification is returned from any DB server within a certain period of time.
- each child data (order detail data) registered in advance is not subject to reference, so there is no problem of dirty read. Therefore, the business processing unit 30 can repeat the process of S30 as many times as necessary until the registration of the parent data is completed.
- system 10 is applied to transactional data processing such as online mail order is shown, but it can also be applied to master data processing such as attribute management of employees and customers.
- FIG. 10 shows an example of a table stored in each DB server in such a case.
- a user table 70, a user cancellation table 71, a name table 72, a name cancellation table 73, and an address table 74 are shown.
- Each DB server includes an address cancellation table 75, a telephone number table 76, a telephone number cancellation table 77, an email table 78, and an email cancellation table 79.
- user ID primary key
- time stamp data items are set.
- user ID primary key / foreign key
- time stamp data items are set.
- name table 72 data items of name ID (primary key), user ID (foreign key), name and time stamp are set.
- name cancellation table 73 data items of name ID (primary key / foreign key) and time stamp are set.
- address table 74 data items of address ID (primary key), user ID (external key), address, and time stamp are set.
- address ID primary key / foreign key
- time stamp data items are set.
- telephone number table 76 data items of telephone number ID (primary key), user ID (external key), telephone number, and time stamp are set.
- telephone number cancellation table 77 data items of telephone number ID (primary key / foreign key) and time stamp are set.
- e-mail table 78 data items of an e-mail ID (primary key), a user ID (external key), a mail address, and a time stamp are set.
- e-mail ID primary key
- user ID external key
- time stamp data items are set.
- the business processing unit 30 receives the necessary artificial key from the population key management unit 32, and then, as shown in FIG. 12, four pieces of attribute data (name data 80, address data) 81, telephone number data 82, e-mail data 83) and one user data 84 are generated (S42).
- the user data 84 functions as parent data, and has unique user ID and time stamp data items. Each attribute data functions as child data.
- Each attribute data functions as child data.
- parent data user ID, attribute (name / address / phone number) / Mail address) and time stamp data items In the time stamp of each data, the same time is described in milliseconds.
- the job processing unit 30 first passes four pieces of attribute data to the data control unit 34, and requests registration to each DB server (S44). Receiving this, the data control unit 34 copies each attribute data into four cases, and registers them in the first DB server 16 to the fourth DB server 26 via each DB communication unit 38. At this time, the arrival order of the attribute data is not questioned, and the order may be preceded by each DB server.
- each DB server When each DB server receives data from the DB contact unit 38 and stores it in its own memory, it sends a registration completion notification to the DB contact unit 38, and then installs it in an external storage device such as a hard disk or SSD. The corresponding record is stored in the specified table.
- the registration completion notification transmitted from the DB server reaches the job processing unit 30 via each DB communication unit 38 and the data control unit 34 (S46).
- the registration completion notification is returned from any DB server for all of the name data 80, address data 81, telephone number data 82, and e-mail data 83 (S48 / Y)
- the business processing unit 30 returns the parent data Is transferred to the data control unit 34, and registration to each DB server is requested (S50).
- the data control unit 34 copies the user data 84 into four cases, and transmits the user data 84 to the first DB server 16 to the fourth DB server 26 via each DB communication unit 38, and It is registered in the user table 70.
- each DB server receives data from the DB contact unit 38 and stores it in its own memory, it sends a registration completion notification to the DB contact unit 38, and then installs it in an external storage device such as a hard disk or SSD. The corresponding record is stored in the specified table.
- the registration completion notification transmitted from the DB server reaches the job processing unit 30 via each DB communication unit 38 and the data control unit 34 (S52).
- the business processing unit 30 recognizes a timeout and the user data 84 See off the registration (S54). In this case, after generating the user data with the new user ID and the attribute data with another name ID and the new user ID, the business processing unit 30 tries to register with each DB server again. Then, when a registration completion notice is received from any DB server for each attribute data, new user data is registered in each DB server.
- the business processing unit 30 can identify the latest name by comparing the time stamps of the old and new name data.
- the old name data is also left as it is in the name table 72, it is possible to deal with the case where it becomes necessary to refer to the user's maiden name later.
- user revocation data having the user ID is registered in the user revocation table 71, so that all data related to the user can be invalidated. Also in this case, since the data is left as it is in the user table 70, the name table 72, the address table 74, etc., it is possible to refer to the data about the withdrawal user after the fact.
- This update management table 85 includes user ID and time stamp data items.
- the update address data 86, the update phone number data 87, and the update management data 88 are updated by the business processing unit 30 as shown in FIG. Generated.
- the updated address data 86 includes the previous address ID and user ID, and the changed address and time stamp.
- the updated telephone number data 87 includes the previous telephone number ID and user ID, and the changed telephone number and time stamp.
- the update management data 88 includes a user ID and a time stamp. The same time is recorded in each time stamp of the update address data 86, the update telephone number data 87, and the update management data 88.
- the business processing unit 30 transmits the updated address data 86 and the updated telephone number data 87 to each DB server via the data control unit 34 and each DB communication unit 38, and requests registration. Receiving this, each DB server stores the updated address data 86 in the address table 74 and the updated telephone number data 87 in the telephone number table 76.
- the business processing unit 30 sends the data control unit 34 and each DB communication unit 38 to each other.
- the update management data 88 is transmitted to each DB server via the server, and registration is requested.
- the business processing unit 30 updates the update management data. Hold 88 transmissions. After the time-out, the business processing unit 30 newly generates updated address data, updated telephone number data, and update management data, and tries to register the updated address data and updated telephone number data again.
- the first updated telephone number data 87 that has been successfully registered is left on the DB server side, but when the business processing unit 30 handles each attribute data, the rollback is performed by applying the following rules: Even if the update telephone number data 87 is not explicitly invalidated by the process, it can be substantially invalidated.
- each DB server As described above, and each AP server has a function to execute the same business process.
- services can be provided in parallel, and the load of the entire system 10 can be distributed.
- each DB server when each DB server is requested to register multiple child data prior to registration of the parent data, it is possible to move to registration of the parent data when a registration completion notification is received from at least one DB server for each data. Since there is no need to wait for registration completion notifications from all DB servers, processing can be speeded up.
- the data control unit 34 recognizes that a communication failure or machine trouble has occurred, and places the DB server in offline mode. Transition. Specifically, the DB server is temporarily disconnected from the system 10, and the operation mode is based on only the remaining DB servers.
- the disconnected DB server is inspected and necessary recovery measures are taken. For example, if it is determined that the registration completion notification has not arrived due to a failure of the communication device, replace the DB server with a new communication device, and then change the DB server to the write mode (only data writing is permitted, (Prohibited state) and copy the difference data from another DB server installed in the same data center.
- each business data is allowed to be added only, and a rule that does not allow deletion or update is applied. Therefore, data recovery is extremely easy.
- deletion or update of data is allowed, in order to recover data, addition, deletion, or update of data is started from a certain point based on the update history information held by the DB server. It must be reproduced in order, and this takes a long time and a large load.
- the DB server When the stored data catches up to the latest state, the DB server is set to the read / write mode (a state in which data writing and reference is permitted) and reconnected to the system 10. Thereafter, the data control unit 34 resumes data transmission / reception via the DB communication unit 38 in charge of the DB server.
- the task processing unit 30 can read the data.
- memory is a volatile storage means, and data is lost when power supply is stopped, so when data is stored in a nonvolatile storage means (hard disk, etc.) A notification should be returned.
- a nonvolatile storage means hard disk, etc.
- the above-mentioned various business data are stamped with a millisecond precision time stamp by the business processing unit 30 as described above. Even when the maximum ID is reached and an ID that has already been issued is reissued (recycled), the business processing unit 30 can determine the old and new data by comparing the time stamps.
- the same kind of table is subdivided in units of a certain period, and each time this period elapses, the data storage destination is changed to a new physically separated table. It can be solved effectively.
- the order details table 42 may be subdivided into “August 2016 order details table”, “September 2016 order table”, and so on. If the value of the artificial key reaches MAX within one month, it may be operated so as to move to a new table of the same type every week or day.
- the existence of a plurality of AP servers and a plurality of DB servers is not necessarily an essential requirement, and it can function effectively in an environment having at least one AP server and one DB server. .
- FIG. 15 is an overall configuration diagram of the second data management system 210 according to the present invention.
- the DB server 212, the first AP server 214, the second AP server 216, and the third AP server 218 are shown in FIG. It has.
- the DB server 212 and the first AP server 214, the second AP server 216, and the third AP server 218 are connected via a communication network.
- a purchase table 220 for example, a purchase table 220, a purchase cancellation table 222, a sales price table 224, and a sales price cancellation table 226 are provided.
- the purchase table 220 is set with data items of purchase ID, supplier ID, product ID, quantity, price, and time stamp.
- each data item of purchase ID and time stamp is set in the purchase cancellation table 222.
- the sales price table 224 as shown in FIG. 16C, data items of sales price ID, product ID, price, and time stamp are set in the sales price cancellation table 226, as shown in FIG. 16D, data items of sales price ID and time stamp are set.
- the purchase cancellation data is added to the purchase cancellation table 222 shown in FIG. Since the primary key of this purchase cancellation data is filled with the purchase ID of the purchase data to be canceled, the AP server uses each purchase registered in the purchase table 220 when using this data. Among the data, those whose purchase IDs are registered in the purchase cancellation table 222 are ignored as being excluded.
- the sales price cancellation data is added to the sales price cancellation table 226 in FIG. .
- the main key of the sales price cancellation data is filled with the sales price ID of the sales price data to be canceled.
- the AP server uses the sales price data registered in the sales price table 224. Among these, those whose sales price ID is registered in the sales price cancellation table 226 are ignored as excluded.
- a new record having the corrected data is registered. For example, when modifying the "quantity" of certain purchase data, the AP server newly generates purchase data with the same purchase ID, supplier ID, product ID, and price, but only the quantity changed. The data is transmitted to the server 212 and additionally registered in the purchase table 220. In addition, even if the purchase data before correction and the purchase data after correction have the same purchase ID, the time when each data was generated is recorded in the time stamp with millisecond accuracy, so the AP server references Sometimes you can definitely identify the latest data.
- the first AP server 214 accepts purchase data and purchase cancellation data transmitted from the client terminal 230 operated by the purchase staff 228 assigned to each location, and SQL statements corresponding to the contents of each data. Is issued to the DB server 212 and is registered in the purchase table 220 and the purchase cancellation table 222.
- the second AP server 216 has a function of generating sales price data for the next day by batch processing based on the purchase data generated on the previous day.
- the processing content of the second AP server 216 will be described with reference to the flowchart of FIG.
- the second AP server 216 reads the purchase data for the previous day from the purchase table 220 (S210).
- the execution date of the batch processing is October 22, the purchase data generated on October 21 corresponds.
- the second AP server 216 refers to the time stamp so that the target data for batch processing (data generated on October 21) and the non-target data ( Data generated before October 21 or on October 22) can be clearly distinguished.
- the second AP server 216 refers to the purchase cancellation table 222, and invalidates the purchase data for the previous day subject to batch processing that has a purchase ID registered in the purchase cancellation table.
- the purchase data is excluded (S212).
- the second AP server 216 aggregates the purchase price and quantity of each valid purchase data for each product, and calculates the average purchase price on the previous day of each product (S214).
- the second AP server 216 calculates a sales price for the next day (October 23rd) of each product by adding a predetermined profit to the average purchase price (S216).
- the second AP server 216 stores the sales price data for the next day of each product in the sales price table 224 during the day (October 22) (S218).
- the second AP server 216 sends the sales price cancellation data with the sales price ID of the sales price data to the DB server 212 for sales. Register in the price cancellation table 226
- the third AP server 218 When the third AP server 218 receives a product price presentation request from the client terminal 230 operated by the general user 232, the third AP server 218 refers to the sales price table 224 and the sales price cancellation table 226 and sells each product effective on the day. It has a function of deriving a price and transmitting it to the client terminal 230 and a function of receiving an order for a product.
- the sales price effective for the third AP server 218 on the day is the sales price cancellation data corresponding to the sales price data generated on the previous day (October 22) by the second AP server 216. This means that the price is not registered in the sales price cancellation table 226.
- the third AP server 218 can accurately identify the sales price of each product to be presented on the day.
- the data generated by each AP server of the system 210 is stamped with the data generation time as a time stamp, and the generated data is not permanently deleted or updated, and is semi-permanent. Are stored in each table. For this reason, for example, even if it becomes necessary to analyze the transition of the purchase price or sales price of a certain product at a later date, it is possible to flexibly cope with the aggregation of past data stored in each table.
- FIG. 19 shows an example in which the system 210 is configured by a first DB server 212 and a second DB server 212 ′ in addition to the first AP server 214, the second AP server 216, and the third AP server 218. Show.
- the number of DB servers is not limited to two, and it is desirable to install more DB servers.
- each of the first DB server 212 and the second DB server 212 ′ includes a purchase table 220, a purchase cancellation table 222, a sales price table 224, and a sales price cancellation table 226.
- the same data is stored in duplicate. For this reason, when the first AP server 214 registers purchase data and the like, a plurality of SQL statements having the same contents are generated and the same data is simultaneously transmitted to the first DB server 212 and the second DB server 212 ′. Request registration. Similarly, when the second AP server 216 registers sales price data and the like, a plurality of SQL statements having the same contents are generated and simultaneously applied to the first DB server 212 and the second DB server 212 ′. Request data registration.
- the second AP server 216 or the third AP server 218 refers to the data
- the data is extracted from both the first DB server 212 and the second DB server 212 ′. Can be requested.
- the AP server recognizes that a communication failure or machine trouble has occurred and moves the DB server to offline mode. . Specifically, the DB server is temporarily disconnected from the system 10, and the operation mode is based on only the remaining DB servers.
- the disconnected DB server is inspected and necessary recovery measures are taken. For example, if it is determined that the registration completion notification has not arrived due to a failure of the communication device, replace the DB server with a new communication device, and then change the DB server to the write mode (only data writing is permitted, (Prohibited state) and copy the difference data from another DB server.
- each business data is allowed to be added only, and a rule in which deletion or update is not permitted is applied. Therefore, data recovery becomes extremely easy.
- deletion or update of data is allowed, in order to recover data, addition, deletion, or update of data is started from a certain point based on the update history information held by the DB server. It must be reproduced in order, and this takes a long time and a large load.
- the DB server is set to the read / write mode (a state in which data writing and reference are allowed) and reconnected to the system 210.
- FIG. 20 shows a third data management system 250 in which the present invention is applied to user data management work, and includes a DB server 252 and an AP server 254.
- the DB server 252 includes a user table 256 and a user cancellation table 258.
- DB server 252 For convenience of illustration, only one DB server 252 is shown, but a plurality of DB servers having tables common to each other can be used as described above.
- data items such as a user ID, name, address, telephone number, e-mail address, and time stamp are set in the user table 256.
- data items of user ID and time stamp are set in the user cancellation table 258, as shown in FIG. 21B.
- the AP server 254 When a new user registration request is transmitted from the client terminal 262 operated by the user 260, the AP server 254 stores user data including data items such as a user ID, name, address, telephone number, email address, and time stamp. Generate and request the DB server 252 to register in the user table 256.
- deletion (delete) prohibition and update (update) prohibition are imposed on the user table 256 in advance. For this reason, when the registration data needs to be corrected, instead of updating the existing record, a new record including the corrected data is registered.
- the AP server 254 stores the same user ID, address, User data Y ′ having a telephone number and an e-mail address and having only the name changed to “Hanako Unno” is newly generated and transmitted to the DB server 252 to be additionally registered in the user table 256.
- the time when each data was generated is recorded in the time stamp with millisecond accuracy.
- the AP server 254 can definitely identify the latest data at the time of reference.
- the AP server 254 User ID, name, and email address are provided, and the user data X ′ with the address changed to “Mitaka City, Tokyo ...” and the phone number changed to “0422-45...” is newly generated and sent to the DB server 252; It is additionally registered in the user table 256.
- the AP server 254 each time, cancels the user with the user ID of the target user data.
- Data A to C are sent to the DB server 252 and registered in the user cancellation table 258 to cope with this.
- AP server 254 should immediately perform search, aggregation, etc. without using other records to recover data Can do.
- the AP server 254 retrieves the user data Y with the old date and time recorded in the time stamp among the user data matching the user ID of the user data Y ′. By extracting, it can be immediately derived that the maiden name was "Saito".
- the AP server 254 extracts user data related to the user ID registered in the user revocation table 258 from the user table 256, and each user data You can send a promotional email to your email address.
- FIG. 23 shows the overall configuration of the account data management system 310 according to the present invention.
- a plurality of client terminals 322 made up of PCs and the like are connected to the AP server 312 via the Web server 320.
- a plurality of ATM terminals 326 are connected to the AP server 312 via the ATM server 324.
- the AP server 312 is load-balanced by multiplexing via a load balancer.
- the deposit management DB server 314 is provided with at least a deposit table 330, a deposit / remittance table 332, and a remittance reception table 334.
- the deposit table 330 stores a record including data items such as a deposit ID, an account number, and an amount.
- the deposit / remittance table 332 stores a record including data items such as a deposit ID and a remittance ID.
- the remittance acceptance table 334 stores a record having data items such as a remittance ID.
- the account management DB server 316 is provided with at least an account table 336.
- the account table 336 stores a record including data items such as an account number, a password, a deposit type, and an account name.
- the withdrawal management DB server 318 is provided with at least a withdrawal table 338, a withdrawal / remittance table 340, a remittance table 342, and a remittance completion table 344.
- the withdrawal table 338 stores a record including data items such as a withdrawal ID, an account number, and an amount.
- the withdrawal / remittance table 340 stores a record including data items such as a withdrawal ID and a remittance ID.
- the remittance table 342 stores a record including data items such as a remittance ID.
- the remittance completion table 344 stores a record including data items such as a remittance ID.
- the deposit management DB server 314 there are provided a plurality of DB servers 314 ', 314 ",... Having the same table (payment table 330, deposit / remittance table 332, remittance reception table 334). In response to this, the same data is simultaneously transmitted from the AP server 312 and additional registration in each table is executed in duplicate.
- the withdrawal management DB server 318 there are a plurality of DB servers 318 ′, 318 ”,... Having the same table (withdrawal table 338, withdrawal / remittance table 340, remittance table 342, remittance completion table 344). The same data is simultaneously transmitted from the AP server 12 to each DB server 318, and additional registration to each table is executed in duplicate.
- the AP server 312 can freely access data from any DB server when referring to the data. Data can be read out, and the efficiency of data reference processing can be improved. It is also possible to prepare for large-scale disasters such as earthquakes by disposing some DB servers with the same contents at remote locations.
- the deposit management DB server 314 and the withdrawal management DB server 318 are set in advance with a restriction that only addition and reference of data is allowed, and updating or deletion of data is prohibited.
- the bank user can deposit cash in his / her own account or withdraw cash from his / her own account.
- the account number is sent to the AP server 312 via the ATM server 324.
- a password is sent.
- the AP server 312 refers to the account table 336 of the account management DB server 316 and checks the validity of the corresponding account number and password.
- the deposit amount is transmitted from the ATM terminal 326 to the AP server 312.
- the AP server 312 transmits the deposit data (deposit ID, account number, amount, etc.) to the deposit management DB server 314.
- the receipt management DB server 314 additionally registers this receipt data in the receipt table 330.
- the withdrawal amount is transmitted to the AP server 312 via the ATM server 324.
- the AP server 312 first calculates the balance of the account (the balance calculation method will be described later). If the balance exceeds the withdrawal amount, cash withdrawal instruction data is sent to the ATM terminal 326, and corresponding withdrawal data (withdrawal ID, account number, amount, etc.) is generated and withdrawn. It is sent to the management DB server 318.
- the withdrawal management DB server 318 additionally registers the withdrawal data in the withdrawal table 338.
- the user can also access the AP server 312 via the Web server 320 from the client terminal 322 placed at home or at work, and deposit and withdraw (charge) using an electronic money card.
- the AP server 312 (S310) generates a unique remittance ID and withdrawal ID, as well as remittance data (remittance ID, etc.), withdrawal data (withdrawal ID, user account number, amount, etc.), Generate withdrawal / remittance data (withdrawal ID, remittance ID, etc.), send them to the withdrawal management DB server 318, and register them in the remittance table 342, withdrawal table 338, withdrawal / remittance table 340 Is requested (S312).
- the withdrawal management DB server 318 sends the remittance data, withdrawal data, withdrawal / remittance data as one transaction to the remittance table 342, withdrawal table 338, withdrawal / remittance table 340. Added all at once.
- the AP server 312 that has received the registration completion notification for each table from the withdrawal management DB server 318 (S314) notifies the ATM terminal 326 of the completion of remittance via the ATM server 324 (S316).
- the AP server 312 generates a unique deposit ID, and then receives remittance acceptance data (remittance ID, etc.), deposit data (payment ID, transfer destination account number, amount, etc.), deposit / remittance data (payment ID, (Remittance ID, etc.) are generated and transmitted to the deposit management DB server 314 to request registration in the remittance acceptance table 334, the deposit table 330, and the deposit / remittance table 332 (S318).
- the deposit management DB server 314 collects the remittance acceptance data, the deposit data, and the deposit / remittance data as a single transaction for the remittance acceptance table 334, the deposit table 330, and the deposit / remittance table 332. Added.
- the AP server 312 Upon receiving the registration completion notification from the deposit management DB server 314 (S320), the AP server 312 transmits remittance completion data (such as remittance ID) to the withdrawal management DB server 318 and requests registration in the remittance completion table. (S322).
- remittance completion data such as remittance ID
- the AP server 312 periodically checks the remittance table 342 and the remittance completion table 344, and the remittance table 342 If there is a remittance process in which no remittance ID is registered, a process of resending the deposit data, deposit / remittance data, and remittance acceptance data to the deposit management DB server 314 is executed in the background.
- the receipt management DB server 314 completes the batch addition of each data again based on the resent registration request and then sends a registration completion notification to the AP server 312. To do.
- the AP server 312 receives the registration completion notification from the deposit management DB server 314, the AP server 312 transmits remittance completion data to the withdrawal management DB server 318 and requests registration in the remittance completion table.
- the deposit management DB server 314 has 2 The registration completion notification is retransmitted without registering the data redundantly based on the subsequent registration requests.
- the AP server 312 (S330) transmits the account number to the withdrawal management DB server 318, and requests extraction of withdrawal data associated with the account number (S332). Then, when the corresponding withdrawal data is transmitted from the withdrawal management DB server 318, the AP server 312 adds the amounts of each withdrawal data, and obtains the total amount (S334).
- the AP server 312 transmits the account number to the deposit management DB server 314, and requests the extraction of deposit data associated with the account number (S336). Then, when the corresponding deposit data is transmitted from the deposit management DB server 314, the AP server 312 adds the amounts of the respective deposit data and obtains the total amount (S338).
- the AP server 312 derives the current balance by subtracting the total amount of withdrawal data from the total amount of deposit data (S340). This balance data is transmitted to the ATM terminal 326 via the ATM server 324 (S342) and displayed on the display.
- remittance is performed when processing across accounts, such as remittance, by adopting a method that calculates by calculation as necessary without providing a dedicated table to manage the account balance on the DB server side. It becomes possible to separate the withdrawal process from the original account and the deposit process to the remittance destination account.
- the AP server 312 can be multiplexed via the load balancer as described above.
- the AP server 312 can be multiplexed via the load balancer as described above.
- the AP server 312 By configuring the AP server 312 with a multi-core server computer, it is possible to cope sufficiently. If data exceeds the range where hardware can be increased, the total value up to the previous day is stored as a snapshot on the AP server. Although the operation of updating the snapshot every day occurs, there is an effect of reducing the calculation load of repeatedly summing past detail lines that are unchanged. By adding the data generated on that day and the snapshots up to the previous day, it becomes possible to maintain the response speed of balance confirmation that does not depend on the number of history records in the detail line.
- the AP server 312 sends a registration completion notification of remittance related data (remittance data, withdrawal data, withdrawal / remittance data) from the withdrawal management DB server 318. Only when it is received, the corresponding deposit-related data (remittance acceptance data, deposit data, deposit / remend data) is transmitted from the AP server 312 to the deposit management DB server 314. Then, the registration completion notification is received from the deposit management DB server 314, and the transfer completion data is registered in the remittance completion table 344 of the withdrawal management DB server 318, from the AP server 312 to the deposit management DB server 314. It is equipped with a mechanism to send payment related data many times. That is, the AP server 312 has a mechanism for ensuring the order of registration of remittance related data and registration of payment related data.
- the AP server 312 It is not necessary to refer to the time stamp, and the current balance can be simply derived by subtracting the total amount of the existing withdrawal data from the total amount of the existing deposit data.
- this account data is created by making the system configuration independent of the consistency at the time of writing and making the consistency at the time of reading independent of the consistency at the time of writing. This means that the management system 310 does not require a large-scale mechanism for synchronizing the clocks of the servers on a global scale.
- the table stored in the deposit management DB server 314 and the withdrawal management DB server 318 as described above has a restriction that prohibits deletion and update of records, Since it is a mechanism that allows only the addition and reference of records, there is an advantage that the processing on the DB server side is also made more efficient.
- the AP server 312 has a mechanism for retransmitting the deposit data, deposit / remittance data, and remittance acceptance data to the deposit management DB server 314. As long as at least one of the plurality of deposit management DB servers 314 and at least one of the plurality of withdrawal management DB servers 318 are operating, the result is that data consistency is guaranteed. have.
- the efficiency of distributed processing can be improved.
- the AP server 312 can be simultaneously transmitted from the plurality of DB servers. Data can be extracted in parallel, and further processing efficiency can be achieved. If a system configuration that assumes that time synchronization is performed between servers is adopted, this multiplexing requires a review of the configuration of the time synchronization system. Since it is not premised that time synchronization is performed between them, multiplexing can be easily performed correspondingly.
- the system 310 may be applied to account data management for managing user points.
- “Deposit” is “Add Point”
- “Withdrawal” is “Use Point (Apply)”
- “Remittance” is “Point Transfer”
- “Balance” is “Point Balance”
- “Amount” Should be read as “points” and “account number” as “account”.
- 1 is an overall configuration diagram of a data management system according to the present invention. It is a figure which shows an example of the table stored in each DB server. It is a block diagram which shows the internal structure of a 1st AP server and a 2nd AP server. It is a flowchart which shows the issuing procedure of an artificial key. It is a figure which shows structures, such as an artificial key management table. It is a flowchart which shows the process sequence at the time of applying this system to the online mail order business of goods. It is a figure which shows the specific example of order detailed data (child data) and order data (parent data). It is a schematic diagram which shows a mode that several order specification data are registered into several DB server.
- FIG. 1 is an overall configuration diagram of a first data management system.
- FIG. It is a figure which shows an example of the table stored in DB server.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Economics (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】関連する複数のデータをDBサーバに登録するに際し、一部のデータの登録に失敗した場合でもロールバック処理を行う必要のない技術の実現。 【解決手段】APサーバ12とDBサーバ14を備えたデータ管理システム10。APサーバ12は、業務データをDBサーバ14に送信して登録を依頼する。業務データは、相互に関連性を有する親データと複数の子データとの組合せからなり、各子データは親データのIDを備える。業務データの登録に際し、APサーバ12はまず各子データの登録を試行し、DBサーバ14から全ての子データに係る登録完了通知が届いた時点で親データの登録を依頼する。所定時間内に何れかの子データの登録完了通知が届かない場合、APサーバ12は親データの登録を中止する。業務データの参照に際し、APサーバ12は関連する親データの登録のある子データのみを対象とし、親データの登録のない子データは対象外とする。
Description
この発明はデータ管理システムに係り、特に、APサーバによって生成された各種業務データを、DBサーバに格納して管理する技術に関する。
[1] APサーバによって生成された各種業務データを、DBサーバに設けられたテーブルに保存しておき、必要に応じてこれらのデータを参照することが広く行われているが、一定の関連性を有する複数のデータを登録するに際し、一部のデータのみが登録され、残りのデータが何らかの原因によって登録されないと、データの利用時に不正な状態が生じるため、DBサーバによってトランザクション処理が実行される(非特許文献1参照)。
例えばオンラインショッピングサイトにおいて、ユーザから3種類の商品についての注文を受け付けたAPサーバは、図14に示すように、注文ID、カスタマID、注文日時等のデータ項目を備えた1件の注文データを生成すると共に、商品毎に注文明細ID、注文ID、アイテムID、数量等のデータ項目を備えた注文明細データ(1)、注文明細データ(2)、注文明細データ(3)を生成した後、DBサーバに各データを送信し、対応テーブルへの登録を依頼する。
因みに、各注文明細データは注文データの「注文ID」を共通に有しており、この注文IDによって一つに束ねられているため、注文データを「親データ」と、また注文明細データを「子データ」と観念することができる。
因みに、各注文明細データは注文データの「注文ID」を共通に有しており、この注文IDによって一つに束ねられているため、注文データを「親データ」と、また注文明細データを「子データ」と観念することができる。
これら4件のデータの登録を依頼されたDBサーバは、注文データを注文テーブルに、また注文明細データ(1)、注文明細データ(2)、注文明細データ(3)を注文明細テーブルに順に登録していき、全ての登録が完了した時点で、トランザクション完了の電文をAPサーバに送信する。APサーバ側では、このトランザクション完了の電文を受け取った時点で、各データを読み込みの対象とする。
これに対し、DBサーバによるデータの登録過程において、何らかの理由によって何れかの注文明細データの登録に失敗した場合、DBサーバは登録が完了したデータについての登録を取り消し、登録に失敗した旨の電文をAPサーバに送信する。
これを受けたAPサーバは、注文データ、注文明細データ(1)、注文明細データ(2)注文明細データ、(3)を再度DBサーバに送信し、データの登録処理を最初からやり直す。
これを受けたAPサーバは、注文データ、注文明細データ(1)、注文明細データ(2)注文明細データ、(3)を再度DBサーバに送信し、データの登録処理を最初からやり直す。
このように、相互に関連性を有する複数のデータを一トランザクションとしてまとめておき、全てのデータの登録が完了しない限りデータの登録を取り消すロールバック処理を実行することにより、一部が欠損した不完全なデータを読み込むダーティーリードがなくなり、データの読み取り一貫性を担保することが可能となる。
しかしながら、このようなトランザクション処理はDBサーバ側の機能として提供されるものであるため、一トランザクションに含まれる全てのデータを共通のDBサーバに送信する必要性があった。
このため、複数のDBサーバを用いた負荷分散化の要請には対応することが出来ないという問題があった。
また、ロールバック処理を実現するためには、DBサーバ側に更新ログを確実に残す仕組みを設けると共に、更新ログを用いて元の状態に復旧するという複雑な処理を強いることとなり、DBサーバの負荷を増大させる原因となっていた(非特許文献2参照)。
さらに、APサーバ側ではDBサーバから登録完了通知が届くまで待機する必要があり、処理の効率化に反する結果となっていた。
このため、複数のDBサーバを用いた負荷分散化の要請には対応することが出来ないという問題があった。
また、ロールバック処理を実現するためには、DBサーバ側に更新ログを確実に残す仕組みを設けると共に、更新ログを用いて元の状態に復旧するという複雑な処理を強いることとなり、DBサーバの負荷を増大させる原因となっていた(非特許文献2参照)。
さらに、APサーバ側ではDBサーバから登録完了通知が届くまで待機する必要があり、処理の効率化に反する結果となっていた。
[2] また、DBサーバはAPサーバから発行されるSQL文に応じて、業務データの登録、更新、削除、抽出処理を実行することとなるが(非特許文献3参照)、上記のようにDBサーバを介して業務データの更新や削除を実行してしまうと、後で更新前あるいは削除前のデータを参照する必要性が生じた場合に対応できないという問題が生じる。
例えば、人事系のマスタファイルの管理に関し、これまで結婚等によって名字に変更の生じた社員については氏名の上書更新で対応してきたシステムにおいて、途中で旧姓を参照する要件が追加された場合、失われた旧姓のデータを復旧することは容易ではない。
また、退職した社員についてはデータを削除することで対応してきた場合、後で退職社員のデータを参照する必要性が生じた際にも同様の問題が生じる。
例えば、人事系のマスタファイルの管理に関し、これまで結婚等によって名字に変更の生じた社員については氏名の上書更新で対応してきたシステムにおいて、途中で旧姓を参照する要件が追加された場合、失われた旧姓のデータを復旧することは容易ではない。
また、退職した社員についてはデータを削除することで対応してきた場合、後で退職社員のデータを参照する必要性が生じた際にも同様の問題が生じる。
もちろん、最初から社員属性データに名字の変遷を記録するためのデータ項目を設けておいたり、退職の場合には「退職」のデータ項目に退職のフラグを立てるように準備したりしておけばよいのであるが、データ設計の際に将来の必要性を完全に予測することは困難であり、データ構造の冗長性にも繋がるため、現実的な対応策とはいえない。
[3] また、DBサーバに蓄積されたデータに基づき、一定の間隔でバッチ処理を実行するシステムにおいては、バッチ処理の対象期間内に属するデータと、対象期間外に属するデータを明確に分離しておかなければならず、システム構成の複雑化や運用手順の煩雑化といった問題が生じていた。
トランザクション処理 インターネットURL:http://www.weblio.jp/content/%E7%A7%BB%E5%8B%95 検索日:2015年10月20日
「ROLLBACK」を実行すると何が行われるのか? インターネットURL:http://itpro.nikkeibp.co.jp/article/COLUMN/20071129/288388/ 検索日:2015年10月20日
SQLサーバの参照/挿入/更新/削除 インターネットURL:http://www.server-world.info/query?os=Windows_Server_2012&p=sql2012&f=21 検索日:2015年11月4日
この発明は、このような現状に鑑みて案出されたものであり、関連する複数のデータをDBサーバに登録するに際し、一部のデータについて登録の失敗が生じた場合でも、ロールバック処理を行う必要のないデータ管理技術の実現を第1の目的としている。
また、システムの運用途中で過去のデータの参照が必要となった場合にも、柔軟に対応可能なデータ管理技術の実現を第2の目的としている。
さらに、バッチ処理の対象データと対象外のデータを分離することなく、データの蓄積と並行してバッチ処理の実行を可能とするデータ管理技術の実現を第3の目的としている。
また、システムの運用途中で過去のデータの参照が必要となった場合にも、柔軟に対応可能なデータ管理技術の実現を第2の目的としている。
さらに、バッチ処理の対象データと対象外のデータを分離することなく、データの蓄積と並行してバッチ処理の実行を可能とするデータ管理技術の実現を第3の目的としている。
上記の目的を達成するため、請求項1に記載したデータ管理システムは、APサーバとDBサーバを備えたデータ管理システムであって、上記APサーバは、業務処理の結果生じた業務データを上記DBサーバに送信し、対応のテーブルへの登録を依頼する機能を備え、上記業務データは、相互に関連性を有する親データと、複数の子データとの組合せからなり、上記の各子データは、子データ固有のIDの他に、上記親データのIDを外部キーとして備えており、上記業務データの登録に際し、上記APサーバは、まず上記DBサーバに対して各子データの登録を依頼し、上記DBサーバから全ての子データに係る登録完了通知が届いた時点で親データの登録を上記DBサーバに依頼し、一定の時間内に何れかの子データの登録完了通知が届かない場合には、親データの登録を中止し、また登録済みの業務データの参照に際し、上記APサーバは、関連する親データの登録のある子データのみを参照の対象とし、関連する親データの登録のない子データについては参照の対象外とすることを特徴としている。
請求項2に記載したデータ管理システムは、請求項1のシステムであって、さらに、複数のDBサーバを備えており、上記親データの登録に際し、上記APサーバは、上記子データの登録を依頼したDBサーバとは別個のDBサーバに対して登録を依頼することを特徴としている。
請求項3に記載したデータ管理システムは、請求項1のシステムであって、さらに、同一のデータを格納する共通のテーブルをそれぞれ備えた複数のDBサーバを備えており、上記業務データの登録に際し、上記APサーバは、まず上記の各DBサーバに各子データの登録を依頼し、全ての子データについて、何れかのDBサーバから登録完了通知が届いた時点で親データの登録を上記の各DBサーバに依頼し、一定の時間内に何れかの子データの登録完了通知が何れのDBサーバからも届かない場合には、親データの登録を中止することを特徴としている。
請求項4に記載したデータ管理システムは、請求項3のシステムであって、さらに、上記DBサーバのテーブルには、レコードの参照及び追加のみが許容され、削除及び更新が禁止される制約が設けられていることを特徴としている。
請求項5に記載したデータ管理システムは、請求項4のシステムであって、さらに、上記APサーバは、既存の業務データを削除する必要がある場合に、取消対象となる業務データのIDをセットするデータ項目を備えたデータ取消用データを生成すると共に、このデータ取消用データを各DBサーバに設けられた取消専用のテーブルに追加登録させることにより、既存の業務データを実質的に無効化することを特徴としている。
請求項6に記載したデータ管理システムは、請求項4または5のシステムであって、さらに、上記の各業務データには、それぞれ業務処理時のタイムスタンプが刻印されており、上記APサーバは、既存の業務データを更新する必要がある場合に、当該業務データと同じIDを有すると共に、修正後の値及び修正時のタイムスタンプを備えた更新用業務データを新たに生成し、この更新用業務データを上記の各DBサーバに設けられた該当のテーブルに追加登録させることにより、既存の業務データを実質的に更新することを特徴としている。
請求項7に記載したデータ管理システムは、請求項6のシステムであって、さらに、上記APサーバは、相互に関連性を有する既存の複数の子データを同時に更新する必要がある場合に、各子データの固有のIDと、相互に共通する親データのIDと、それぞれの修正後の値と、相互に共通する修正時のタイムスタンプを備えた更新用子データを新たに生成すると共に、上記親データのIDと、上記タイムスタンプを備えた更新管理データを生成し、まず上記の各DBサーバに対して各更新用子データの登録を依頼し、全ての更新用子データについて、何れかのDBサーバから登録完了通知が届いた時点で更新管理データの登録を上記の各DBサーバに依頼し、一定の時間内に何れかの子データの登録完了通知が何れのDBサーバからも届かない場合には、更新管理データの登録を中止し、また更新用子データの参照に際し、各更新用子データに係る親データのID及びタイムスタンプを備えた更新管理データの登録のある更新用子データのみを参照の対象とし、上記更新管理データの登録のない更新用子データについては参照の対象外とすることを特徴としている。
請求項8に記載したデータ管理システムは、APサーバとDBサーバを備えたシステムであって、上記DBサーバのテーブルには、レコードの参照及び追加のみが許容され、削除及び更新が禁止される制約が設けられており、上記APサーバは、業務処理の結果生じた業務データにデータ生成時刻をタイムスタンプとして追加した上で、上記DBサーバに送信して対応のテーブルへの登録を依頼する機能と、既存の業務データを削除する必要がある場合に、取消対象となる業務データのIDをセットするデータ項目を備えたデータ取消用データを生成すると共に、これを上記DBサーバに設けられた取消専用のテーブルに追加登録させることにより、既存の業務データを実質的に無効化する機能と、既存の業務データを更新する必要がある場合に、当該業務データと同じIDを有すると共に、修正後の値及び修正時のタイムスタンプを備えた更新用業務データを新たに生成すると共に、この更新用業務データを上記DBサーバに設けられた該当のテーブルに追加登録させることにより、既存の業務データを実質的に更新する機能と、過去の特定時点における業務データを参照する必要がある場合に、上記テーブルに格納された各業務データのタイムスタンプに記録された時刻に基づいて該当の業務データを抽出する機能を備えたことを特徴としている。
請求項9に記載したデータ管理システムは、請求項8のシステムであって、さらに上記APサーバは、上記テーブルに格納された業務データの中で、特定の期間内に生成された業務データに基づいて所定のバッチ処理を実行する機能を備え、このバッチ処理に際し、上記テーブルに格納された各業務データのタイムスタンプに記録された時刻に基づいて、バッチ処理の対象となる業務データと、対象外の業務データとを識別することを特徴としている。
請求項1に記載したデータ管理システムにあっては、全ての子データについてDBサーバにおける登録が完了しない限り親データの登録がなされない仕組みを備えており、またデータ参照時には「対応する親データの登録がない子データは対象外とする」というルールが適用されるため、一部の子データについての登録が失敗した場合であっても、登録に成功した残りの子データをロールバック処理によって削除する必要がない。
また、DBサーバによるロールバック処理が不要となる結果、従来のように一つのトランザクションに含まれる複数のデータについては同一のDBサーバが登録処理を担当しなければならないという制約から開放される。
さらに、従来のロールバックを前提としたトランザクション処理においては、全データの登録完了時にDBサーバからトランザクション成功の電文(コミット)が発行されるため、APサーバ側ではこの電文を受け取るまで待機する必要があった。これに対し、このシステムの場合にはDBサーバから各データの登録完了通知が届くだけであり、トランザクション完了の電文が発行されることがないため、その分、システム全体でのデータ通信量を削減することができると共に、APサーバの待ち時間を削減することが可能となる。
また、DBサーバによるロールバック処理が不要となる結果、従来のように一つのトランザクションに含まれる複数のデータについては同一のDBサーバが登録処理を担当しなければならないという制約から開放される。
さらに、従来のロールバックを前提としたトランザクション処理においては、全データの登録完了時にDBサーバからトランザクション成功の電文(コミット)が発行されるため、APサーバ側ではこの電文を受け取るまで待機する必要があった。これに対し、このシステムの場合にはDBサーバから各データの登録完了通知が届くだけであり、トランザクション完了の電文が発行されることがないため、その分、システム全体でのデータ通信量を削減することができると共に、APサーバの待ち時間を削減することが可能となる。
請求項2に記載したデータ管理システムによれば、親データと子データの登録が別個のDBサーバで処理されるため、システム全体の負荷分散を図ることが可能となる。
請求項3に記載したデータ管理システムの場合、並列化された複数のDBサーバの少なくとも一つから各子データの登録完了通知が届けば親データの登録に移行できるため、システム全体の負荷分散と処理の迅速化を図ることが可能となる。
請求項4に記載したデータ管理システムの場合、各DBサーバに対するレコードの更新及び削除が禁止されるため、何れかのDBサーバにトラブルが発生した場合に、他のDBサーバから差分データをコピーするだけで簡単に復旧可能となる利点を有している。
この場合でも、請求項5及び6に記載の仕組みを用いることにより、業務データの実質的な削除や更新を実現することができる。
この場合でも、請求項5及び6に記載の仕組みを用いることにより、業務データの実質的な削除や更新を実現することができる。
ところで、相互に関連性を有する複数の子データについて、請求項6の仕組みを用いて同時に値を更新するに際し、一部の子データについて登録に失敗した場合、当該子データに係る親データの登録は既に存在しているため、親データの不存在を理由に無効化するルールが適用できない。
これに対し、請求項7に記載の仕組みを用いれば、同じタイムスタンプ及び親データのIDを備えた更新管理データの不存在を理由に、このような不正な子データを実質的に無効化することが可能となる。
これに対し、請求項7に記載の仕組みを用いれば、同じタイムスタンプ及び親データのIDを備えた更新管理データの不存在を理由に、このような不正な子データを実質的に無効化することが可能となる。
請求項8に記載のデータ管理システムの場合、APサーバによって生成される業務データには、データ生成時刻がタイムスタンプとして刻印されており、かつ、一旦生成された業務データは削除及び更新もされることなく、半永久的にDBサーバのテーブルに保存されることとなる。このため、想定外のデータ参照要求が後日に生じた場合であっても柔軟に対応できる利点を有している。
請求項9に記載のデータ管理システムの場合、APサーバが一定の間隔でバッチ処理を実行する場合でも、各業務データのタイムスタンプを参照することにより、バッチ処理の対象データと対象外データを識別できるため、バッチ処理の対象データと対象外のデータを分離することなく、データの蓄積と並行してバッチ処理を実行することが可能となる。
図1は、この発明に係る第1のデータ管理システム10の全体構成図である。
まず、東京に配置された第1のデータセンター12内には、第1のAPサーバ14と、第1のDBサーバ16と、第2のDBサーバ18が設置されている。
また、大阪に配置された第2のデータセンター20内には、第2のAPサーバ22と、第3のDBサーバ24と、第4のDBサーバ26が設置されている。
まず、東京に配置された第1のデータセンター12内には、第1のAPサーバ14と、第1のDBサーバ16と、第2のDBサーバ18が設置されている。
また、大阪に配置された第2のデータセンター20内には、第2のAPサーバ22と、第3のDBサーバ24と、第4のDBサーバ26が設置されている。
上記の各APサーバやDBサーバの中、同一のデータセンター内に配置されたものについては、それぞれが物理的に独立したマシン(独立したIPアドレスを有する)によって構成される必要はない。
すなわち、同一のサーバ(同一のIPアドレス)上に複数のNUMAノード(別Port番号)を指定するDeployment(配置)を行うことにより、複数のAPサーバ(APノード)やDBサーバ(DBノード)として構成してもよい。
すなわち、同一のサーバ(同一のIPアドレス)上に複数のNUMAノード(別Port番号)を指定するDeployment(配置)を行うことにより、複数のAPサーバ(APノード)やDBサーバ(DBノード)として構成してもよい。
第1のAPサーバ14及び第2のAPサーバ22は、それぞれ同一のアプリケーションプログラムを備えており、インターネット等の通信ネットワーク27経由でクライアント端末28から送信されたリクエストに対し、同一の業務処理を実行する機能を有する。
図示の便宜上、第1のAPサーバ14及び第2のAPサーバ22のみが描かれているが、実際には各データセンター内には同一機能を備えた複数のAPサーバが設置され、図示しないロードバランサを介して負荷分散が図られている。
このように、同一データセンター内に複数のAPサーバを設けておけば、何れかのAPサーバの計画停止時あるいは計画外停止時おいても、他のデータセンター内のAPサーバに切り替えることなく同一データセンター内の残りのAPサーバで代替可能となり、ダウンタイムを最小化することができる。
DBサーバの数にも限定はなく、3台以上のDBサーバを各データセンター内に設置することができる。
このように、同一データセンター内に複数のAPサーバを設けておけば、何れかのAPサーバの計画停止時あるいは計画外停止時おいても、他のデータセンター内のAPサーバに切り替えることなく同一データセンター内の残りのAPサーバで代替可能となり、ダウンタイムを最小化することができる。
DBサーバの数にも限定はなく、3台以上のDBサーバを各データセンター内に設置することができる。
第1のDBサーバ16、第2のDBサーバ18、第3のDBサーバ24及び第4のDBサーバ26は、それぞれ共通のテーブルを備えており、各テーブルには同一のデータが格納されている。
ここでは、図2は示すように、注文テーブル40、注文取消テーブル41、注文明細テーブル42及び注文明細取消テーブル43を、各DBサーバは共通に備えている。
ここでは、図2は示すように、注文テーブル40、注文取消テーブル41、注文明細テーブル42及び注文明細取消テーブル43を、各DBサーバは共通に備えている。
注文テーブル40には、注文ID(主キー)、カスタマID(外部キー)、タイムスタンプのデータ項目が設定されている。
また、注文取消テーブル41には、注文ID(主キー/外部キー)、タイムスタンプのデータ項目が設定されている。
また、注文取消テーブル41には、注文ID(主キー/外部キー)、タイムスタンプのデータ項目が設定されている。
注文明細テーブル42には、注文明細ID(主キー)、注文ID(外部キー)、アイテムID(外部キー)、数量のデータ項目が設定されている。
また、注文明細取消テーブル43には、注文明細ID(主キー/外部キー)、タイムスタンプのデータ項目が設定されている。
また、注文明細取消テーブル43には、注文明細ID(主キー/外部キー)、タイムスタンプのデータ項目が設定されている。
上記の注文ID及び注文明細IDには、人工キーによるユニークな識別コードが格納される(詳細は後述)。
第1のAPサーバ14は、LANを介して第1のDBサーバ16及び第2のDBサーバ18と接続されると共に、通信回線29を介して第2のデータセンター20内に設置された第3のDBサーバ24及び第4のDBサーバ26とも接続されている。
また、第2のAPサーバ22は、LANを介して第3のDBサーバ24及び第4のDBサーバ26と接続されると共に、通信回線29を介して第1のデータセンター12内に設置された第1のDBサーバ16及び第2のDBサーバ18とも接続されている。
また、第2のAPサーバ22は、LANを介して第3のDBサーバ24及び第4のDBサーバ26と接続されると共に、通信回線29を介して第1のデータセンター12内に設置された第1のDBサーバ16及び第2のDBサーバ18とも接続されている。
平常時においては、東日本に設置されたクライアント端末28は第1のデータセンター12内に設置された第1のAPサーバ14に接続され、西日本に設置されたクライアント端末28は第2のデータセンター20内に設置された第2のAPサーバ22に接続される。
これに対し、例えば大規模な地震が首都圏で発生し、第1のデータセンター12が壊滅的な打撃を受けた場合には、DNSサーバ(図示省略)の設定変更により、東日本に設置されたクライアント端末28の接続先が第2のデータセンター20内に設置された第2のAPサーバ22に切り替えられるため、東日本のユーザに対するサービスの継続性が確保される。
同様に、第2のデータセンター20が被害を受けた場合には、西日本に設置されたクライアント端末28の接続先が第1のデータセンター12内に設定された第1のAPサーバ14に切り替えられる。
同様に、第2のデータセンター20が被害を受けた場合には、西日本に設置されたクライアント端末28の接続先が第1のデータセンター12内に設定された第1のAPサーバ14に切り替えられる。
このように、各データセンターは平常時には近隣のクライアント端末28に対してサービスを提供する一方、災害時には全国のクライアント端末28に対してもサービスを提供することになるため、上記したように、各DBサーバは普段から同一内容のデータを相互に保持しておく必要がある。
また、同一データセンター内にも同一のデータを備えた複数のDBサーバが設置されているため、データを参照する際にAPサーバは任意のDBサーバにデータの抽出を依頼することができ、負荷分散を図ることができる。
また、同一データセンター内にも同一のデータを備えた複数のDBサーバが設置されているため、データを参照する際にAPサーバは任意のDBサーバにデータの抽出を依頼することができ、負荷分散を図ることができる。
データセンターの数は2つに限定されるものではなく、可能な限り多くのデータセンターを各地に設けると共に、同一機能を備えた複数のAPサーバをそれぞれに設置し、各データセンター内に設置された全DBサーバと通信ネットワーク経由で接続するように構成することが望ましい。
図3は、第1のAPサーバ14及び第2のAPサーバ22の内部構成を示すものであり、それぞれ業務処理部30と、人工キー管理部32と、データ制御部34と、複数のDB連絡部38とを備えている。
業務処理部30は、クライアント端末28からのリクエストに応じてデータの生成処理や演算処理、DBサーバへの登録処理等を実行するものであり、APサーバのCPUが専用のアプリケーションプログラムに従って動作することにより、実現される。
人工キー管理部32は、業務処理部30からのリクエストに応じて、人工キー(サロゲートキー)を発行する機能を備えている(詳細は後述)。
この人工キー管理部32は、専用のミドルウェアに従ってAPサーバのCPUが動作することにより、実現される。
この人工キー管理部32は、専用のミドルウェアに従ってAPサーバのCPUが動作することにより、実現される。
データ制御部34は、業務処理部30からデータ登録の指令を受けた際に、データをDBサーバの数だけ複製し、それぞれをDB連絡部38に渡す機能等を担うものであり、専用のミドルウェアに従ってAPサーバのCPUが動作することにより、実現される。
またデータ制御部34は、人工キー管理部32の指令を受け、同一データセンター内に設置された各DBサーバを担当するDB連絡部38に対して、人工キー管理データの更新を指令する機能をも備えている(詳細は後述)。
またデータ制御部34は、人工キー管理部32の指令を受け、同一データセンター内に設置された各DBサーバを担当するDB連絡部38に対して、人工キー管理データの更新を指令する機能をも備えている(詳細は後述)。
各DB連絡部38は、予め自己に割り当てられたDBサーバに対してSQL文を発行し、データの追加登録及び参照を指令する機能等を果たすものであり、専用のミドルウェアに従ってAPサーバのCPUが動作することにより、実現される。
ここで、図4のフローチャートに基づき、このシステム10における人工キー付与の仕組みについて説明する。
まず、業務処理の結果としてデータを生成する必要が生じた業務処理部30は、人工キー管理部32に対して、テーブルを指定して人工キーの発行を要求する(S10)。上記の注文テーブル40に格納するデータを生成するケースであれば、「注文ID」用の人工キーの発行を要求することとなる。
まず、業務処理の結果としてデータを生成する必要が生じた業務処理部30は、人工キー管理部32に対して、テーブルを指定して人工キーの発行を要求する(S10)。上記の注文テーブル40に格納するデータを生成するケースであれば、「注文ID」用の人工キーの発行を要求することとなる。
これを受けた人工キー管理部32は、同じデータセンター内に設置されたDBサーバに格納されている人工キー管理テーブル46を参照する(S12)。
図5に示すように、人工キー管理テーブル46は、「テーブルID」、「APサーバID」、「次のキー値」のデータ項目を備えており、「テーブルID」+「APサーバ」単位で最新の人工キー(次のキー値)が管理されている。
ここで「人工キー」とは、所定の長さ(例えば32bitまたは64bit)を備えた数値よりなる。
また、数値の下一桁(末尾)には、データを生成したAPサーバを特定するための識別符号(0~9の何れかの数値)がセットされている。
また、数値の下一桁(末尾)には、データを生成したAPサーバを特定するための識別符号(0~9の何れかの数値)がセットされている。
具体的には、人工キーの下一桁管理テーブル47において、各APサーバのIDと0~9の数値との関連性が定義されている。
また、APサーバ管理テーブル48及びデータセンター管理テーブル49において、各APサーバとデータセンターとの関連性が定義されている。
これら人工キーの下一桁管理テーブル47、APサーバ管理テーブル48、データセンター管理テーブル49も、人工キー管理テーブル46と同じく、同一データセンター内のDBサーバに格納されている。
また、APサーバ管理テーブル48及びデータセンター管理テーブル49において、各APサーバとデータセンターとの関連性が定義されている。
これら人工キーの下一桁管理テーブル47、APサーバ管理テーブル48、データセンター管理テーブル49も、人工キー管理テーブル46と同じく、同一データセンター内のDBサーバに格納されている。
人工キー管理部32は、注文テーブル40に係る「次のキー値」の値を更新すると共に、最新の人工キー(更新前の値)を業務処理部30に通知する(S14)。
上記の更新に際し人工キー管理部32は、当該APサーバに係る注文テーブル40の「次のキー値」に対して、「直前の値(上記の最新値)の中で、末尾の識別符号を除いた部分で構成される数値に、1を加算した値」をセットする。
上記の更新に際し人工キー管理部32は、当該APサーバに係る注文テーブル40の「次のキー値」に対して、「直前の値(上記の最新値)の中で、末尾の識別符号を除いた部分で構成される数値に、1を加算した値」をセットする。
ただし、人工キーの最新値の更新方法としては、このような「昇順」に限定されるものではなく、「直前の値(上記の最新値)の中で、末尾の識別符号を除いた部分で構成される数値から1を減算した値」をセットする「降順」であってもよい。APサーバの識別符号も上記のような「0~9」の数値に限定されるものではなく、他の文字種を用いてもよい。また、人工キーの先頭に識別符号を挿入してもよい。
さらには、人工キー管理テーブル46の「次のキー値」にAPサーバの識別符号を除いた数値のみを格納しておき、人工キーの発行時点で人工キー管理部32が対応の識別符号を上記数値の末尾等に付加して業務処理部30に発行することもできる。
さらには、人工キー管理テーブル46の「次のキー値」にAPサーバの識別符号を除いた数値のみを格納しておき、人工キーの発行時点で人工キー管理部32が対応の識別符号を上記数値の末尾等に付加して業務処理部30に発行することもできる。
人工キー管理部32から最新の人工キーを受け取った業務処理部30は、当該人工キーをIDとして主キーや外部キーにセットしたデータを生成する(S18)。
このデータは、データ制御部34及びDB連絡部38を介して全DBサーバに送信され、それぞれに設けられた対応のテーブル(注文テーブル40や注文明細テーブル42等)に追加登録される。
このデータは、データ制御部34及びDB連絡部38を介して全DBサーバに送信され、それぞれに設けられた対応のテーブル(注文テーブル40や注文明細テーブル42等)に追加登録される。
上記のように、人工キーは「APサーバ×テーブル」単位でユニーク性が担保され、各APサーバはデータセンター管理テーブル49において特定のデータセンターと紐付けされている。このため、各APサーバにおいてそれぞれ独自に人工キーが発行されたとしても、下一桁の数値に独自性が確保されており、重複する人工キーが発行される危険性がないことから、各データのユニーク性は確実に担保される。
なお、APサーバの業務処理部30から発せられた人工キー発行のリクエストは、一旦キューに溜められた上で、FIFO(先入れ先出し)のルールに則って処理されるため、後から発生したデータに対して誤って値の小さい人工キーが発行される危険性はなく、順序性が担保される。
各APサーバの業務処理部30によって生成されたデータは、上記のように各DBサーバ内のテーブルに格納されることになるが、各テーブルには、削除(デリート)禁止及び更新(アップデート)禁止の制約が予め課せられている。
要するに、このシステム10においては、各テーブルに対する追加(インサート)と参照(セレクト)のみが許容されることになる。
要するに、このシステム10においては、各テーブルに対する追加(インサート)と参照(セレクト)のみが許容されることになる。
このため、既存のデータを無効にする必要が生じた場合には、レコードを削除する代わりに、他のテーブルに新たなレコードを追加することで同等の状態を実現する。
例えば、図2に示した注文テーブル40に格納された特定の注文データを無効化するには、同図の注文取消テーブル41に注文取消データを追加する。
この注文取消データの主キーには、取消対象となる注文データの注文IDが充填されているため、業務処理部30は注文テーブル40に登録された各注文データの中で、その注文IDが注文取消テーブル41に登録されているものについては、対象外として無視する。
例えば、図2に示した注文テーブル40に格納された特定の注文データを無効化するには、同図の注文取消テーブル41に注文取消データを追加する。
この注文取消データの主キーには、取消対象となる注文データの注文IDが充填されているため、業務処理部30は注文テーブル40に登録された各注文データの中で、その注文IDが注文取消テーブル41に登録されているものについては、対象外として無視する。
同様に、注文明細データを無効化する場合には、注文明細取消テーブル43に注文明細取消データを追加する。
この注文明細取消データの主キーには、取消対象となる注文明細データの注文明細IDが充填されているため、業務処理部30は注文明細テーブル42に登録された注文明細データの中で、その注文明細IDが注文明細取消テーブル43に登録されているものについては、対象外として無視する。
この注文明細取消データの主キーには、取消対象となる注文明細データの注文明細IDが充填されているため、業務処理部30は注文明細テーブル42に登録された注文明細データの中で、その注文明細IDが注文明細取消テーブル43に登録されているものについては、対象外として無視する。
また、このシステム10において登録データの修正が必要な場合には、既存レコードをアップデートする代わりに、修正後のデータを備えたレコードを新規に登録することで対応する。
例えば、ある注文明細データの「数量」を修正する場合、同一の注文明細ID、注文ID、アイテムIDで数量のみを変更した注文明細データを注文明細テーブル42に追加する。
なお、修正前のデータと修正後のデータは同じ注文明細IDを備えていても、各データにはデータ生成時の時刻がミリ秒精度でタイムスタンプに記録されているため、業務処理部30は集計時に最新のデータを間違いなく特定することができる。
例えば、ある注文明細データの「数量」を修正する場合、同一の注文明細ID、注文ID、アイテムIDで数量のみを変更した注文明細データを注文明細テーブル42に追加する。
なお、修正前のデータと修正後のデータは同じ注文明細IDを備えていても、各データにはデータ生成時の時刻がミリ秒精度でタイムスタンプに記録されているため、業務処理部30は集計時に最新のデータを間違いなく特定することができる。
つぎに、図6のフローチャートに従い、このデータ管理システム10におけるデータの登録手順について説明する。
まず、クライアント端末28からAPサーバ12に対して、以下の商品注文リクエストが送信されたとする。
(1) ネコ砂(アイテムID:55555501)・・・10袋
(2) ダイエットコーラ(アイテムID:33333302)・・・12本
(3) ノンアルコールビール(アイテムID:22222203)・・・15本
まず、クライアント端末28からAPサーバ12に対して、以下の商品注文リクエストが送信されたとする。
(1) ネコ砂(アイテムID:55555501)・・・10袋
(2) ダイエットコーラ(アイテムID:33333302)・・・12本
(3) ノンアルコールビール(アイテムID:22222203)・・・15本
これを受けた業務処理部30は(S20)、人口キー管理部32から必要な人工キーの発行を受けた上で、図7に示すように、3件の注文明細データ(第1の注文明細データ61~第3の注文明細データ63)と、1件の注文データ64を生成する(S22)。
注文データ64は親データとして機能するものであり、独自の注文IDの他、ユーザのカスタマID、注文日時、タイムスタンプのデータ項目を備えている。
また、各注文明細データは子データとして機能するものであり、独自の注文明細IDの他、親データの注文ID、アイテムID、数量のデータ項目を備えている。
注文データ64は親データとして機能するものであり、独自の注文IDの他、ユーザのカスタマID、注文日時、タイムスタンプのデータ項目を備えている。
また、各注文明細データは子データとして機能するものであり、独自の注文明細IDの他、親データの注文ID、アイテムID、数量のデータ項目を備えている。
つぎに業務処理部30は、最初に3件の注文明細データをデータ制御部34に渡し、各DBサーバへの登録を依頼する(S24)。
これを受けたデータ制御部34は、各注文明細データを4件分にコピーし、図8に示すように、各DB連絡部38を介して第1のDBサーバ16~第4のDBサーバ26に登録させる。
この際、各注文明細データの到達順序が問われることはなく、DBサーバ毎に順番が先後しても構わない。
これを受けたデータ制御部34は、各注文明細データを4件分にコピーし、図8に示すように、各DB連絡部38を介して第1のDBサーバ16~第4のDBサーバ26に登録させる。
この際、各注文明細データの到達順序が問われることはなく、DBサーバ毎に順番が先後しても構わない。
各DBサーバは、DB連絡部38からデータを受け取って自身のメモリに格納した時点で、DB連絡部38に対して登録完了通知を送信し、その後、ハードディスクやSSD等の外部記憶装置内に設けられたテーブルに対応のレコードを格納する(詳細は後述)。
このDBサーバから送信された登録完了通知は、各DB連絡部38及びデータ制御部34を経由して業務処理部30に到達する(S26)。
業務処理部30は、第1の注文明細データ61、第2の注文明細データ62、第3の注文明細データ63の全てについて、何れかのDBサーバから登録完了通知が返ってきた時点で(S28/Y)、親データとしての注文データ64をデータ制御部34に渡し、各DBサーバへの登録を依頼する(S30)。
業務処理部30は、第1の注文明細データ61、第2の注文明細データ62、第3の注文明細データ63の全てについて、何れかのDBサーバから登録完了通知が返ってきた時点で(S28/Y)、親データとしての注文データ64をデータ制御部34に渡し、各DBサーバへの登録を依頼する(S30)。
これを受けたデータ制御部34は、注文データを4件分にコピーした上で、各DB連絡部38を介して第1のDBサーバ16~第4のDBサーバ26に送信し、それぞれの注文テーブル40に登録させる。
各DBサーバは、DB連絡部38からデータを受け取って自身のメモリに格納した時点で、DB連絡部38に対して登録完了通知を送信し、その後、ハードディスクやSSD等の外部記憶装置内に設けられたテーブルに対応のレコードを格納する。
このDBサーバから送信された登録完了通知は、各DB連絡部38及びデータ制御部34を経由して業務処理部30に到達する(S32)。
各DBサーバは、DB連絡部38からデータを受け取って自身のメモリに格納した時点で、DB連絡部38に対して登録完了通知を送信し、その後、ハードディスクやSSD等の外部記憶装置内に設けられたテーブルに対応のレコードを格納する。
このDBサーバから送信された登録完了通知は、各DB連絡部38及びデータ制御部34を経由して業務処理部30に到達する(S32)。
なお、何らかの理由により、所定の時間内に特定の注文明細データについて何れのDBサーバからも登録完了通知が返ってこない場合(S28/N)、業務処理部30はタイムアウトと認定し、上記注文データ64(親データ)の登録を見送る(S34)。
この場合、業務処理部30は、別の注文IDを備えた注文データと、別の注文明細IDを備えた第1の注文明細データ~第3の注文明細データを生成した後、改めて第1の注文明細データ~第3の注文明細データの登録を試みる。そして、各注文明細データについて何れかのDBサーバから登録完了通知が届いた時点で、新たな注文データを各DBサーバに登録させる。
この場合、業務処理部30は、別の注文IDを備えた注文データと、別の注文明細IDを備えた第1の注文明細データ~第3の注文明細データを生成した後、改めて第1の注文明細データ~第3の注文明細データの登録を試みる。そして、各注文明細データについて何れかのDBサーバから登録完了通知が届いた時点で、新たな注文データを各DBサーバに登録させる。
このシステム10では、このように子データである全ての注文明細データについて、何れかのDBサーバにおける登録が完了しない限り、親データである注文データの登録がなされない仕組みを備えている。
このため、「データの参照時に、対応する親データの登録がない子データは対象外とする」というルールを採用することにより、仮に一部の注文明細データについての登録が失敗した場合であっても、登録に成功した残りの注文明細データを明示的に無効化する必要がなくなる。
このため、「データの参照時に、対応する親データの登録がない子データは対象外とする」というルールを採用することにより、仮に一部の注文明細データについての登録が失敗した場合であっても、登録に成功した残りの注文明細データを明示的に無効化する必要がなくなる。
以下、図9に基づいて具体的に説明する。
まず、業務処理部30が親データβのIDを備えた子データD、子データE、子データFの登録を試みたところ、何らかの理由によって子データDについての登録が完了することなくタイムアウトとなった場合、親データβの登録は見送られる。
まず、業務処理部30が親データβのIDを備えた子データD、子データE、子データFの登録を試みたところ、何らかの理由によって子データDについての登録が完了することなくタイムアウトとなった場合、親データβの登録は見送られる。
その代わりに業務処理部30は、親データβと実質的に同じ内容を備え、IDが変更された親データβ'を生成すると共に、先の子データD、子データE、子データFと実質的に同じ内容で、新しいIDと親データβ'のIDとを備えた子データD'、子データE'、子データF'を生成し、各子データのDBサーバへの登録を試みる。そして、各子データの登録が完了した時点で、業務処理部30は親データβ'を登録させる。
以上の結果、先に登録が完了していた子データE及び子データFは、そのままDBサーバのテーブル上に残されることとなる。
しかしながら、本システム10においては上記の通り「対応する親データの登録がない子データは処理の対象外とする」というルールに準拠しているため、業務処理部30がデータの集計等を行う際には、対応する親データβの登録がない子データE及び子データFを参照の対象外として扱われる。
このため、ロールバック処理によって子データE及び子データFを明示的に無効化しなくても、これらの不整合なデータが参照されるという不都合は生じない。
しかしながら、本システム10においては上記の通り「対応する親データの登録がない子データは処理の対象外とする」というルールに準拠しているため、業務処理部30がデータの集計等を行う際には、対応する親データβの登録がない子データE及び子データFを参照の対象外として扱われる。
このため、ロールバック処理によって子データE及び子データFを明示的に無効化しなくても、これらの不整合なデータが参照されるという不都合は生じない。
もっとも、上記のように並列化された複数のDBサーバに対して同一子データの登録を同時に依頼し、何れか一つのDBサーバから登録完了通知が届けば当該子データの登録を認定する仕組みを備えている限り、子データの登録がなされないという事態の発生は比較的レアなケースといえる。
これに対し、この発明を1台のDBサーバのみで運用される環境に適用した際には、マシントラブルや通信障害によって子データの登録に失敗する事態の発生が想定される。
これに対し、この発明を1台のDBサーバのみで運用される環境に適用した際には、マシントラブルや通信障害によって子データの登録に失敗する事態の発生が想定される。
また、DBサーバによるロールバック処理が不要となる結果、従来のように一つのトランザクションに含まれる複数のデータについては同一のDBサーバが登録処理を担当しなければならないという制約から開放される。
このため、親データと子データの登録を別個のDBサーバで処理させることにより、負荷分散を図ることも可能となる。
このため、親データと子データの登録を別個のDBサーバで処理させることにより、負荷分散を図ることも可能となる。
従来のロールバックを前提としたトランザクション処理においては、全データの登録完了時にDBサーバからトランザクション成功の電文(コミット)が発行されるため、APサーバ側ではこの電文を受け取るまで待機する必要があった。
これに対し、このシステム10の場合にはDBサーバから各データの登録完了通知が届くだけであり、トランザクション完了の電文が発行されることがないため、その分、システム全体でのデータ通信量を削減することができると共に、APサーバの待ち時間を削減することが可能となる。
これに対し、このシステム10の場合にはDBサーバから各データの登録完了通知が届くだけであり、トランザクション完了の電文が発行されることがないため、その分、システム全体でのデータ通信量を削減することができると共に、APサーバの待ち時間を削減することが可能となる。
因みに、上記のS30において親データである注文データ登録を各DBサーバに依頼したところ、一定の時間内に何れのDBサーバからも登録完了通知が返ってこないという事態の発生もあり得る。
しかしながら、この場合には上記ルールの適用により、先に登録された各子データ(注文明細データ)は参照の対象外となっているため、ダーティーリードの問題は生じない。
そこで業務処理部30は、親データの登録が完了するまで、S30の処理を何度でも繰り返すことができる。
しかしながら、この場合には上記ルールの適用により、先に登録された各子データ(注文明細データ)は参照の対象外となっているため、ダーティーリードの問題は生じない。
そこで業務処理部30は、親データの登録が完了するまで、S30の処理を何度でも繰り返すことができる。
上記においては、オンライン通販というトランザクション系のデータ処理にこのシステム10を適用した例を示したが、社員や顧客の属性管理といったマスタ系のデータ処理にも応用することができる。
図10は、このような場合に各DBサーバに格納されるテーブルの一例を示すものであり、ユーザテーブル70と、ユーザ取消テーブル71と、氏名テーブル72と、氏名取消テーブル73と、住所テーブル74と、住所取消テーブル75と、電話番号テーブル76と、電話番号取消テーブル77と、Eメールテーブル78と、Eメール取消テーブル79とを、各DBサーバは共通に備えている。
ユーザテーブル70には、ユーザID(主キー)及びタイムスタンプのデータ項目が設定されている。
また、ユーザ取消テーブル71には、ユーザID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
また、ユーザ取消テーブル71には、ユーザID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
氏名テーブル72には、氏名ID(主キー)、ユーザID(外部キー)、氏名及びタイムスタンプのデータ項目が設定されている。
また、氏名取消テーブル73には、氏名ID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
また、氏名取消テーブル73には、氏名ID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
住所テーブル74には、住所ID(主キー)、ユーザID(外部キー)、住所及びタイムスタンプのデータ項目が設定されている。
また、住所取消テーブル75には、住所ID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
また、住所取消テーブル75には、住所ID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
電話番号テーブル76には、電話番号ID(主キー)、ユーザID(外部キー)、電話番号及びタイムスタンプのデータ項目が設定されている。
また、電話番号取消テーブル77には、電話番号ID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
また、電話番号取消テーブル77には、電話番号ID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
Eメールテーブル78には、EメールID(主キー)、ユーザID(外部キー)、メールアドレス及びタイムスタンプのデータ項目が設定されている。
また、Eメール取消テーブル79には、EメールID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
また、Eメール取消テーブル79には、EメールID(主キー/外部キー)及びタイムスタンプのデータ項目が設定されている。
つぎに、図11のフローチャートに従い、ユーザの属性データの登録手順について説明する。
まず、クライアント端末28からAPサーバ12に対して、以下の属性を備えたユーザの新規登録リクエストが送信されたとする。
(1)氏名:山田太郎
(2)住所:東京都港区虎ノ門…
(3)電話番号:03-3508…
(4)メールアドレス:t-yamada@…
まず、クライアント端末28からAPサーバ12に対して、以下の属性を備えたユーザの新規登録リクエストが送信されたとする。
(1)氏名:山田太郎
(2)住所:東京都港区虎ノ門…
(3)電話番号:03-3508…
(4)メールアドレス:t-yamada@…
これを受けた業務処理部30は(S40)、人口キー管理部32から必要な人工キーの発行を受けた上で、図12に示すように、4件の属性データ(氏名データ80、住所データ81、電話番号データ82、Eメールデータ83)と、1件のユーザデータ84を生成する(S42)。
ユーザデータ84は親データとして機能するものであり、独自のユーザID及びタイムスタンプのデータ項目を備えている。
また、各属性データは子データとして機能するものであり、独自のID(氏名ID、住所ID、電話番号ID、EメールID)の他、親データのユーザID、属性(氏名/住所/電話番号/メールアドレス)、タイムスタンプのデータ項目を備えている。
各データのタイムスタンプには、同じ時刻がミリ秒単位で記述されている。
ユーザデータ84は親データとして機能するものであり、独自のユーザID及びタイムスタンプのデータ項目を備えている。
また、各属性データは子データとして機能するものであり、独自のID(氏名ID、住所ID、電話番号ID、EメールID)の他、親データのユーザID、属性(氏名/住所/電話番号/メールアドレス)、タイムスタンプのデータ項目を備えている。
各データのタイムスタンプには、同じ時刻がミリ秒単位で記述されている。
つぎに業務処理部30は、最初に4件の属性データをデータ制御部34に渡し、各DBサーバへの登録を依頼する(S44)。
これを受けたデータ制御部34は、各属性データを4件分にコピーし、各DB連絡部38を介して第1のDBサーバ16~第4のDBサーバ26に登録させる。
この際、各属性データの到達順序が問われることはなく、DBサーバ毎に順番が先後しても構わない。
これを受けたデータ制御部34は、各属性データを4件分にコピーし、各DB連絡部38を介して第1のDBサーバ16~第4のDBサーバ26に登録させる。
この際、各属性データの到達順序が問われることはなく、DBサーバ毎に順番が先後しても構わない。
各DBサーバは、DB連絡部38からデータを受け取って自身のメモリに格納した時点で、DB連絡部38に対して登録完了通知を送信し、その後、ハードディスクやSSD等の外部記憶装置内に設けられたテーブルに対応のレコードを格納する。
このDBサーバから送信された登録完了通知は、各DB連絡部38及びデータ制御部34を経由して業務処理部30に到達する(S46)。
業務処理部30は、氏名データ80、住所データ81、電話番号データ82、Eメールデータ83の全てについて、何れかのDBサーバから登録完了通知が返ってきた時点で(S48/Y)、親データとしてのユーザデータ84をデータ制御部34に渡し、各DBサーバへの登録を依頼する(S50)。
業務処理部30は、氏名データ80、住所データ81、電話番号データ82、Eメールデータ83の全てについて、何れかのDBサーバから登録完了通知が返ってきた時点で(S48/Y)、親データとしてのユーザデータ84をデータ制御部34に渡し、各DBサーバへの登録を依頼する(S50)。
これを受けたデータ制御部34は、ユーザデータ84を4件分にコピーした上で、各DB連絡部38を介して第1のDBサーバ16~第4のDBサーバ26に送信し、それぞれのユーザテーブル70に登録させる。
各DBサーバは、DB連絡部38からデータを受け取って自身のメモリに格納した時点で、DB連絡部38に対して登録完了通知を送信し、その後、ハードディスクやSSD等の外部記憶装置内に設けられたテーブルに対応のレコードを格納する。
このDBサーバから送信された登録完了通知は、各DB連絡部38及びデータ制御部34を経由して業務処理部30に到達する(S52)。
各DBサーバは、DB連絡部38からデータを受け取って自身のメモリに格納した時点で、DB連絡部38に対して登録完了通知を送信し、その後、ハードディスクやSSD等の外部記憶装置内に設けられたテーブルに対応のレコードを格納する。
このDBサーバから送信された登録完了通知は、各DB連絡部38及びデータ制御部34を経由して業務処理部30に到達する(S52)。
なお、何らかの理由により、所定の時間内に特定の属性データについて何れのDBサーバからも登録完了通知が返ってこない場合(S48/N)、業務処理部30はタイムアウトと認定し、上記ユーザデータ84の登録を見送る(S54)。
この場合、業務処理部30は、新しいユーザIDを備えたユーザデータと、別の氏名ID等及び新しいユーザIDを備えた属性データを生成した後、改めて各DBサーバへの登録を試みる。そして、各属性データについて何れかのDBサーバから登録完了通知が届いた時点で、新たなユーザデータを各DBサーバに登録させる。
この場合、業務処理部30は、新しいユーザIDを備えたユーザデータと、別の氏名ID等及び新しいユーザIDを備えた属性データを生成した後、改めて各DBサーバへの登録を試みる。そして、各属性データについて何れかのDBサーバから登録完了通知が届いた時点で、新たなユーザデータを各DBサーバに登録させる。
このように、子データである全ての属性データについて、何れかのDBサーバにおける登録が完了しない限り、親データであるユーザデータ84の登録がなされない仕組みを備えているため、「データの参照時に、対応する親データの登録がない子データは対象外とする」というルールを採用することにより、仮に一部の属性データについての登録が失敗した場合であっても、登録に成功した残りの属性データを明示的に無効化する必要がなくなる。
ユーザ登録完了後に、結婚等によってユーザの氏名に変更が生じた場合には、上記氏名ID、ユーザIDを有すると共に、新しい氏名を備えた更新氏名データが業務処理部30によって生成され、各DBサーバに登録される。
この場合でも、業務処理部30は新旧両氏名データのタイムスタンプを比較することにより、最新の氏名を識別できる。
また、氏名テーブル72には古い氏名データもそのまま残されているため、後になって当該ユーザの旧姓を参照する必要性が生じた場合にも対応できる。
この場合でも、業務処理部30は新旧両氏名データのタイムスタンプを比較することにより、最新の氏名を識別できる。
また、氏名テーブル72には古い氏名データもそのまま残されているため、後になって当該ユーザの旧姓を参照する必要性が生じた場合にも対応できる。
ユーザが退会する際には、ユーザ取消テーブル71に上記ユーザIDを備えたユーザ取消データを登録することにより、当該ユーザに係る全データを無効化することができる。
この場合にも、ユーザテーブル70や氏名テーブル72、住所テーブル74等にはデータがそのまま残されているため、事後的に退会ユーザについてのデータを参照することができる。
この場合にも、ユーザテーブル70や氏名テーブル72、住所テーブル74等にはデータがそのまま残されているため、事後的に退会ユーザについてのデータを参照することができる。
ユーザが引っ越しを行い、住所と電話番号が同時に変更された場合には、上記住所ID及びユーザIDと、新しい住所を備えた更新住所データが生成されると共に、上記電話番号ID及びユーザIDと、新しい電話番号を備えた更新電話番号データが業務処理部30によって生成され、各DBサーバへの登録が実行される。
この際、両更新データについて無事に登録が完了すれば問題ないが、何れか一方の更新データ(例えば更新住所データ)の登録が完了し、他方の更新データ(例えば更新電話番号データ)の登録に失敗した場合には問題が生じる。
すなわち、この時点ではすでに両更新データの親データであるユーザデータが存在しているため、業務処理部30は登録に成功した更新住所データを無効扱いにすることができない。
この結果、更新電話番号データの登録が完了するまでの間、当該ユーザの属性データを表示する際には、新住所と旧電話番号が併記されるという不正な状況(ダーティリード)が生じる。
すなわち、この時点ではすでに両更新データの親データであるユーザデータが存在しているため、業務処理部30は登録に成功した更新住所データを無効扱いにすることができない。
この結果、更新電話番号データの登録が完了するまでの間、当該ユーザの属性データを表示する際には、新住所と旧電話番号が併記されるという不正な状況(ダーティリード)が生じる。
このような不都合を回避するためには、図13(a)に示すように、更新管理テーブル85を事前に各DBサーバに設けておくことが有効である。
この更新管理テーブル85は、ユーザIDと、タイムスタンプのデータ項目を備えている。
この更新管理テーブル85は、ユーザIDと、タイムスタンプのデータ項目を備えている。
ここで、上記のようにユーザの住所と電話番号が同時に変わった場合、図13(b)に示すように、更新住所データ86と更新電話番号データ87及び更新管理データ88が業務処理部30によって生成される。
更新住所データ86は、従前の住所IDとユーザID、及び変更後の住所とタイムスタンプを備えている。
また更新電話番号データ87は、従前の電話番号IDとユーザID、及び変更後の電話番号とタイムスタンプを備えている。
更新管理データ88は、ユーザIDと、タイムスタンプを備えている。
上記更新住所データ86、更新電話番号データ87及び更新管理データ88の各タイムスタンプには、同じ時刻が記録されている。
また更新電話番号データ87は、従前の電話番号IDとユーザID、及び変更後の電話番号とタイムスタンプを備えている。
更新管理データ88は、ユーザIDと、タイムスタンプを備えている。
上記更新住所データ86、更新電話番号データ87及び更新管理データ88の各タイムスタンプには、同じ時刻が記録されている。
つぎに業務処理部30は、データ制御部34及び各DB連絡部38を介して更新住所データ86及び更新電話番号データ87を各DBサーバに送信し、登録を依頼する。
これを受けた各DBサーバは、更新住所データ86を住所テーブル74に、また更新電話番号データ87を電話番号テーブル76に格納する。
これを受けた各DBサーバは、更新住所データ86を住所テーブル74に、また更新電話番号データ87を電話番号テーブル76に格納する。
つぎに業務処理部30は、何れかのDBサーバから更新住所データ86と更新電話番号データ87について登録が完了した旨の通知が送信された時点で、データ制御部34及び各DB連絡部38を介して更新管理データ88を各DBサーバに送信し、登録を依頼する。
これに対し、何らかの理由により、更新住所データ86及び更新電話番号データ87の少なくとも一方、例えば更新住所データ86について何れのDBサーバからも登録完了通知が届かない場合、業務処理部30は更新管理データ88の送信を保留する。
そして、タイムアウトした後、業務処理部30は新しく更新住所データ、更新電話番号データ、更新管理データを生成し、再び更新住所データ及び更新電話番号データの登録を試みる。
そして、タイムアウトした後、業務処理部30は新しく更新住所データ、更新電話番号データ、更新管理データを生成し、再び更新住所データ及び更新電話番号データの登録を試みる。
この場合、登録に成功した最初の更新電話番号データ87がDBサーバ側に残されることとなるが、業務処理部30が各属性データを取り扱う際に、以下のルールを適用することにより、ロールバック処理によって更新電話番号データ87を明示的に無効化しなくても、これを実質的に無効化することが可能となる。
(1) 親データのID及び子データのIDを共通にする複数の子データが存在している場合、対応する親データの登録の有無をチェックし、登録のあるものは有効とし、登録のないものは無効とする。
(2) ルール(1)の適用後に有効な子データが複数残された場合、タイムスタンプが最古の子データ(新規登録時の子データ)を除き、更新データと認定する。
(3) 更新データについては、同じタイムスタンプを備えた更新管理データの登録の有無をチェックし、登録のあるものは有効とし、登録のないものは無効とする。
(2) ルール(1)の適用後に有効な子データが複数残された場合、タイムスタンプが最古の子データ(新規登録時の子データ)を除き、更新データと認定する。
(3) 更新データについては、同じタイムスタンプを備えた更新管理データの登録の有無をチェックし、登録のあるものは有効とし、登録のないものは無効とする。
このシステム10の場合、上記のように各DBサーバには同一のデータが格納されており、また各APサーバは同一の業務処理を実行する機能を備えているため、多数のクライアント端末28に対して同時並行的にサービスを提供することが可能となり、システム10全体の負荷分散が可能となる。
また、親データの登録に先立ち、複数の子データの登録を各DBサーバに依頼した際には、各データについて少なくとも一つのDBサーバから登録完了通知が届いた時点で親データの登録に移行でき、全てのDBサーバからの登録完了通知を待つ必要がないため、処理の迅速化が図れる。
なお、何れかのDBサーバから一定時間を経過しても登録完了通知が返って来ない場合、データ制御部34は通信障害あるいはマシントラブルが発生したものと認定し、当該DBサーバをオフラインモードに移行させる。
具体的には、当該DBサーバを一時的にシステム10から切り離し、残りのDBサーバのみに基づく運用形態に移行する。
具体的には、当該DBサーバを一時的にシステム10から切り離し、残りのDBサーバのみに基づく運用形態に移行する。
この間、切り離されたDBサーバについて点検がなされ、必要な復旧対策が施される。例えば、通信機器の故障が原因で登録完了通知が届いていなかったと判明した場合、新しい通信機器に交換した上で、当該DBサーバをライトモード(データの書込のみが許容され、データの参照が禁止される状態)に設定し、同一データセンター内に設置された他のDBサーバから差分データをコピーする。
このシステム10の場合、上記の通り、各業務データは追加のみが許容され、削除や更新が認められないルールが適用されているため、データの復旧が極めて容易となる。
すなわち、データの削除や更新が許容されることを前提とした場合、データを復旧させるためにはDBサーバが保持している更新履歴情報に基づき、一定の時点からデータの追加や削除、更新を順番に再現する必要があり、これに長い時間と大きな負荷を要することになる。また、更新ログを確実に保存する仕組みをDBサーバ側に設ける必要がある。
すなわち、データの削除や更新が許容されることを前提とした場合、データを復旧させるためにはDBサーバが保持している更新履歴情報に基づき、一定の時点からデータの追加や削除、更新を順番に再現する必要があり、これに長い時間と大きな負荷を要することになる。また、更新ログを確実に保存する仕組みをDBサーバ側に設ける必要がある。
これに対し、このシステム10のようにデータの追加のみが許容され、削除と更新が禁止される前提の場合、他の正常なDBサーバに登録されたデータと障害が発生したDBサーバに登録されたデータを比較し、単純に足りないデータをコピーするだけで済む。
そして、格納データが最新の状態に追い着いた時点で、当該DBサーバはリード/ライトモード(データの書込及び参照が許容される状態)に設定され、システム10に再接続される。
以後、データ制御部34は、当該DBサーバを担当しているDB連絡部38を介して、データの送受信を再開する。
以後、データ制御部34は、当該DBサーバを担当しているDB連絡部38を介して、データの送受信を再開する。
また、このシステム10にあっては、上記のようにDB連絡部38から送信されたデータがDBサーバのメモリに格納された時点で、DBサーバから登録完了通知がAPサーバに発行されるため、極めて短時間の中に業務処理部30は当該データを読み込みの対象とすることができる。
これまでの常識では、メモリは揮発性の記憶手段であり、電源供給が停止された時点でデータが喪失してしまうため、不揮発性の記憶手段(ハードディスク等)にデータが格納された時点で完了通知が返されるべきとなる。
これに対し、このシステム10の場合には、あるDBサーバでデータの欠損が発生しても、単純に隣接するDBサーバから不足データをコピーするだけで追い着くことができるため、データがハードディスク等に格納されるまで待機する必要がない。
これに対し、このシステム10の場合には、あるDBサーバでデータの欠損が発生しても、単純に隣接するDBサーバから不足データをコピーするだけで追い着くことができるため、データがハードディスク等に格納されるまで待機する必要がない。
上記の各種業務データ(注文データ、注文明細データ、属性データ、ユーザデータ等)には、上記のように業務処理部30によってミリ秒精度のタイムスタンプが刻印されているため、人工キーの値がMAXに達し、発行済のIDと重複するIDの再発行(リサイクル)がなされた場合でも、業務処理部30はタイムスタンプを比較することで新旧データの判定が可能となる。
あるいは、同種テーブルを一定の期間単位で細分化し、この期間が経過する都度、データの格納先を物理的に分離された新しいテーブルに変更するように運用することにより、上記人工キーの重複問題を有効に解決することができる。
例えば、上記注文明細テーブル42を、「2016年8月の注文明細テーブル」、「2016年9月の注文テーブル」…のように細分化することが該当する。
なお、1ヶ月以内に人工キーの値がMAXに達してしまうような場合には、週毎あるいは日毎に同種の新テーブルに移行するように運用すればよい。
例えば、上記注文明細テーブル42を、「2016年8月の注文明細テーブル」、「2016年9月の注文テーブル」…のように細分化することが該当する。
なお、1ヶ月以内に人工キーの値がMAXに達してしまうような場合には、週毎あるいは日毎に同種の新テーブルに移行するように運用すればよい。
この発明の実現においては、必ずしも複数のAPサーバと複数のDBサーバの存在が必須要件ではなく、少なくとも1台のAPサーバと1台のDBサーバを備えた環境下であれば有効に機能し得る。
図15は、この発明に係る第2のデータ管理システム210の全体構成図であり、DBサーバ212と、第1のAPサーバ214と、第2のAPサーバ216と、第3のAPサーバ218とを備えている。
DBサーバ212と、第1のAPサーバ214、第2のAPサーバ216、第3のAPサーバ218との間は、それぞれ通信ネットワークを介して接続されている。
DBサーバ212と、第1のAPサーバ214、第2のAPサーバ216、第3のAPサーバ218との間は、それぞれ通信ネットワークを介して接続されている。
DBサーバ212の外部記憶装置内には、例えば、仕入テーブル220と、仕入取消テーブル222と、販売価格テーブル224と、販売価格取消テーブル226とが設けられている。
図16(a)に示すように、仕入テーブル220には、仕入ID、仕入先ID、商品ID、数量、価格及びタイムスタンプの各データ項目が設定されている。
また、仕入取消テーブル222には、図16(b)に示すように、仕入ID及びタイムスタンプの各データ項目が設定されている。
販売価格テーブル224には、図16(c)に示すように、販売価格ID、商品ID、価格及びタイムスタンプの各データ項目が設定されている。
販売価格取消テーブル226には、図16(d)に示すように、販売価格ID及びタイムスタンプの各データ項目が設定されている。
また、仕入取消テーブル222には、図16(b)に示すように、仕入ID及びタイムスタンプの各データ項目が設定されている。
販売価格テーブル224には、図16(c)に示すように、販売価格ID、商品ID、価格及びタイムスタンプの各データ項目が設定されている。
販売価格取消テーブル226には、図16(d)に示すように、販売価格ID及びタイムスタンプの各データ項目が設定されている。
このシステム210において、各テーブルには、削除(デリート)禁止及び更新(アップデート)禁止の制約が予め課せられている。
すなわち、このシステム210においては、各テーブルに対する追加(インサート)と参照(セレクト)のみが許容されることになる。
すなわち、このシステム210においては、各テーブルに対する追加(インサート)と参照(セレクト)のみが許容されることになる。
このため、既存のデータを無効にする必要が生じた場合には、レコードを削除する代わりに、他のテーブルに新たなレコードを追加することで同等の状態を実現する。
例えば、図16(a)に示した仕入テーブル220に格納された特定の仕入データを無効化するには、同図(b)の仕入取消テーブル222に仕入取消データを追加する。
この仕入取消データの主キーには、取消対象となる仕入データの仕入IDが充填されているため、このデータを利用するに際しAPサーバは、仕入テーブル220に登録された各仕入データの中で、その仕入IDが仕入取消テーブル222に登録されているものについては、対象外として無視する。
例えば、図16(a)に示した仕入テーブル220に格納された特定の仕入データを無効化するには、同図(b)の仕入取消テーブル222に仕入取消データを追加する。
この仕入取消データの主キーには、取消対象となる仕入データの仕入IDが充填されているため、このデータを利用するに際しAPサーバは、仕入テーブル220に登録された各仕入データの中で、その仕入IDが仕入取消テーブル222に登録されているものについては、対象外として無視する。
同様に、図16(c)に示した販売価格テーブル224に格納された特定の販売価格データを無効化するには、同図(d)の販売価格取消テーブル226に販売価格取消データを追加する。
この販売価格取消データの主キーには、取消対象となる販売価格データの販売価格IDが充填されているため、このデータを利用するに際しAPサーバは、販売価格テーブル224に登録された販売価格データの中で、その販売価格IDが販売価格取消テーブル226に登録されているものについては、対象外として無視する。
この販売価格取消データの主キーには、取消対象となる販売価格データの販売価格IDが充填されているため、このデータを利用するに際しAPサーバは、販売価格テーブル224に登録された販売価格データの中で、その販売価格IDが販売価格取消テーブル226に登録されているものについては、対象外として無視する。
また、このシステム210において登録データの修正が必要な場合には、既存レコードをアップデートする代わりに、修正後のデータを備えたレコードを新規に登録することで対応する。
例えば、ある仕入データの「数量」を修正する場合、APサーバは同一の仕入ID、仕入先ID、商品ID、価格で、数量のみを変更した仕入データを新たに生成してDBサーバ212に送信し、仕入テーブル220に追加登録させる。
なお、修正前の仕入データと修正後の仕入データは同じ仕入IDを備えていても、各データ生成時の時刻がミリ秒精度でタイムスタンプに記録されているため、APサーバは参照時に最新のデータを間違いなく特定することができる。
例えば、ある仕入データの「数量」を修正する場合、APサーバは同一の仕入ID、仕入先ID、商品ID、価格で、数量のみを変更した仕入データを新たに生成してDBサーバ212に送信し、仕入テーブル220に追加登録させる。
なお、修正前の仕入データと修正後の仕入データは同じ仕入IDを備えていても、各データ生成時の時刻がミリ秒精度でタイムスタンプに記録されているため、APサーバは参照時に最新のデータを間違いなく特定することができる。
上記第1のAPサーバ214は、各地に配属された仕入担当スタッフ228の操作するクライアント端末230から送信された仕入データや仕入取消データを受け付けると共に、各データの内容に対応するSQL文をDBサーバ212に発行し、仕入テーブル220や仕入取消テーブル222に登録させる機能を担っている。
上記第2のAPサーバ216は、前日に発生した仕入データに基づき、バッチ処理によって翌日分の販売価格データを生成する機能を担うものである。
以下、図17のフローチャートに従い、第2のAPサーバ216の処理内容を説明する。
以下、図17のフローチャートに従い、第2のAPサーバ216の処理内容を説明する。
まず、第2のAPサーバ216は、仕入テーブル220から前日分の仕入データを読み込む(S210)。バッチ処理の実行日が10月22日の場合、10月21日に生成された仕入データが該当する。
図18 (a)に示すように、各仕入データのタイムスタンプには、データ生成時刻がミリ秒単位で記録されているため、仕入テーブル220に対して第1のAPサーバ214からの仕入データが随時登録される環境下であっても、第2のAPサーバ216はタイムスタンプを参照することにより、バッチ処理の対象データ(10月21日に生成されたデータ)と対象外データ(10月21日以前または10月22日に生成されたデータ)を明確に区別することができる。
つぎに第2のAPサーバ216は、仕入取消テーブル222を参照し、バッチ処理の対象となる前日分の仕入データの中で、仕入取消テーブルに仕入IDの登録があるものを無効な仕入データとして排除する(S212)。
つぎに第2のAPサーバ216は、有効な各仕入データの仕入価格及び数量を商品毎に集計し、各商品の前日における平均仕入価格を算出する(S214)。
つぎに第2のAPサーバ216は、この平均仕入価格に所定の利益を上乗せすることにより、各商品の翌日(10月23日)分の販売価格を算出する(S216)。
第2のAPサーバ216は、各商品の翌日分の販売価格データを、当日(10月22日)中に販売価格テーブル224に格納する(S218)。
つぎに第2のAPサーバ216は、この平均仕入価格に所定の利益を上乗せすることにより、各商品の翌日(10月23日)分の販売価格を算出する(S216)。
第2のAPサーバ216は、各商品の翌日分の販売価格データを、当日(10月22日)中に販売価格テーブル224に格納する(S218)。
なお、何らかの理由によって誤った販売価格データを登録してしまった場合、第2のAPサーバ216は、当該販売価格データの販売価格IDを備えた販売価格取消データをDBサーバ212に送信し、販売価格取消テーブル226に登録させる
第3のAPサーバ218は、一般ユーザ232の操作するクライアント端末230から商品価格の提示リクエストが送信されると、販売価格テーブル224及び販売価格取消テーブル226を参照して当日有効な各商品の販売価格を導出し、クライアント端末230に送信する機能や、商品の注文を受け付ける機能を担っている。
ここで、第3のAPサーバ218にとって当日有効な販売価格とは、第2のAPサーバ216によって前日(10月22日)に生成された販売価格データの中で、対応の販売価格取消データが販売価格取消テーブル226に登録されていないものを意味している。
図18(b)に示すように、各販売価格データのタイムスタンプには、第2のAPサーバ216によるデータ生成時刻がミリ秒単位で記録されているため、各商品に係る過去の販売価格データが販売価格テーブル224に混在しているとしても、第3のAPサーバ218は当日提示すべき各商品の販売価格を正確に識別することができる。
上記のように、このシステム210の各APサーバによって生成されるデータには、データ生成時刻がタイムスタンプとして刻印されており、かつ、一旦生成されたデータは削除及び更新もされることなく、半永久的に各テーブルに保存されることとなる。
このため、例えば、ある商品の仕入価格や販売価格の推移を分析する必要性が後日に生じた場合でも、各テーブルに格納された過去のデータを集計することで柔軟に対応できる。
このため、例えば、ある商品の仕入価格や販売価格の推移を分析する必要性が後日に生じた場合でも、各テーブルに格納された過去のデータを集計することで柔軟に対応できる。
上記においては、このシステム210を1台のDBサーバ212によって構成した例を示したが、並列化された複数のDBサーバを用いることもできる。
図19は、第1のAPサーバ214、第2のAPサーバ216、第3のAPサーバ218の他に、第1のDBサーバ212及び第2のDBサーバ212'によってシステム210を構成した例を示している。
ただし、DBサーバの数は2台に限定されるものではなく、さらに多くのDBサーバを設置することが望ましい。
図19は、第1のAPサーバ214、第2のAPサーバ216、第3のAPサーバ218の他に、第1のDBサーバ212及び第2のDBサーバ212'によってシステム210を構成した例を示している。
ただし、DBサーバの数は2台に限定されるものではなく、さらに多くのDBサーバを設置することが望ましい。
ここで、第1のDBサーバ212と第2のDBサーバ212'は、それぞれ仕入テーブル220、仕入取消テーブル222、販売価格テーブル224、販売価格取消テーブル226を備えており、各テーブルには同一のデータが重複して格納されている。
このために、第1APサーバ214が仕入データ等を登録する際には、同じ内容のSQL文を複数生成し、第1のDBサーバ212及び第2のDBサーバ212'に対して同時に同一データの登録を依頼する。
同様に、第2のAPサーバ216が販売価格データ等を登録する際には、同じ内容のSQL文を複数生成し、第1のDBサーバ212及び第2のDBサーバ212'に対して同時に同一データの登録を依頼する。
このために、第1APサーバ214が仕入データ等を登録する際には、同じ内容のSQL文を複数生成し、第1のDBサーバ212及び第2のDBサーバ212'に対して同時に同一データの登録を依頼する。
同様に、第2のAPサーバ216が販売価格データ等を登録する際には、同じ内容のSQL文を複数生成し、第1のDBサーバ212及び第2のDBサーバ212'に対して同時に同一データの登録を依頼する。
これに対し、第2のAPサーバ216あるいは第3のAPサーバ218がデータを参照する際には、第1のDBサーバ212及び第2のDBサーバ212'の何れに対してもデータの抽出を依頼することができる。
なお、何れかのDBサーバから一定時間を経過しても登録完了通知が返って来ない場合、APサーバは通信障害あるいはマシントラブルが発生したものと認定し、当該DBサーバをオフラインモードに移行させる。
具体的には、当該DBサーバを一時的にシステム10から切り離し、残りのDBサーバのみに基づく運用形態に移行する。
具体的には、当該DBサーバを一時的にシステム10から切り離し、残りのDBサーバのみに基づく運用形態に移行する。
この間、切り離されたDBサーバについて点検がなされ、必要な復旧対策が施される。例えば、通信機器の故障が原因で登録完了通知が届いていなかったと判明した場合、新しい通信機器に交換した上で、当該DBサーバをライトモード(データの書込のみが許容され、データの参照が禁止される状態)に設定し、他のDBサーバから差分データをコピーする。
このシステム210の場合、上記の通り、各業務データは追加のみが許容され、削除や更新が認められないルールが適用されているため、データの復旧が極めて容易となる。
すなわち、データの削除や更新が許容されることを前提とした場合、データを復旧させるためにはDBサーバが保持している更新履歴情報に基づき、一定の時点からデータの追加や削除、更新を順番に再現する必要があり、これに長い時間と大きな負荷を要することになる。また、更新ログを確実に保存する仕組みをDBサーバ側に設ける必要がある。
すなわち、データの削除や更新が許容されることを前提とした場合、データを復旧させるためにはDBサーバが保持している更新履歴情報に基づき、一定の時点からデータの追加や削除、更新を順番に再現する必要があり、これに長い時間と大きな負荷を要することになる。また、更新ログを確実に保存する仕組みをDBサーバ側に設ける必要がある。
これに対し、このシステム210のようにデータの追加のみが許容され、削除と更新が禁止される前提の場合、他の正常なDBサーバに登録されたデータと障害が発生したDBサーバに登録されたデータを比較し、単純に足りないデータをコピーするだけで済む。
そして、格納データが最新の状態に追い着いた時点で、当該DBサーバはリード/ライトモード(データの書込及び参照が許容される状態)に設定され、システム210に再接続される。
図20は、この発明をユーザデータの管理業務に適用した第3のデータ管理システム250を示すものであり、DBサーバ252と、APサーバ254とによって構成されている。
DBサーバ252は、ユーザテーブル256と、ユーザ取消テーブル258を備えている。図示の便宜上、1台のDBサーバ252のみが描かれているが、上記と同様、相互に共通のテーブルを備えた複数のDBサーバを用いることもできる。
DBサーバ252は、ユーザテーブル256と、ユーザ取消テーブル258を備えている。図示の便宜上、1台のDBサーバ252のみが描かれているが、上記と同様、相互に共通のテーブルを備えた複数のDBサーバを用いることもできる。
図21(a)に示すように、ユーザテーブル256には、ユーザID、氏名、住所、電話番号、メールアドレス、タイムスタンプ等のデータ項目が設定されている。
また、ユーザ取消テーブル258には、図21(b)に示すように、ユーザID及びタイムスタンプのデータ項目が設定されている。
また、ユーザ取消テーブル258には、図21(b)に示すように、ユーザID及びタイムスタンプのデータ項目が設定されている。
APサーバ254は、ユーザ260の操作するクライアント端末262から新規ユーザ登録のリクエストが送信されると、ユーザID、氏名、住所、電話番号、メールアドレス、タイムスタンプ等のデータ項目を備えたユーザデータを生成し、ユーザテーブル256への登録をDBサーバ252に依頼する。
この場合も、ユーザテーブル256には削除(デリート)禁止及び更新(アップデート)禁止の制約が予め課せられている。
このため、登録データの修正が必要な場合には、既存レコードをアップデートする代わりに、修正後のデータを備えたレコードを新規に登録することで対応する。
このため、登録データの修正が必要な場合には、既存レコードをアップデートする代わりに、修正後のデータを備えたレコードを新規に登録することで対応する。
例えば、図22(a)に示すように、新規登録時のユーザデータY(氏名:斉藤花子)について、氏名を変更する必要性が生じた場合、APサーバ254は、同一のユーザID、住所、電話番号、メールアドレスを備え、氏名のみを「海野花子」に変更したユーザデータY'を新たに生成してDBサーバ252に送信し、ユーザテーブル256に追加登録させる。
この場合、修正前のユーザデータYと修正後のユーザデータY'は同じユーザID(00012346)を備えていても、各データ生成時の時刻がミリ秒精度でタイムスタンプに記録されているため、APサーバ254は参照時に最新のデータを間違いなく特定することができる。
この場合、修正前のユーザデータYと修正後のユーザデータY'は同じユーザID(00012346)を備えていても、各データ生成時の時刻がミリ秒精度でタイムスタンプに記録されているため、APサーバ254は参照時に最新のデータを間違いなく特定することができる。
同様に、新規登録時のユーザデータX(住所:東京都江東区…/電話番号:03-5606…)について、住所と電話番号を変更する必要性が生じた場合、APサーバ254は、同一のユーザID、氏名、メールアドレスを備え、住所を「東京都三鷹市…」に、電話番号を「0422-45…」に変更したユーザデータX'を新たに生成してDBサーバ252に送信し、ユーザテーブル256に追加登録させる。
また、ユーザの退会によって特定のユーザデータを削除する必要性が生じた場合、図22(b)に示すように、APサーバ254はその都度、対象となるユーザデータのユーザIDを備えたユーザ取消データA~CをDBサーバ252に送信し、ユーザ取消テーブル258に登録させることで対応する。
図示の通り、ユーザデータについて実質的(論理的)な更新や削除を行った後でも、元のユーザデータ自体はそのままユーザテーブル256に残されているため、後でユーザの旧姓や旧住所を参照する必要性が生じた場合や、退会ユーザにアクセスする必要性が生じた場合でも、他の記録を用いてデータの復旧を行うことなく、APサーバ254は即座に検索や集計等を実行することができる。
例えば、「海野花子」の旧姓を調べる必要性が生じた場合、APサーバ254はユーザデータY'のユーザIDと合致するユーザデータの中で、タイムスタンプに記録された日時が古いユーザデータYを抽出することにより、旧姓が「斉藤」であったことを即座に導くことができる。
また、退会したユーザに対して新しいサービスの告知を行う必要性が生じた場合、APサーバ254はユーザ取消テーブル258に登録されたユーザIDに係るユーザデータをユーザテーブル256から抽出し、各ユーザデータのメールアドレスに宛てて販促メールを送信することができる。
図23は、この発明に係る口座データ管理システム310の全体構成を示すものであり、APサーバ312と、入金管理用DBサーバ314と、口座管理用DBサーバ316と、出金管理用DBサーバサーバ318を備えている。
APサーバ312には、Webサーバ320を介してPC等よりなる複数のクライアント端末322が接続されている。
また、APサーバ312には、ATMサーバ324を介して複数のATM端末326が接続されている。
図示は省略したが、APサーバ312は、ロードバランサを介した多重化により、負荷分散が図られている。
また、APサーバ312には、ATMサーバ324を介して複数のATM端末326が接続されている。
図示は省略したが、APサーバ312は、ロードバランサを介した多重化により、負荷分散が図られている。
入金管理用DBサーバ314には、少なくとも入金テーブル330と、入金/送金テーブル332と、送金受付テーブル334が設けられている。
入金テーブル330には、入金ID、口座番号、金額等のデータ項目を備えたレコードが格納されている。
また、入金/送金テーブル332には、入金ID、送金ID等のデータ項目を備えたレコードが格納されている。
送金受付テーブル334には、送金ID等のデータ項目を備えたレコードが格納されている。
入金テーブル330には、入金ID、口座番号、金額等のデータ項目を備えたレコードが格納されている。
また、入金/送金テーブル332には、入金ID、送金ID等のデータ項目を備えたレコードが格納されている。
送金受付テーブル334には、送金ID等のデータ項目を備えたレコードが格納されている。
口座管理用DBサーバ316には、少なくとも口座テーブル336が設けられている。
この口座テーブル336には、口座番号、暗証番号、預金種別、口座名義等のデータ項目を備えたレコードが格納されている。
この口座テーブル336には、口座番号、暗証番号、預金種別、口座名義等のデータ項目を備えたレコードが格納されている。
出金管理用DBサーバ318には、少なくとも出金テーブル338と、出金/送金テーブル340と、送金テーブル342と、送金完了テーブル344が設けられている。
出金テーブル338には、出金ID、口座番号、金額等のデータ項目を備えたレコードが格納されている。
また、出金/送金テーブル340には、出金ID、送金ID等のデータ項目を備えたレコードが格納されている。
送金テーブル342には、送金ID等のデータ項目を備えたレコードが格納されている。
送金完了テーブル344には、送金ID等のデータ項目を備えたレコードが格納されている。
出金テーブル338には、出金ID、口座番号、金額等のデータ項目を備えたレコードが格納されている。
また、出金/送金テーブル340には、出金ID、送金ID等のデータ項目を備えたレコードが格納されている。
送金テーブル342には、送金ID等のデータ項目を備えたレコードが格納されている。
送金完了テーブル344には、送金ID等のデータ項目を備えたレコードが格納されている。
入金管理用DBサーバ314としては、同じテーブル(入金テーブル330、入金/送金テーブル332、送金受付テーブル334)を備えた複数のDBサーバ314', 314"…が設けられており、各DBサーバ314に対してはAPサーバ312から同時に同一データが送信され、各テーブルへの追加登録が重複実行される。
また、出金管理用DBサーバ318としても、同じテーブル(出金テーブル338、出金/送金テーブル340、送金テーブル342、送金完了テーブル344)を備えた複数のDBサーバ318', 318"…が用意されており、各DBサーバ318に対してはAPサーバ12から同時に同一データが送信され、各テーブルへの追加登録が重複実行される。
また、出金管理用DBサーバ318としても、同じテーブル(出金テーブル338、出金/送金テーブル340、送金テーブル342、送金完了テーブル344)を備えた複数のDBサーバ318', 318"…が用意されており、各DBサーバ318に対してはAPサーバ12から同時に同一データが送信され、各テーブルへの追加登録が重複実行される。
このように、それぞれ同じデータを格納した入金管理用DBサーバ314と出金管理用DBサーバ318が複数用意されているため、APサーバ312はデータの参照時には何れのDBサーバからでも自由にデータを読み出すことが可能となり、データ参照処理の効率化が図れる。
また、同じ内容を備えた一部のDBサーバを遠隔地に配置することにより、地震等の大規模災害に備えることも可能となる。
また、同じ内容を備えた一部のDBサーバを遠隔地に配置することにより、地震等の大規模災害に備えることも可能となる。
さらに、入金管理用DBサーバ314と出金管理用DBサーバ318には、データの追加と参照のみが許容され、データの更新や削除が禁止されるという制約が予め設定されている。
すなわち、一般的なDBサーバのようにデータの更新や削除を認めるとなると、一部のDBサーバに障害が発生した場合に、そのデータを復旧させるためには当該DBサーバが保持している更新ログに基づき、一定の時点からデータの追加や削除、更新を順番に再現する必要があり、これに多大な時間を要するのみならず、更新ログを確実に保存する仕組みをDBサーバ側に設ける必要性も生じる。
これに対し、データの登録に関しては「追加」のみが許容されるのであれば、他の正常に動作しているDBサーバに登録されたデータと比較し、その差分を単純にコピーするだけで追い付くことができるため、更新ログの保存が不要となり、復旧までの時間も大幅に短縮可能となる。
また、このようにデータの復旧が容易であるため、複数のDBサーバに同一データを重複格納するに際し、「2相コミット」と称するDBサーバ間での面倒な調停方式を踏襲する必要がなくなり、各DBサーバに対して単純に同一データの追加登録を依頼し、それぞれから完了通知が返ってきた時点で当該データを読み取り可能とすることができる(いわゆるオートコミットの実現)。
銀行のユーザは、ATM端末326やクライアント端末322を操作することにより、自己の口座に現金を預金したり、自己の口座から現金を引き出したりすることができる。
例えば、ユーザがATM端末326のディスプレイに表示されたサービスメニューから「預け入れ」を選択した後、キャッシュカードを挿入し、口座の暗証番号を入力すると、ATMサーバ324経由でAPサーバ312に口座番号と暗証番号が送信される。
これを受けたAPサーバ312は、口座管理用DBサーバ316の口座テーブル336を参照し、該当の口座番号及び暗証番号の正当性をチェックする。
例えば、ユーザがATM端末326のディスプレイに表示されたサービスメニューから「預け入れ」を選択した後、キャッシュカードを挿入し、口座の暗証番号を入力すると、ATMサーバ324経由でAPサーバ312に口座番号と暗証番号が送信される。
これを受けたAPサーバ312は、口座管理用DBサーバ316の口座テーブル336を参照し、該当の口座番号及び暗証番号の正当性をチェックする。
つぎに、ユーザがATM端末326に現金を投入すると、ATM端末326からAPサーバ312に入金額が送信される。
これを受けたAPサーバ312は、入金データ(入金ID、口座番号、金額等)を入金管理用DBサーバ314に送信する。
入金管理用DBサーバ314は、この入金データを入金テーブル330に追加登録する。
これを受けたAPサーバ312は、入金データ(入金ID、口座番号、金額等)を入金管理用DBサーバ314に送信する。
入金管理用DBサーバ314は、この入金データを入金テーブル330に追加登録する。
また、上記のサービスメニューからユーザが「引き出し」を選択し、金額の指定を行うと、ATMサーバ324経由でAPサーバ312に引き出し金額が送信される。
これを受けたAPサーバ312は、まず当該口座の残高を算出する(残高の算出方法については後述)。
そして、残高が引き出し金額を上回っている場合には、現金払い出しの指示データをATM端末326に送信すると共に、対応の出金データ(出金ID、口座番号、金額等)を生成し、出金管理用DBサーバ318に送信する。
出金管理用DBサーバ318は、この出金データを出金テーブル338に追加登録する。
そして、残高が引き出し金額を上回っている場合には、現金払い出しの指示データをATM端末326に送信すると共に、対応の出金データ(出金ID、口座番号、金額等)を生成し、出金管理用DBサーバ318に送信する。
出金管理用DBサーバ318は、この出金データを出金テーブル338に追加登録する。
ユーザは、自宅や職場に置かれたクライアント端末322からWebサーバ320経由でAPサーバ312にアクセスし、電子マネーカードを用いた預け入れや引き出し(チャージ)を行うこともできる。
つぎに、図24のフローチャートに従い、このシステム310を用いた口座間での送金方法について説明する。
まず、ユーザがATM端末326のディスプレイに表示されたサービスメニューから「振り込み」を選択した後、金額の指定、振込先口座番号の指定を行うと、ATMサーバ324経由でAPサーバ312に送金依頼データが送信される。この送信依頼データには、ユーザの口座番号、振込先の口座番号及び金額が含まれている。
まず、ユーザがATM端末326のディスプレイに表示されたサービスメニューから「振り込み」を選択した後、金額の指定、振込先口座番号の指定を行うと、ATMサーバ324経由でAPサーバ312に送金依頼データが送信される。この送信依頼データには、ユーザの口座番号、振込先の口座番号及び金額が含まれている。
これを受けたAPサーバ312は(S310)、ユニークな送金ID及び出金IDを生成すると共に、送金データ(送金ID等)、出金データ(出金ID、ユーザの口座番号、金額等)、出金/送金データ(出金ID、送金ID等)を生成し、これらを出金管理用DBサーバ318に送信して、送金テーブル342、出金テーブル338、出金/送金テーブル340への登録を依頼する(S312)。
これを受けた出金管理用DBサーバ318では、送金テーブル342、出金テーブル338、出金/送金テーブル340に対して、送金データ、出金データ、出金/送金データが、一つのトランザクションとして一括して追加される。
出金管理用DBサーバ318から各テーブルに対する登録完了通知を受け取ったAPサーバ312は(S314)、ATMサーバ324経由でATM端末326に送金完了を通知する(S316)。
つぎにAPサーバ312は、ユニークな入金IDを生成した上で、送金受付データ(送金ID等)、入金データ(入金ID、振込先の口座番号、金額等)、入金/送金データ(入金ID、送金ID等)を生成し、これらを入金管理用DBサーバ314に送信して、送金受付テーブル334、入金テーブル330、入金/送金テーブル332への登録を依頼する(S318)。
これを受けた入金管理用DBサーバ314では、送金受付テーブル334、入金テーブル330、入金/送金テーブル332に対して、送金受付データ、入金データ、入金/送金データが、一つのトランザクションとして一括して追加される。
入金管理用DBサーバ314からの登録完了通知を受け取ったAPサーバ312は(S320)、送金完了データ(送金ID等)を出金管理用DBサーバ318に送信し、送金完了テーブルへの登録を依頼する(S322)。
この送金完了テーブルに送金IDが登録された時点で、一連の送金処理が無事に完了したこととなるため、APサーバ312は定期的に送金テーブル342と送金完了テーブル344をチェックし、送金テーブル342に送金IDが登録されていない送金処理が存在する場合、入金データ、入金/送金データ、送金受付データを入金管理用DBサーバ314に再送する処理をバックグランドで実行する。
何らかの原因によって最初の依頼が到達していなかった場合、入金管理用DBサーバ314は再送された登録依頼に基づき、改めて各データの一括追加を完了させた後、登録完了通知をAPサーバ312に送信する。
入金管理用DBサーバ314からの登録完了通知を受け取ったAPサーバ312は、送金完了データを出金管理用DBサーバ318に送信し、送金完了テーブルへの登録を依頼する。
入金管理用DBサーバ314からの登録完了通知を受け取ったAPサーバ312は、送金完了データを出金管理用DBサーバ318に送信し、送金完了テーブルへの登録を依頼する。
これに対し、最初の依頼に基づいて各データの追加登録が完了しており、ただ通信障害等によって登録完了通知がAPサーバ312に届いていなかったような場合、入金管理用DBサーバ314は2回目以降の登録依頼に基づいてデータを重複登録することはせずに、登録完了通知を再送する。
これは、同一IDを備えたデータの重複登録を自動的に排除するDBサーバ本来の機能に基づいて実現される。
すなわち、入金データ及び入金/送金データのプライマリキーである「入金ID」としては、入金データの再送毎に新規のIDが払い出されることになるが、送金受付データのプライマリキーには当初の「送金ID」が充填されているため、この送金IDをチェックすることでDBサーバはデータの重複登録を回避することが可能となる。
すなわち、入金データ及び入金/送金データのプライマリキーである「入金ID」としては、入金データの再送毎に新規のIDが払い出されることになるが、送金受付データのプライマリキーには当初の「送金ID」が充填されているため、この送金IDをチェックすることでDBサーバはデータの重複登録を回避することが可能となる。
つぎに、図25のフローチャートに従い、このシステム310を用いた口座の残高照会の手順について説明する。
まず、ユーザがATM端末326のディスプレイに表示されたサービスメニューから「残高照会」を選択すると、ATMサーバ324経由でAPサーバ312に口座番号を伴う残高照会依頼が送信される。
まず、ユーザがATM端末326のディスプレイに表示されたサービスメニューから「残高照会」を選択すると、ATMサーバ324経由でAPサーバ312に口座番号を伴う残高照会依頼が送信される。
これを受けたAPサーバ312は(S330)、上記口座番号を出金管理用DBサーバ318に送信し、当該口座番号に関連付けられた出金データの抽出を依頼する(S332)。
そして、出金管理用DBサーバ318から該当の出金データが送信されると、APサーバ312は、各出金データの金額を加算し、その合計金額を求める(S334)。
そして、出金管理用DBサーバ318から該当の出金データが送信されると、APサーバ312は、各出金データの金額を加算し、その合計金額を求める(S334)。
つぎにAPサーバ312は、上記口座番号を入金管理用DBサーバ314に送信し、当該口座番号に関連付けられた入金データの抽出を依頼する(S336)。
そして、入金管理用DBサーバ314から該当の入金データが送信されると、APサーバ312は各入金データの金額を加算し、その合計金額を求める(S338)。
そして、入金管理用DBサーバ314から該当の入金データが送信されると、APサーバ312は各入金データの金額を加算し、その合計金額を求める(S338)。
つぎにAPサーバ312は、入金データの上記合計金額から出金データの上記合計金額を減算することにより、現時点における残高を導出する(S340)。
この残高データは、ATMサーバ324を経由してATM端末326に送信され(S342)、ディスプレイに表示される。
この残高データは、ATMサーバ324を経由してATM端末326に送信され(S342)、ディスプレイに表示される。
上記においては、ATM端末326上でユーザが残高照会を選択した場合について説明したが、引き出しや振り込みの前処理として口座の残高を確認する場合であっても、APサーバ312は同様の処理手順によって口座の残高を算出する。
このように、口座の残高を管理する専用のテーブルをDBサーバ側に設けることなく、必要に応じて計算によって算出する方式を採用することにより、送金という口座間を跨る処理を行う際に、送金元口座からの出金処理と、送金先口座への入金処理とを切り離すことが可能となる。
すなわち、従来のように残高テーブルを設けて残高の管理を行うとなると、送金処理に際し送金元口座からの出金と送金先口座への入金を同時に行い、その結果を両者の残高に反映させる必要が生じ、複数のDBサーバ間におけるタイミングの調整(2相コミット)が不可欠となる。
また、万が一何れか一方の処理が失敗した場合には、各テーブルの状態を元に戻す処理(ロールバック)が必要となる。
また、万が一何れか一方の処理が失敗した場合には、各テーブルの状態を元に戻す処理(ロールバック)が必要となる。
もちろん、残高確認の必要性が生じる都度、計算によって残高を算出するとなると、APサーバ312側の負荷が増大することは否めないが、上記のようにロードバランサを介してAPサーバ312を多重化したり、マルチコア化したサーバコンピュータでAPサーバ312を構成したりすることにより、十分に対応可能となる。仮にハードウェアの増強可能な範囲を超えてデータが発生する場合は、前日までの合算値をAPサーバ上にスナップショットとして保持する。スナップショットを日々更新する運用が生じるが、不変である過去の明細行を繰り返し合算する計算負荷を減らす効果がある。当日に生じたデータと前日までのスナップショットの合算により、明細行の履歴件数に依存しない残高確認の応答速度の維持が可能となる。
ところで、多数のAPサーバやDBサーバを用い、地球規模で分散処理を行うシステムで、情報の一貫性をデータの書き込み時に担保し、読み取り時の一貫性を書き込み時の一貫性に依存させる方式だと、各サーバの設置されたタイムゾーンの相違に基づく時差や、サーバ毎の時計の狂い、あるいは通信環境の差異等により、タイムスタンプの時刻に誤差が生じるため、以下の参考文献1に示すように、これまでは原子時計やGPSを用いた大掛かりで厳密な時刻同期の仕組みを設ける必要があった。
[参考文献1]グーグル「Spanner」:地球大のリアルタイム・データベース
インターネットURL:http://wired.jp/2012/11/28/google-spanner-time/
検索日:2016年10月28日
[参考文献1]グーグル「Spanner」:地球大のリアルタイム・データベース
インターネットURL:http://wired.jp/2012/11/28/google-spanner-time/
検索日:2016年10月28日
これに対し、上記の口座データ管理システム310の場合には、APサーバ312が送金関連データ(送金データ、出金データ、出金/送金データ)の登録完了通知を出金管理用DBサーバ318から受け取った場合にのみ、対応の入金関連データ(送金受付データ、入金データ、入金/送金データ)がAPサーバ312から入金管理用DBサーバ314に送信される。そして、入金管理用DBサーバ314から登録完了通知が届き、出金管理用DBサーバ318の送金完了テーブル344に送金完了データが登録されるまで、APサーバ312から入金管理用DBサーバ314に対して入金関連データが何度も送信される仕組みを備えている。
すなわち、送金関連データの登録と入金関連データの登録の順序性が、APサーバ312によって担保される仕組みを備えている。
すなわち、送金関連データの登録と入金関連データの登録の順序性が、APサーバ312によって担保される仕組みを備えている。
このため、入金テーブル330や出金テーブル338に様々なタイムゾーンに属する様々な条件下のAPサーバ312から送信されたデータが混在していても、APサーバ312は口座の残高集計時に各データのタイムスタンプを参照する必要がなく、現存する入金データの合計金額から現存する出金データの合計金額を減算することで、現時点における残高をシンプルに導くことができる。
これはつまり、情報の一貫性の観点で言うと、書き込み時の一貫性に依拠しないシステム構成にして、かつ、読み取り時の一貫性を書き込み時の一貫性とは独立させることで、この口座データ管理システム310においては、各サーバの時計を地球規模で同期させる大掛かりな仕組みが不要となることを意味している。
これはつまり、情報の一貫性の観点で言うと、書き込み時の一貫性に依拠しないシステム構成にして、かつ、読み取り時の一貫性を書き込み時の一貫性とは独立させることで、この口座データ管理システム310においては、各サーバの時計を地球規模で同期させる大掛かりな仕組みが不要となることを意味している。
また、このシステム310の場合、上記のように入金管理用DBサーバ314及び出金管理用DBサーバ318に格納されるテーブルには、レコードの削除及び更新が禁止される制約が課せられており、単にレコードの追加と参照のみが許可される仕組みであるため、DBサーバ側の処理も効率化される利点がある。
このシステム310によれば、送金処理において、出金側データの登録処理と入金側データの登録処理との間に若干のタイムラグが生じることは避けられないが、取引の実情を考慮すれば問題にならないレベルといえる。
また、送金完了テーブル344に送金IDが登録されるまで、APサーバ312から入金管理用DBサーバ314に対して入金データ、入金/送金データ、送金受付データが再送される仕組みを備えているため、複数の入金管理用DBサーバ314…中の少なくとも1台と、複数の出金管理用DBサーバ318…中の少なくとも1台が稼働している限りにおいて結果的にデータの整合性が担保される利点を有している。
また、送金完了テーブル344に送金IDが登録されるまで、APサーバ312から入金管理用DBサーバ314に対して入金データ、入金/送金データ、送金受付データが再送される仕組みを備えているため、複数の入金管理用DBサーバ314…中の少なくとも1台と、複数の出金管理用DBサーバ318…中の少なくとも1台が稼働している限りにおいて結果的にデータの整合性が担保される利点を有している。
また、データ管理機能を入金管理用DBサーバ314と出金管理用DBサーバ318に二分した結果、分散処理による効率化が図れる。
しかも、入金管理用DBサーバ314と出金管理用DBサーバ318を、それぞれ同一のテーブル、同一のデータを備えた複数のDBサーバによって多重化することにより、APサーバ312は複数のDBサーバから同時並行的にデータの抽出を行うことができ、さらなる処理の効率化が図れる。
なお、サーバ間で時刻同期がされていることを前提とするシステム構成を採用していると、この多重化には、時刻同期システムの構成の見直しなどが必要となるが、本システムは、サーバ間で時刻同期がされていることを前提としていないので、その分、多重化を容易に行うことができる。
しかも、入金管理用DBサーバ314と出金管理用DBサーバ318を、それぞれ同一のテーブル、同一のデータを備えた複数のDBサーバによって多重化することにより、APサーバ312は複数のDBサーバから同時並行的にデータの抽出を行うことができ、さらなる処理の効率化が図れる。
なお、サーバ間で時刻同期がされていることを前提とするシステム構成を採用していると、この多重化には、時刻同期システムの構成の見直しなどが必要となるが、本システムは、サーバ間で時刻同期がされていることを前提としていないので、その分、多重化を容易に行うことができる。
上記においては、銀行の預金口座に係るデータ管理にこのシステム310を適用した例を示したが、この発明はこれに限定されるものではない。
例えば、ユーザのポイントを管理する口座のデータ管理にこのシステム310を適用することが考えられる。
この場合、「入金」は「ポイント追加」と、「出金」は「ポイント利用(適用)」と、「送金」は「ポイント譲渡」と、「残高」は「ポイント残高」と、「金額」は「ポイント数」と、「口座番号」は「アカウント」などと読み替えればよい。
例えば、ユーザのポイントを管理する口座のデータ管理にこのシステム310を適用することが考えられる。
この場合、「入金」は「ポイント追加」と、「出金」は「ポイント利用(適用)」と、「送金」は「ポイント譲渡」と、「残高」は「ポイント残高」と、「金額」は「ポイント数」と、「口座番号」は「アカウント」などと読み替えればよい。
10 データ管理システム
12 第1のデータセンター
14 第1のAPサーバ
16 第1のDBサーバ
18 第2のDBサーバ
20 第2のデータセンター
22 第2のAPサーバ
24 第3のDBサーバ
26 第4のDBサーバ
27 通信ネットワーク
28 クライアント端末
29 通信回線
30 業務処理部
32 人工キー管理部
34 データ制御部
38 DB連絡部
40 注文テーブル
41 注文取消テーブル
42 注文明細テーブル
43 注文明細取消テーブル
46 人工キー管理テーブル
47 人工キーの下一桁管理テーブル
48 APサーバ管理テーブル
49 データセンター管理テーブル
61 第1の注文明細データ
62 第2の注文明細データ
63 第3の注文明細データ
64 注文データ
70 ユーザテーブル
71 ユーザ取消テーブル
72 氏名テーブル
73 氏名取消テーブル
74 住所テーブル
75 住所取消テーブル
76 電話番号テーブル
77 電話番号取消テーブル
78 Eメールテーブル
79 Eメール取消テーブル
80 氏名データ
81 住所データ
82 電話番号データ
83 Eメールデータ
84 ユーザデータ
85 更新管理テーブル
86 更新住所データ
87 更新電話番号データ
88 更新管理データ
210 第1のデータ管理システム
212 DBサーバ(第1のDBサーバ)
212' 第2のDBサーバ
214 第1のAPサーバ
216 第2のAPサーバ
218 第3のAPサーバ
220 仕入テーブル
222 仕入取消テーブル
224 販売価格テーブル
226 販売価格取消テーブル
228 仕入担当スタッフ
230 クライアント端末
232 一般ユーザ
250 第2のデータ管理システム
252 DBサーバ
254 APサーバ
256 ユーザテーブル
258 ユーザ取消テーブル
260 ユーザ
262 クライアント端末
310 口座データ管理システム
312 APサーバ
314 入金管理用DBサーバ
316 口座管理用DBサーバ
318 出金管理用DBサーバサーバ
320 Webサーバ
322 クライアント端末
324 ATMサーバ
326 ATM端末
330 入金テーブル
332 入金/送金テーブル
334 送金受付テーブル
336 口座テーブル
338 出金テーブル
340 出金/送金テーブル
342 送金テーブル
344 送金完了テーブル
12 第1のデータセンター
14 第1のAPサーバ
16 第1のDBサーバ
18 第2のDBサーバ
20 第2のデータセンター
22 第2のAPサーバ
24 第3のDBサーバ
26 第4のDBサーバ
27 通信ネットワーク
28 クライアント端末
29 通信回線
30 業務処理部
32 人工キー管理部
34 データ制御部
38 DB連絡部
40 注文テーブル
41 注文取消テーブル
42 注文明細テーブル
43 注文明細取消テーブル
46 人工キー管理テーブル
47 人工キーの下一桁管理テーブル
48 APサーバ管理テーブル
49 データセンター管理テーブル
61 第1の注文明細データ
62 第2の注文明細データ
63 第3の注文明細データ
64 注文データ
70 ユーザテーブル
71 ユーザ取消テーブル
72 氏名テーブル
73 氏名取消テーブル
74 住所テーブル
75 住所取消テーブル
76 電話番号テーブル
77 電話番号取消テーブル
78 Eメールテーブル
79 Eメール取消テーブル
80 氏名データ
81 住所データ
82 電話番号データ
83 Eメールデータ
84 ユーザデータ
85 更新管理テーブル
86 更新住所データ
87 更新電話番号データ
88 更新管理データ
210 第1のデータ管理システム
212 DBサーバ(第1のDBサーバ)
212' 第2のDBサーバ
214 第1のAPサーバ
216 第2のAPサーバ
218 第3のAPサーバ
220 仕入テーブル
222 仕入取消テーブル
224 販売価格テーブル
226 販売価格取消テーブル
228 仕入担当スタッフ
230 クライアント端末
232 一般ユーザ
250 第2のデータ管理システム
252 DBサーバ
254 APサーバ
256 ユーザテーブル
258 ユーザ取消テーブル
260 ユーザ
262 クライアント端末
310 口座データ管理システム
312 APサーバ
314 入金管理用DBサーバ
316 口座管理用DBサーバ
318 出金管理用DBサーバサーバ
320 Webサーバ
322 クライアント端末
324 ATMサーバ
326 ATM端末
330 入金テーブル
332 入金/送金テーブル
334 送金受付テーブル
336 口座テーブル
338 出金テーブル
340 出金/送金テーブル
342 送金テーブル
344 送金完了テーブル
Claims (9)
- APサーバとDBサーバを備えたデータ管理システムであって、
上記APサーバは、業務処理の結果生じた業務データを上記DBサーバに送信し、対応のテーブルへの登録を依頼する機能を備え、
上記業務データは、相互に関連性を有する親データと、複数の子データとの組合せからなり、
上記の各子データは、子データ固有のIDの他に、上記親データのIDを外部キーとして備えており、
上記業務データの登録に際し、上記APサーバは、まず上記DBサーバに対して各子データの登録を依頼し、上記DBサーバから全ての子データに係る登録完了通知が届いた時点で親データの登録を上記DBサーバに依頼し、一定の時間内に何れかの子データの登録完了通知が届かない場合には、親データの登録を中止し、
また登録済みの業務データの参照に際し、上記APサーバは、関連する親データの登録のある子データのみを参照の対象とし、関連する親データの登録のない子データについては参照の対象外とすることを特徴とするデータ管理システム。 - 複数のDBサーバを備えており、
上記親データの登録に際し、上記APサーバは、上記子データの登録を依頼したDBサーバとは別個のDBサーバに対して登録を依頼することを特徴とする請求項1に記載のデータ管理システム。 - 同一のデータを格納する共通のテーブルをそれぞれ備えた複数のDBサーバを備えており、
上記業務データの登録に際し、上記APサーバは、まず上記の各DBサーバに各子データの登録を依頼し、
全ての子データについて、何れかのDBサーバから登録完了通知が届いた時点で親データの登録を上記の各DBサーバに依頼し、一定の時間内に何れかの子データの登録完了通知が何れのDBサーバからも届かない場合には、親データの登録を中止することを特徴とする請求項1に記載のデータ管理システム。 - 上記DBサーバのテーブルには、レコードの参照及び追加のみが許容され、削除及び更新が禁止される制約が設けられていることを特徴とする請求項3に記載のデータ管理システム。
- 上記APサーバは、既存の業務データを削除する必要がある場合に、取消対象となる業務データのIDをセットするデータ項目を備えたデータ取消用データを生成すると共に、
このデータ取消用データを各DBサーバに設けられた取消専用のテーブルに追加登録させることにより、既存の業務データを実質的に無効化することを特徴とする請求項4に記載のデータ管理システム。 - 上記の各業務データには、それぞれ業務処理時のタイムスタンプが刻印されており、
上記APサーバは、既存の業務データを更新する必要がある場合に、当該業務データと同じIDを有すると共に、修正後の値及び修正時のタイムスタンプを備えた更新用業務データを新たに生成し、
この更新用業務データを上記の各DBサーバに設けられた該当のテーブルに追加登録させることにより、既存の業務データを実質的に更新することを特徴とする請求項4または5に記載のデータ管理システム。 - 上記APサーバは、相互に関連性を有する既存の複数の子データを同時に更新する必要がある場合に、各子データの固有のIDと、相互に共通する親データのIDと、それぞれの修正後の値と、相互に共通する修正時のタイムスタンプを備えた更新用子データを新たに生成すると共に、上記親データのIDと、上記タイムスタンプを備えた更新管理データを生成し、
まず上記の各DBサーバに対して各更新用子データの登録を依頼し、全ての更新用子データについて、何れかのDBサーバから登録完了通知が届いた時点で更新管理データの登録を上記の各DBサーバに依頼し、一定の時間内に何れかの子データの登録完了通知が何れのDBサーバからも届かない場合には、更新管理データの登録を中止し、
また更新用子データの参照に際し、各更新用子データに係る親データのID及びタイムスタンプを備えた更新管理データの登録のある更新用子データのみを参照の対象とし、上記更新管理データの登録のない更新用子データについては参照の対象外とすることを特徴とする請求項6に記載のデータ管理システム。 - APサーバとDBサーバを備えたデータ管理システムであって、
上記DBサーバのテーブルには、レコードの参照及び追加のみが許容され、削除及び更新が禁止される制約が設けられており、
上記APサーバは、業務処理の結果生じた業務データにデータ生成時刻をタイムスタンプとして追加した上で、上記DBサーバに送信して対応のテーブルへの登録を依頼する機能と、
既存の業務データを削除する必要がある場合に、取消対象となる業務データのIDをセットするデータ項目を備えたデータ取消用データを生成すると共に、これを上記DBサーバに設けられた取消専用のテーブルに追加登録させることにより、既存の業務データを実質的に無効化する機能と、
既存の業務データを更新する必要がある場合に、当該業務データと同じIDを有すると共に、修正後の値及び修正時のタイムスタンプを備えた更新用業務データを新たに生成すると共に、この更新用業務データを上記DBサーバに設けられた該当のテーブルに追加登録させることにより、既存の業務データを実質的に更新する機能と、
過去の特定時点における業務データを参照する必要がある場合に、上記テーブルに格納された各業務データのタイムスタンプに記録された時刻に基づいて該当の業務データを抽出する機能と、
を備えたことを特徴とするデータ管理システム。 - 上記APサーバは、上記テーブルに格納された業務データの中で、特定の期間内に生成された業務データに基づいて所定のバッチ処理を実行する機能を備え、
このバッチ処理に際し、上記テーブルに格納された各業務データのタイムスタンプに記録された時刻に基づいて、バッチ処理の対象となる業務データと、対象外の業務データとを識別することを特徴とする請求項8に記載のデータ管理システム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16862217.3A EP3373149A4 (en) | 2015-11-06 | 2016-11-04 | DATA MANAGEMENT SYSTEM |
JP2017549135A JP6549245B2 (ja) | 2015-11-06 | 2016-11-04 | データ管理システム |
US15/965,232 US11169984B2 (en) | 2015-11-06 | 2018-04-27 | Data management system |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPPCT/JP2015/081327 | 2015-11-06 | ||
PCT/JP2015/081327 WO2017077643A1 (ja) | 2015-11-06 | 2015-11-06 | データ管理システム |
JPPCT/JP2015/081531 | 2015-11-10 | ||
PCT/JP2015/081531 WO2017081737A1 (ja) | 2015-11-10 | 2015-11-10 | データ管理システム |
Related Parent Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2015/081327 Continuation WO2017077643A1 (ja) | 2015-11-06 | 2015-11-06 | データ管理システム |
PCT/JP2015/081531 Continuation WO2017081737A1 (ja) | 2015-11-06 | 2015-11-10 | データ管理システム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/965,232 Continuation US11169984B2 (en) | 2015-11-06 | 2018-04-27 | Data management system |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017078158A1 true WO2017078158A1 (ja) | 2017-05-11 |
Family
ID=58662068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2016/082855 WO2017078158A1 (ja) | 2015-11-06 | 2016-11-04 | データ管理システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US11169984B2 (ja) |
EP (1) | EP3373149A4 (ja) |
JP (1) | JP6549245B2 (ja) |
WO (1) | WO2017078158A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7322533B2 (ja) | 2019-06-13 | 2023-08-08 | カシオ計算機株式会社 | 情報処理装置、情報処理方法、情報処理システム及びプログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10841079B1 (en) * | 2017-07-26 | 2020-11-17 | EMC IP Holding Company LLC | Data registration-aware storage systems |
JP2022163828A (ja) * | 2021-04-15 | 2022-10-27 | 東芝テック株式会社 | 情報処理システム、クライアント装置及び情報処理プログラム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003208346A (ja) * | 2002-01-16 | 2003-07-25 | Fujitsu Ltd | データベース更新情報の反映システムおよびそのためのプログラム |
JP2013131011A (ja) * | 2011-12-21 | 2013-07-04 | Nomura Research Institute Ltd | データ利用システム |
JP2013164647A (ja) * | 2012-02-09 | 2013-08-22 | Nomura Research Institute Ltd | 時限データの履歴管理システム |
JP2014041501A (ja) * | 2012-08-23 | 2014-03-06 | Hitachi Solutions Ltd | バッチ処理対象データの高速読込み方法及びバッチ管理システム |
JP2015165357A (ja) * | 2014-03-03 | 2015-09-17 | 株式会社野村総合研究所 | データ管理システム |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2329044B (en) * | 1997-09-05 | 2002-10-09 | Ibm | Data retrieval system |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
JP2001209652A (ja) * | 2000-01-24 | 2001-08-03 | Nec Corp | 文書公開システム及び文書公開方法並びにプログラムを記録した機械読み取り可能な記録媒体 |
US20030223090A1 (en) * | 2002-05-28 | 2003-12-04 | Mustafa Seifi | Method and implementation for message-driven job processing |
US20040199537A1 (en) * | 2003-04-03 | 2004-10-07 | Duff Robert Cory | System for storing and retrieving database information |
US7177875B2 (en) * | 2003-11-10 | 2007-02-13 | Howard Robert S | System and method for creating and using computer databases having schema integrated into data structure |
US7440956B2 (en) * | 2005-11-10 | 2008-10-21 | International Business Machines Corporation | Enforcing constraints from a parent table to a child table |
US8103695B2 (en) * | 2008-05-16 | 2012-01-24 | Oracle International Corporation | Creating storage for XML schemas with limited numbers of columns per table |
US8688622B2 (en) * | 2008-06-02 | 2014-04-01 | The Boeing Company | Methods and systems for loading data into a temporal data warehouse |
US8214408B2 (en) * | 2008-09-29 | 2012-07-03 | Teradata Us, Inc. | Method, database system and computer program for joining temporal database tables |
JP4939568B2 (ja) * | 2009-04-28 | 2012-05-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム |
JP5355227B2 (ja) * | 2009-05-29 | 2013-11-27 | 株式会社東芝 | 文書管理支援システム、情報管理サーバ装置及び情報媒体制御装置 |
WO2011121905A1 (ja) * | 2010-03-29 | 2011-10-06 | 日本電気株式会社 | ファイルストレージ装置、データ格納方法およびデータ格納プログラム |
JP2012003572A (ja) | 2010-06-18 | 2012-01-05 | Nomura Research Institute Ltd | 感性分析システム及びプログラム |
JP2013242781A (ja) | 2012-05-22 | 2013-12-05 | Nippon Telegr & Teleph Corp <Ntt> | 要望文抽出装置、方法、及びプログラム |
WO2015133271A1 (ja) * | 2014-03-03 | 2015-09-11 | 株式会社野村総合研究所 | データ管理システム、サービス提供システム及びその機能拡張方法 |
US10146813B2 (en) * | 2014-07-03 | 2018-12-04 | DocConnects, LLC | Single table index relational database |
JP2016035688A (ja) | 2014-08-04 | 2016-03-17 | 日本電気株式会社 | テキスト分析装置、テキスト分析方法、テキスト分析プログラムおよび記録媒体 |
-
2016
- 2016-11-04 JP JP2017549135A patent/JP6549245B2/ja active Active
- 2016-11-04 WO PCT/JP2016/082855 patent/WO2017078158A1/ja active Application Filing
- 2016-11-04 EP EP16862217.3A patent/EP3373149A4/en not_active Ceased
-
2018
- 2018-04-27 US US15/965,232 patent/US11169984B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003208346A (ja) * | 2002-01-16 | 2003-07-25 | Fujitsu Ltd | データベース更新情報の反映システムおよびそのためのプログラム |
JP2013131011A (ja) * | 2011-12-21 | 2013-07-04 | Nomura Research Institute Ltd | データ利用システム |
JP2013164647A (ja) * | 2012-02-09 | 2013-08-22 | Nomura Research Institute Ltd | 時限データの履歴管理システム |
JP2014041501A (ja) * | 2012-08-23 | 2014-03-06 | Hitachi Solutions Ltd | バッチ処理対象データの高速読込み方法及びバッチ管理システム |
JP2015165357A (ja) * | 2014-03-03 | 2015-09-17 | 株式会社野村総合研究所 | データ管理システム |
Non-Patent Citations (1)
Title |
---|
See also references of EP3373149A4 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7322533B2 (ja) | 2019-06-13 | 2023-08-08 | カシオ計算機株式会社 | 情報処理装置、情報処理方法、情報処理システム及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
EP3373149A4 (en) | 2019-04-03 |
JP6549245B2 (ja) | 2019-07-24 |
JPWO2017078158A1 (ja) | 2018-08-09 |
US11169984B2 (en) | 2021-11-09 |
US20180300688A1 (en) | 2018-10-18 |
EP3373149A1 (en) | 2018-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462594B (zh) | 一种大规模并行处理数据库的系统和方法 | |
US10942823B2 (en) | Transaction processing system, recovery subsystem and method for operating a recovery subsystem | |
US11429675B2 (en) | Systems and methods for managing transactional operation | |
US7103586B2 (en) | Collision avoidance in database replication systems | |
US9965364B2 (en) | Fault tolerant listener registration in the presence of node crashes in a data grid | |
US7603354B2 (en) | Method for enhancing the operation of a database | |
JP6898548B2 (ja) | 承認システム、承認方法および承認プログラム | |
US11010267B2 (en) | Method and system for automatic maintenance of standby databases for non-logged workloads | |
US11880356B1 (en) | Multi-processor transaction-based validation architecture that compares indicia associated with matching transaction tags | |
US11086902B2 (en) | Method and system for implementing a redo repeater | |
WO2017078158A1 (ja) | データ管理システム | |
JP6055050B1 (ja) | 銀行システム、銀行システムによって実行される方法およびプログラム | |
JP6676352B2 (ja) | データ処理装置 | |
WO2017077643A1 (ja) | データ管理システム | |
JP2005284781A (ja) | Mqデータ同期システム及びmqデータ同期プログラム | |
JP2015165357A (ja) | データ管理システム | |
JP6475820B2 (ja) | データ処理システム | |
CN109976944B (zh) | 数据处理方法和系统,存储介质和电子设备 | |
Padhye | Transaction and data consistency models for cloud applications | |
JP6359762B2 (ja) | 口座データ管理システム | |
WO2017081737A1 (ja) | データ管理システム | |
WO2015133271A1 (ja) | データ管理システム、サービス提供システム及びその機能拡張方法 | |
US20130282667A1 (en) | Method and system for implementing a conditional redo repeater | |
JPWO2016157359A6 (ja) | 口座データ管理システム | |
CN116775228A (zh) | 数据处理方法及装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16862217 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2017549135 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2016862217 Country of ref document: EP |