[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

US8356010B2 - Online data migration - Google Patents

Online data migration Download PDF

Info

Publication number
US8356010B2
US8356010B2 US12/854,789 US85478910A US8356010B2 US 8356010 B2 US8356010 B2 US 8356010B2 US 85478910 A US85478910 A US 85478910A US 8356010 B2 US8356010 B2 US 8356010B2
Authority
US
United States
Prior art keywords
change
alias
schema
entries
application server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US12/854,789
Other versions
US20120041933A1 (en
Inventor
Volker Driesen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SAP SE filed Critical SAP SE
Priority to US12/854,789 priority Critical patent/US8356010B2/en
Assigned to SAP AG reassignment SAP AG ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DRIESEN, VOLKER
Priority to EP11006238.7A priority patent/EP2418591B1/en
Publication of US20120041933A1 publication Critical patent/US20120041933A1/en
Application granted granted Critical
Publication of US8356010B2 publication Critical patent/US8356010B2/en
Assigned to SAP SE reassignment SAP SE CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SAP AG
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support

Definitions

  • the subject matter described herein relates to incremental online data migration, and more specifically, data migration in the context of an upgrade during production time as opposed to downtime.
  • Downtime can occur during the upgrade of a software platform. Such downtime can be due to data migration issues. For example, in some systems, an application specific program is executed to convert the data structure and semantics from a version written by an old software version to the version required by a new software version. With conventional arrangements, such application specific programs are executed during downtime and require several hours for complicated or large platforms.
  • data is migrated during uptime from a first table to a second table in a first schema in a database.
  • a first application server connects to the database using the first schema.
  • a second application server connects to the database using a second schema.
  • the first application server runs a first version of a software program while the second application server runs a second version of the software program.
  • the second schema has a first alias pointing to the first table and a second alias pointing to the second table.
  • Entries are added during uptime to a change table in the first schema characterizing changes to the first table during the data migration.
  • the second schema includes a change alias pointing to the change table.
  • the second table is recursively updated to include the entries referred to in the change table using the second application server, data is read from the first alias corresponding to the entries referred to in the change table, and the data from the first alias is written to the second alias until a remaining number of the entries is below a pre-defined threshold.
  • downtime can be initiated to migrate the remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
  • the first alias, second alias, and change alias can be deleted (e.g., deleted during downtime).
  • the first alias, the second alias, and/or the change alias can comprise a database view, a database alias, or a database synonym.
  • the second table can have at least one additional field as compared to the first table.
  • the changes to the first table can comprise one or more of: an update, and insert, or a delete.
  • a database trigger can monitor changes to the first table and generate entries in the change table characterizing the monitored changes.
  • the database trigger can be a stored procedure.
  • the entries in the change table can be generated by the database trigger as part of a single transaction along with a corresponding change to the first table.
  • the aliases can allow for reading, updating, deleting, and inserting of entries in the corresponding table.
  • the migration of data can be initiated by a migration program forming part of application software being executed on the second application server.
  • the migration program can determine whether entries in the change table require migration or have already been migrated.
  • the entries in the change table can include first and second fields with the first field including either a first designation indicating that a database trigger updated the entry in the change table or a second designation indicating that the migration program updated the entry in the change table and the second field comprising a sequence number. If there is only a single entry with the first designation, the entry can be considered to be new and it is migrated to the second table. If there is only a single entry with the second designation, the entry can be considered to have already been migrated.
  • the entry can be migrated to the second table if the sequence number for the entry with the first designation is higher than the sequence number for the entry with the second designation, or the entry can be skipped if the sequence number for the entry with the second designation is higher than the sequence number for the entry with the first designation.
  • Each of the at least two instances can add entries during uptime to the change table in the first schema are executed using separate servers.
  • the database trigger can be removed once the data has been completely migrated.
  • the first application server can be different from the second application server or it can be the same.
  • data is migrated during uptime using a migration program from a first table to a second table in a first schema in a database.
  • a first application server connects to the database using the first schema and a second application server connects to the database using a second schema.
  • the first application server runs a first version of a software program and the second application server runs a second version of the software program.
  • the second schema has a first alias pointing to the first table and a second alias pointing to the second table.
  • Entries are added during uptime using a database trigger to a change table in the first schema characterizing changes to the first table during the data migration.
  • the second schema further includes a change alias pointing to the change table.
  • the second table is recursively updated by the migration program to include the entries added to the change table until a remaining number of the entries is below a pre-defined threshold.
  • Downtime is later initiated to migrate remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
  • data is migrated during uptime using a migration program from a first table to a second table in a first schema in a database.
  • the database includes a second schema having a first alias pointing to the first table and a second alias pointing to the second table.
  • entries are added during uptime using a database trigger to a change table in the first schema characterizing changes to the first table during the data migration.
  • the second table is recursively updated by the migration program to include the entries added to the change table until a remaining number of the entries is below a pre-defined threshold. Downtime can then be initiated to migrate the remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion.
  • the first schema can be accessible by a first application server and the second schema can be accessible by a second application server.
  • the first table can be deleted and the second table can be renamed as the first table so that it is accessible by the second application server using the second alias.
  • the second alias can have a name identical to the first table in the first schema and the first alias can have a name different from the first table in the first schema.
  • Articles of manufacture are also described that comprise computer executable instructions permanently stored (e.g., non-transitorily stored, etc.) on computer readable media, which, when executed by a computer, causes the computer to perform operations herein.
  • computer systems are also described that may include a processor and a memory coupled to the processor. The memory may temporarily or permanently store one or more programs that cause the processor to perform one or more of the operations described herein.
  • the current subject matter enables application specific data migration with an application specific program in the context of an upgrade before downtime begins. During downtime, only a small remaining fraction of the data needs to be converted, which can in turn reduce the length of downtime.
  • a shadow system a second schema and aliases, software for a new release can be used to perform the migration which obviates the need for a migration program to be deployed with the old release.
  • FIG. 1 is a process flow diagram illustrating a process flow diagram for migrating data
  • FIG. 2 is a diagram illustrating migration of data in a database.
  • FIG. 1 is a processing flow diagram illustrating a method 100 in which, at 110 , data is migrated during uptime from a first table to a second table in a first schema in a database.
  • a first application server connects to the database using the first schema.
  • a second application server connects to the database using a second schema.
  • the first application server runs a first version of a software program while the second application server runs a second version of the software program.
  • the second schema has a first alias pointing to the first table and a second alias pointing to the second table.
  • Entries, at 120 are added during uptime to a change table in the first schema characterizing changes to the first table during the data migration.
  • the second schema includes a change alias pointing to the change table.
  • the second table is recursively updated to include the entries referred to in the change table using the second application server, data is read from the first alias corresponding to the entries referred to in the change table, and the data from the first alias is written to the second alias until a remaining number of the entries is below a pre-defined threshold.
  • downtime can, at 140 , be initiated to migrate the remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
  • data migration is performed before downtime associated with an upgrade (referred to also as upgrade downtime or just downtime).
  • upgrade downtime only a small fraction of the data to be migrated is converted according to the new release.
  • data migration can be achieved by (i) creating a shadow table, having the target structure of the table; (ii) providing a trigger mechanism that identifies each content change to the original table; and (iii) providing a migration program that performs the data migration and reacts to the changes identified by the trigger mechanism.
  • the original table is dropped and the shadow table is renamed to the original name. The trigger mechanism is then removed.
  • Such an arrangement moves the tasks of reading through a large DB table, performing application logic, and inserting the data to the new table from downtime to uptime.
  • the only tasks that then need to occur during downtime are “drop+rename” (i.e., dropping the original table and renaming the new table).
  • shadow system a second system
  • This shadow system is running the target version of the software.
  • a customer uses version 1 and wants to upgrade to version 2 .
  • the original system (or start release system) is on version 1 .
  • the shadow system and the target release system are on version 2 .
  • FIG. 2 is a diagram 200 of a database 205 in which a first application server 210 accesses the database 205 according to a first schema 220 (schema SAPDB) via a first database interface 215 .
  • the first schema 220 can include a first table 235 (table T), a second table 240 (table T ⁇ ), a change table 230 (table CHANGE_T), and it can execute a database (DB) trigger 225 (TRIG_T).
  • a second application server 265 having a second database interface 270 can connect to the database 205 according to a second schema (schema SAPDB_SHD).
  • the second application server 265 can include a migration program 275 as will be described in further detail below.
  • the second schema 245 can include a first alias 255 (alias T_old), a second alias 250 (alias T), and a change alias 260 (alias CHANGE_T).
  • alias refers to a database view, alias, or synonym which points to a table (unless otherwise explicitly stated).
  • references to tables and alias are singular for illustration purposes and that a plurality of tables and/or references may be utilized depending on the desired implementation.
  • the database can be any of a variety of database types including an insert-only database.
  • a second table 240 (table T ⁇ ) is created.
  • the second table 240 (table T ⁇ ) can be referred to as a “shadow table”.
  • the second table 240 (table T ⁇ ) is created in a namespace which is not visible to the first application server 210 (which is the productive system using the first schema 220 (schema SAPDB))—and which is different than a namespace of the first table 235 (table T).
  • the first table 235 (table T) can have fields A, B, C and the second table 240 (table T ⁇ ) can be created to have a new structure, for example, fields A, B, C, D.
  • the second schema 245 (schema SAPDB_SHD) can then be created with the second alias 250 (alias T) pointing to the second table 240 (table T ⁇ ) (e.g., SAPDB_SHD.T as an alias for table SAPDB.T ⁇ ).
  • the entries in the second table (table T ⁇ ) can be read, updated, deleted and inserted.
  • the second application server 265 (which can be characterized as a shadow application server) can be started with a configuration to connect to the database 205 using the second schema 245 (schema SAPDB_SHD).
  • the second application server 265 thus sees only the second alias 250 which has the name (i.e., namespace) of the first table T ( 235 ) as expected by the second application server 265 but the content of the second table 240 (table T ⁇ ).
  • the second schema 245 can be used, to create another alias, namely the first alias 255 (alias T_old) (e.g., alias SAPDB_SHD.T_old as an alias for table SAPDB.T) which points to the first table 235 (table T).
  • the entries in the first table 235 (table T) can be read, updated, deleted and inserted.
  • This arrangement enables an application program running on the second application server 265 and connected to the database 205 via the second schema 245 (schema SAPDB_SHD) to read data from the first alias 255 (alias T_old) and update the first table 235 (table T).
  • Migration of data from the old structure (i.e., the first table 235 (table T) with fields A, B, C) to the new structure (i.e., the second table 240 (table T ⁇ ) with fields A, B, C, D) can be enabled while the second application server 265 runs a target version of the software (i.e., version 2 which utilizes the additional field D).
  • the migration program 275 can provide code which is not contained in the second application server 265 (it will be appreciated that in some implementations that migration program can be contained in the second application server 265 ). With this arrangement, less code of an application server needs to be adjusted for a migration scenario.
  • the table being migrated i.e., the first table 235 (table T)
  • the table being migrated is still in use and gets updates, inserts, deletes. These changes can be reflected in the migration process to ensure that data inserted in the original system (i.e., the first table 235 (table T) after start of the migration program/process is also migrated.
  • a change table 230 can be created in the first schema 220 (schema SAPDB) that has the same key fields as the first table 235 (table T) and at least one additional field, e.g. CHANGE.
  • a DB trigger 225 or DB stored procedure (collectively referred to herein as a DB trigger unless otherwise specified) on an application specific code is created for the first table 235 (table T).
  • the DB trigger 225 can (i) upon each insert, write an entry with the updated key to the change table 230 (table CHANGE_T), and a flag (e.g.
  • a “commit” will thus write the original change and a recording to both the first table 235 (table T) and the change table 230 (table CHANGE_T).
  • a “rollback” will thus rollback both of the first table 235 (table T) and the change table 230 (table CHANGE_T).
  • the second schema 245 (schema SAPDB_SHD) can be used, to create the change alias 250 (alias CHANGE_T) (e.g., alias SAPDB_SHD.CHANGE_T as an alias for table SAPDB.CHANGE_t, etc.).
  • the change alias 260 (alias CHANGE_T)
  • the entries in the change table 230 (table CHANGE_T) can be read, updated, deleted and inserted.
  • the migration process can now update fields in the change table 230 (table CHANGE_T) for each key being migrated.
  • the key from the first table 235 (table T) can be inserted into the change table 230 (table CHANGE_T) (if not yet contained) and field CHANGE can be set to a flag (e.g. “M”).
  • the migration process can start to process all entries currently in the first table 235 (table T) except for entries from the first table 235 (table T), where the keys are either not in the change table 230 (table CHANGE_T), or the field “CHANGE” of change table 230 (table CHANGE_T) has values “I” “U” “D”.
  • the migration program 275 processes all entries it is finished. It can then be started again to process newly updated entries (those entries, which had been changed in the database 205 by the used application during the time the previous pass of the migration process). This recursive process can be repeated until the volume of data is below a pre-defined threshold. For example, for an initial migration, 1,000,000 entries need to be converted and such conversion requires one hour of time for processing. During this initial migration, 1,000 entries are changed in the first table 235 (table T). The second pass of the migration process now only needs to migrated 1,000 entries which are reflected in the change table 230 (table CHANGE_T) which requires a considerably shorter period of time (e.g. below a minute). As the second pass is considerably quicker, further iterations of the migration process are not required.
  • the system can go to downtime.
  • the migration program 275 can be started again to migrate the remaining data (which will run fast because only data entries that had been changed during the second pass need to be converted).
  • the aliases 250 , 255 , 260 in the second schema 245 can be deleted.
  • the first table 235 (table T) can be deleted and the second table 240 (table T ⁇ ) can be renamed to have the same name as the previous first table 235 (table T) (i.e., table T ⁇ is renamed to table T).
  • Downtime can then end.
  • an equivalent of the second table 240 (table T ⁇ ) can be created directly in the second schema 245 (schema SAPDB_SHD) such that the second application server 265 can access such table directly (as opposed to the first alias 250 ).
  • the first alias 255 (alias T_old) can still be used to point to the first table 235 (table T).
  • the switch after data migration can be include dropping the first table 235 (table T) in the first schema 220 (schema SAPDB) and renaming of the schema of the equivalent to the second table 240 (table T ⁇ ) from the second schema 245 (schema SAPDB_SHD) to the first schema 220 (schema SAPDB) (provided that the database allows for such schema renaming).
  • the change table 230 (table CHANGE_T) can be in the second schema 245 (schema SAPDB_SHD) as opposed to the first schema 220 (schema SAPDB) (or alternatively both schemas can include a change table).
  • the DB trigger 225 then needs to update the change table 230 (table CHANGE_T) in the second schema 220 (schema SAPDB_SHD) (provided that the database enables such an arrangement). No alias is needed for the change table 230 (table CHANGE_T).
  • permissions need to be granted such that the second schema 245 (schema SAPDB_SHD) can access and change data in the second table 240 (table T ⁇ ) and/or the change table 230 (table CHANGE_T).
  • Deadlocks can sometimes present problems. For example, there can be situations in which two instances are updating a single table (e.g., change table 230 (table CHANGE_T)) which are not using one enqueue application server but separate application servers (and for one system, the table is updated using a native DB trigger/stored procedure).
  • One approach for handling such deadlock situations can be to generate the change table 230 (table CHANGE_T) such that the key fields are as in the first table 235 (table T) as opposed to the second table 240 (table T ⁇ ).
  • An additional field can be used “C-OR-M” which is set to C—if the trigger updated the table and M—if the migration program updated the table.
  • Non-key fields can have a sequence with increasing numbers. Such sequence can be produced by a DB object (e.g. sequence) or a timestamp. The non-key fields can also specify the action performed (create, update, delete).
  • the DB Trigger 255 can create inserts or updates in the change table 230 (table CHANGE_T) as follows. If an entry is already present, the entry is updated such that a new sequence number is written and the action is updated. If the entry is new, it is inserted with a new sequence number and the corresponding action.
  • the migration program 275 can operate such that during a first pass, all entries in the first table 235 (table T) are read and migrated and inserted into the second table 240 (table T ⁇ ). From the view of the program it is “read first table 235 , update second table 240 ” because it is running in the shadow system. Also during the first pass, the change table 230 (table CHANGE_T) can be updated with a key is inserted with “C-OR-M” set to M and the corresponding action (which is almost always “insert”—however there may a potential for some updates).
  • both potential entries of the change table 230 can be read: the C and the M entry If there is only a C, this entry is new and needs to be migrated. If there is only an M entry, the entry has already been migrated and can be skipped. If there is a C and an M entry, the entry needs to be converted if the sequence number of C is higher than that of M. If the sequence number of C is lower than that of M, the entry already had been converted. Together with the update of the second table 240 (table T ⁇ ), the migration program 275 can also updates change table 230 (table CHANGE_T).
  • table CHANGE_T two change tables 230 (table CHANGE_T) can be used.
  • implementations of the subject matter described herein may be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof.
  • ASICs application specific integrated circuits
  • These various implementations may include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • the subject matter described herein may be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user may provide input to the computer.
  • a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
  • a keyboard and a pointing device e.g., a mouse or a trackball
  • Other kinds of devices may be used to provide for interaction with a user as well; for example, feedback provided to the user may be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user may be received in any form, including acoustic, speech, or tactile input.
  • the subject matter described herein may be implemented in a computing system that includes a back-end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front-end component (e.g., a client computer having a graphical user interface or a Web browser through which a user may interact with an implementation of the subject matter described herein), or any combination of such back-end, middleware, or front-end components.
  • the components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
  • LAN local area network
  • WAN wide area network
  • the Internet the global information network
  • the computing system may include clients and servers.
  • a client and server are generally remote from each other and typically interact through a communication network.
  • the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

Landscapes

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

Abstract

Data is recursively migrated during uptime from a first table to a second table in a first schema in a database while taking into account changes to the first table in a change table. The database has first and second application servers respectively connecting to the database using first and second schemas and running first and second versions of a software program. Downtime can be initiated to migrate the remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program. Related apparatus, systems, techniques and articles are also described.

Description

TECHNICAL FIELD
The subject matter described herein relates to incremental online data migration, and more specifically, data migration in the context of an upgrade during production time as opposed to downtime.
BACKGROUND
Downtime can occur during the upgrade of a software platform. Such downtime can be due to data migration issues. For example, in some systems, an application specific program is executed to convert the data structure and semantics from a version written by an old software version to the version required by a new software version. With conventional arrangements, such application specific programs are executed during downtime and require several hours for complicated or large platforms.
SUMMARY
In one aspect, data is migrated during uptime from a first table to a second table in a first schema in a database. A first application server connects to the database using the first schema. A second application server connects to the database using a second schema. The first application server runs a first version of a software program while the second application server runs a second version of the software program. The second schema has a first alias pointing to the first table and a second alias pointing to the second table. Entries are added during uptime to a change table in the first schema characterizing changes to the first table during the data migration. The second schema includes a change alias pointing to the change table. Subsequently, the second table is recursively updated to include the entries referred to in the change table using the second application server, data is read from the first alias corresponding to the entries referred to in the change table, and the data from the first alias is written to the second alias until a remaining number of the entries is below a pre-defined threshold. Later, downtime can be initiated to migrate the remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
The following describes different variations that can be implemented singly or in combination depending on the desired configuration. The first alias, second alias, and change alias can be deleted (e.g., deleted during downtime). The first alias, the second alias, and/or the change alias can comprise a database view, a database alias, or a database synonym. The second table can have at least one additional field as compared to the first table. The changes to the first table can comprise one or more of: an update, and insert, or a delete. A database trigger can monitor changes to the first table and generate entries in the change table characterizing the monitored changes. The database trigger can be a stored procedure. The entries in the change table can be generated by the database trigger as part of a single transaction along with a corresponding change to the first table. The aliases can allow for reading, updating, deleting, and inserting of entries in the corresponding table.
The migration of data can be initiated by a migration program forming part of application software being executed on the second application server. The migration program can determine whether entries in the change table require migration or have already been migrated.
The entries in the change table can include first and second fields with the first field including either a first designation indicating that a database trigger updated the entry in the change table or a second designation indicating that the migration program updated the entry in the change table and the second field comprising a sequence number. If there is only a single entry with the first designation, the entry can be considered to be new and it is migrated to the second table. If there is only a single entry with the second designation, the entry can be considered to have already been migrated. If there are entries with both the first designation and the second designation, the entry can be migrated to the second table if the sequence number for the entry with the first designation is higher than the sequence number for the entry with the second designation, or the entry can be skipped if the sequence number for the entry with the second designation is higher than the sequence number for the entry with the first designation.
There can be at least two instances adding entries during uptime to the change table in the first schema. Each of the at least two instances can add entries during uptime to the change table in the first schema are executed using separate servers.
The database trigger can be removed once the data has been completely migrated. The first application server can be different from the second application server or it can be the same.
In a further aspect, data is migrated during uptime using a migration program from a first table to a second table in a first schema in a database. A first application server connects to the database using the first schema and a second application server connects to the database using a second schema. The first application server runs a first version of a software program and the second application server runs a second version of the software program. The second schema has a first alias pointing to the first table and a second alias pointing to the second table. Entries are added during uptime using a database trigger to a change table in the first schema characterizing changes to the first table during the data migration. The second schema further includes a change alias pointing to the change table. Thereafter, the second table is recursively updated by the migration program to include the entries added to the change table until a remaining number of the entries is below a pre-defined threshold. Downtime is later initiated to migrate remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
In still a further aspect, data is migrated during uptime using a migration program from a first table to a second table in a first schema in a database. The database includes a second schema having a first alias pointing to the first table and a second alias pointing to the second table. Subsequently, entries are added during uptime using a database trigger to a change table in the first schema characterizing changes to the first table during the data migration. The second table is recursively updated by the migration program to include the entries added to the change table until a remaining number of the entries is below a pre-defined threshold. Downtime can then be initiated to migrate the remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion.
The first schema can be accessible by a first application server and the second schema can be accessible by a second application server. During downtime, the first table can be deleted and the second table can be renamed as the first table so that it is accessible by the second application server using the second alias. In addition, the second alias can have a name identical to the first table in the first schema and the first alias can have a name different from the first table in the first schema.
Articles of manufacture are also described that comprise computer executable instructions permanently stored (e.g., non-transitorily stored, etc.) on computer readable media, which, when executed by a computer, causes the computer to perform operations herein. Similarly, computer systems are also described that may include a processor and a memory coupled to the processor. The memory may temporarily or permanently store one or more programs that cause the processor to perform one or more of the operations described herein.
The subject matter described herein provides many advantages. For example, the current subject matter enables application specific data migration with an application specific program in the context of an upgrade before downtime begins. During downtime, only a small remaining fraction of the data needs to be converted, which can in turn reduce the length of downtime. In addition, by using a shadow system, a second schema and aliases, software for a new release can be used to perform the migration which obviates the need for a migration program to be deployed with the old release.
The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims.
DESCRIPTION OF DRAWINGS
FIG. 1 is a process flow diagram illustrating a process flow diagram for migrating data; and
FIG. 2 is a diagram illustrating migration of data in a database.
DETAILED DESCRIPTION
FIG. 1 is a processing flow diagram illustrating a method 100 in which, at 110, data is migrated during uptime from a first table to a second table in a first schema in a database. A first application server connects to the database using the first schema. A second application server connects to the database using a second schema. The first application server runs a first version of a software program while the second application server runs a second version of the software program. The second schema has a first alias pointing to the first table and a second alias pointing to the second table. Entries, at 120, are added during uptime to a change table in the first schema characterizing changes to the first table during the data migration. The second schema includes a change alias pointing to the change table. Subsequently, the second table, at 130, is recursively updated to include the entries referred to in the change table using the second application server, data is read from the first alias corresponding to the entries referred to in the change table, and the data from the first alias is written to the second alias until a remaining number of the entries is below a pre-defined threshold. Later, downtime can, at 140, be initiated to migrate the remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
According to the current techniques, data migration is performed before downtime associated with an upgrade (referred to also as upgrade downtime or just downtime). During downtime, only a small fraction of the data to be migrated is converted according to the new release. As will be described in further detail below, data migration can be achieved by (i) creating a shadow table, having the target structure of the table; (ii) providing a trigger mechanism that identifies each content change to the original table; and (iii) providing a migration program that performs the data migration and reacts to the changes identified by the trigger mechanism. During downtime, the original table is dropped and the shadow table is renamed to the original name. The trigger mechanism is then removed.
Such an arrangement moves the tasks of reading through a large DB table, performing application logic, and inserting the data to the new table from downtime to uptime. The only tasks that then need to occur during downtime are “drop+rename” (i.e., dropping the original table and renaming the new table).
The basic idea is, to use a second system (called shadow system) during the preparation phase of the upgrade to execute upgrade tasks running within the application server. This shadow system is running the target version of the software. For example, a customer uses version 1 and wants to upgrade to version 2. The original system (or start release system) is on version 1. The shadow system and the target release system are on version 2.
FIG. 2 is a diagram 200 of a database 205 in which a first application server 210 accesses the database 205 according to a first schema 220 (schema SAPDB) via a first database interface 215. The first schema 220 can include a first table 235 (table T), a second table 240 (table T˜), a change table 230 (table CHANGE_T), and it can execute a database (DB) trigger 225 (TRIG_T). A second application server 265 having a second database interface 270 can connect to the database 205 according to a second schema (schema SAPDB_SHD). The second application server 265 can include a migration program 275 as will be described in further detail below. The second schema 245 (schema SAPDB_SHD) can include a first alias 255 (alias T_old), a second alias 250 (alias T), and a change alias 260 (alias CHANGE_T). As used herein, the term alias refers to a database view, alias, or synonym which points to a table (unless otherwise explicitly stated). In addition, it will be appreciated that references to tables and alias are singular for illustration purposes and that a plurality of tables and/or references may be utilized depending on the desired implementation. The database can be any of a variety of database types including an insert-only database.
In the first schema 220 (schema SAPDB), for the first table 235 (table T), which needs to be converted, a second table 240 (table T˜) is created. The second table 240 (table T˜) can be referred to as a “shadow table”. The second table 240 (table T˜) is created in a namespace which is not visible to the first application server 210 (which is the productive system using the first schema 220 (schema SAPDB))—and which is different than a namespace of the first table 235 (table T). The first table 235 (table T) can have fields A, B, C and the second table 240 (table T˜) can be created to have a new structure, for example, fields A, B, C, D. The second schema 245 (schema SAPDB_SHD) can then be created with the second alias 250 (alias T) pointing to the second table 240 (table T˜) (e.g., SAPDB_SHD.T as an alias for table SAPDB.T˜). Using the second alias 250 (alias T), the entries in the second table (table T˜) can be read, updated, deleted and inserted.
The second application server 265 (which can be characterized as a shadow application server) can be started with a configuration to connect to the database 205 using the second schema 245 (schema SAPDB_SHD). The second application server 265 thus sees only the second alias 250 which has the name (i.e., namespace) of the first table T (235) as expected by the second application server 265 but the content of the second table 240 (table T˜).
The second schema 245 (schema SAPDB_SHD) can be used, to create another alias, namely the first alias 255 (alias T_old) (e.g., alias SAPDB_SHD.T_old as an alias for table SAPDB.T) which points to the first table 235 (table T). Using the first alias 255 (alias T_old), the entries in the first table 235 (table T) can be read, updated, deleted and inserted. This arrangement enables an application program running on the second application server 265 and connected to the database 205 via the second schema 245 (schema SAPDB_SHD) to read data from the first alias 255 (alias T_old) and update the first table 235 (table T). Migration of data from the old structure (i.e., the first table 235 (table T) with fields A, B, C) to the new structure (i.e., the second table 240 (table T˜) with fields A, B, C, D) can be enabled while the second application server 265 runs a target version of the software (i.e., version 2 which utilizes the additional field D).
As the target version of the application software (i.e., version 2) can be used, all access classes to the first table 235 (table T) can be used for the “insert”. For the “read” from the first table 235 (table T), the migration program 275 can provide code which is not contained in the second application server 265 (it will be appreciated that in some implementations that migration program can be contained in the second application server 265). With this arrangement, less code of an application server needs to be adjusted for a migration scenario.
As during productive use, the table being migrated (i.e., the first table 235 (table T), is still in use and gets updates, inserts, deletes. These changes can be reflected in the migration process to ensure that data inserted in the original system (i.e., the first table 235 (table T) after start of the migration program/process is also migrated.
The incremental migration during productive use (“online”) can be achieved as follows. A change table 230 (CHANGE_T) can be created in the first schema 220 (schema SAPDB) that has the same key fields as the first table 235 (table T) and at least one additional field, e.g. CHANGE. A DB trigger 225 or DB stored procedure (collectively referred to herein as a DB trigger unless otherwise specified) on an application specific code is created for the first table 235 (table T). The DB trigger 225 can (i) upon each insert, write an entry with the updated key to the change table 230 (table CHANGE_T), and a flag (e.g. “I”) into the field CHANGE, or update the field CHANGE, if the key is already contained; (ii) upon each update, write an entry with the updated key to the change table 230 (table CHANGE_T), and a flag (e.g. “U”) into the field CHANGE, or update the field CHANGE, if the key is already contained; and/or (ii) upon each delete, write an entry with the updated key to the change table 230 (table CHANGE_T), and a flag (e.g. “D”) into the field CHANGE, or update the field CHANGE, if the key is already contained. The change of the DB trigger 225 can be within the same transaction as the original change to the first table 235 (table T). A “commit” will thus write the original change and a recording to both the first table 235 (table T) and the change table 230 (table CHANGE_T). Similarly, a “rollback” will thus rollback both of the first table 235 (table T) and the change table 230 (table CHANGE_T).
The second schema 245 (schema SAPDB_SHD) can be used, to create the change alias 250 (alias CHANGE_T) (e.g., alias SAPDB_SHD.CHANGE_T as an alias for table SAPDB.CHANGE_t, etc.). Using the change alias 260 (alias CHANGE_T), the entries in the change table 230 (table CHANGE_T) can be read, updated, deleted and inserted.
The migration process can now update fields in the change table 230 (table CHANGE_T) for each key being migrated. The key from the first table 235 (table T) can be inserted into the change table 230 (table CHANGE_T) (if not yet contained) and field CHANGE can be set to a flag (e.g. “M”). The migration process can start to process all entries currently in the first table 235 (table T) except for entries from the first table 235 (table T), where the keys are either not in the change table 230 (table CHANGE_T), or the field “CHANGE” of change table 230 (table CHANGE_T) has values “I” “U” “D”.
Once the migration program 275 processes all entries it is finished. It can then be started again to process newly updated entries (those entries, which had been changed in the database 205 by the used application during the time the previous pass of the migration process). This recursive process can be repeated until the volume of data is below a pre-defined threshold. For example, for an initial migration, 1,000,000 entries need to be converted and such conversion requires one hour of time for processing. During this initial migration, 1,000 entries are changed in the first table 235 (table T). The second pass of the migration process now only needs to migrated 1,000 entries which are reflected in the change table 230 (table CHANGE_T) which requires a considerably shorter period of time (e.g. below a minute). As the second pass is considerably quicker, further iterations of the migration process are not required.
If the change volume (i.e., number of entries in the change table 230 that require migration) is below the pre-defined threshold, the system can go to downtime. During downtime, the migration program 275 can be started again to migrate the remaining data (which will run fast because only data entries that had been changed during the second pass need to be converted). Thereafter, the aliases 250, 255, 260 in the second schema 245 (schema SAPDB_SHD) can be deleted. The first table 235 (table T) can be deleted and the second table 240 (table T˜) can be renamed to have the same name as the previous first table 235 (table T) (i.e., table T˜ is renamed to table T). Downtime can then end.
In one variation to having the second table 240 (table T˜) in the first schema 220 (schema SAPDB) along with a second alias 250 (alias T) in the second schema 245 (schema SAPDB_SHD), an equivalent of the second table 240 (table T˜) can be created directly in the second schema 245 (schema SAPDB_SHD) such that the second application server 265 can access such table directly (as opposed to the first alias 250). The first alias 255 (alias T_old) can still be used to point to the first table 235 (table T). The switch after data migration can be include dropping the first table 235 (table T) in the first schema 220 (schema SAPDB) and renaming of the schema of the equivalent to the second table 240 (table T˜) from the second schema 245 (schema SAPDB_SHD) to the first schema 220 (schema SAPDB) (provided that the database allows for such schema renaming).
In another variation, the change table 230 (table CHANGE_T) can be in the second schema 245 (schema SAPDB_SHD) as opposed to the first schema 220 (schema SAPDB) (or alternatively both schemas can include a change table). With this implementation, the DB trigger 225 then needs to update the change table 230 (table CHANGE_T) in the second schema 220 (schema SAPDB_SHD) (provided that the database enables such an arrangement). No alias is needed for the change table 230 (table CHANGE_T). To enable the shadow system upgrade, permissions need to be granted such that the second schema 245 (schema SAPDB_SHD) can access and change data in the second table 240 (table T˜) and/or the change table 230 (table CHANGE_T).
Deadlocks can sometimes present problems. For example, there can be situations in which two instances are updating a single table (e.g., change table 230 (table CHANGE_T)) which are not using one enqueue application server but separate application servers (and for one system, the table is updated using a native DB trigger/stored procedure). One approach for handling such deadlock situations can be to generate the change table 230 (table CHANGE_T) such that the key fields are as in the first table 235 (table T) as opposed to the second table 240 (table T˜). An additional field can be used “C-OR-M” which is set to C—if the trigger updated the table and M—if the migration program updated the table. Non-key fields can have a sequence with increasing numbers. Such sequence can be produced by a DB object (e.g. sequence) or a timestamp. The non-key fields can also specify the action performed (create, update, delete).
The DB Trigger 255 can create inserts or updates in the change table 230 (table CHANGE_T) as follows. If an entry is already present, the entry is updated such that a new sequence number is written and the action is updated. If the entry is new, it is inserted with a new sequence number and the corresponding action.
The migration program 275 can operate such that during a first pass, all entries in the first table 235 (table T) are read and migrated and inserted into the second table 240 (table T˜). From the view of the program it is “read first table 235, update second table 240” because it is running in the shadow system. Also during the first pass, the change table 230 (table CHANGE_T) can be updated with a key is inserted with “C-OR-M” set to M and the corresponding action (which is almost always “insert”—however there may a potential for some updates).
During the second pass of the migration program 275, both potential entries of the change table 230 (table CHANGE_T) can be read: the C and the M entry If there is only a C, this entry is new and needs to be migrated. If there is only an M entry, the entry has already been migrated and can be skipped. If there is a C and an M entry, the entry needs to be converted if the sequence number of C is higher than that of M. If the sequence number of C is lower than that of M, the entry already had been converted. Together with the update of the second table 240 (table T˜), the migration program 275 can also updates change table 230 (table CHANGE_T).
In addition, to avoid deadlocks, two change tables 230 (table CHANGE_T) can be used. For example, table CHANGE_R and table CHANGE_M, where table CHANGE_R takes the role of change table 230 (table CHANGE_T) with key field C_OR_M=“C” and CHANGE_M takes the role of change table 230 (table CHANGE_T) with key field C_OR_M=“M”.
Various implementations of the subject matter described herein may be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations may include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and may be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
To provide for interaction with a user, the subject matter described herein may be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user may provide input to the computer. Other kinds of devices may be used to provide for interaction with a user as well; for example, feedback provided to the user may be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user may be received in any form, including acoustic, speech, or tactile input.
The subject matter described herein may be implemented in a computing system that includes a back-end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front-end component (e.g., a client computer having a graphical user interface or a Web browser through which a user may interact with an implementation of the subject matter described herein), or any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
The computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Although a few variations have been described in detail above, other modifications are possible. For example, the logic flow depicted in the accompanying figures and described herein do not require the particular order shown, or sequential order, to achieve desirable results. Other embodiments may be within the scope of the following claims.

Claims (19)

1. A computer-implemented method comprising:
migrating data during uptime from a first table to a second table in a first schema in a database, a first application server connecting to the database using the first schema, a second application server connecting to the database using a second schema, the first application server running a first version of a software program, the second application server running a second version of the software program, the second schema having a first alias pointing to the first table and a second alias pointing to the second table;
adding entries during uptime to a change table in the first schema characterizing changes to the first table during the data migration, the second schema including a change alias pointing to the change table;
recursively updating the second table to include the entries referred to in the change table using the second application server, the recursively updating comprising: reading data from the first alias corresponding to the entries referred to in the change table, and writing the data from the first alias to the second alias until a remaining number of the entries is below a pre-defined threshold; and
initiating downtime to migrate remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
2. A method as in claim 1, further comprising deleting the first alias, the second alias, and the change alias.
3. A method as in claim 1, wherein the first alias, the second alias, and/or the change alias comprise: a database view, a database alias, or a database synonym.
4. A method as in claim 1, wherein the second table has at least one additional field as compared to the first table.
5. A method as in claim 1, wherein the changes to the first table comprise one or more of: an update, and insert, or a delete.
6. A method as in claim 1, wherein a database trigger monitors changes to the first table and generates entries in the change table characterizing the monitored changes.
7. A method as in claim 6, wherein the database trigger is a stored procedure.
8. A method as in claim 6, wherein the entries in the change table are generated by the database trigger as part of a single transaction along with a corresponding change to the first table.
9. A method as in claim 1, wherein the aliases allow for reading, updating, deleting, and inserting of entries in the corresponding table.
10. A method as in claim 1, wherein the migration of data is initiated by a migration program forming part of application software being executed on the second application server.
11. A method as in claim 10, wherein the migration program determines whether entries in the change table require migration or have already been migrated.
12. A method as in claim 11, wherein the entries in the change table include first and second fields, the first field including either a first designation indicating that a database trigger updated the entry in the change table or a second designation indicating that the migration program updated the entry in the change table, the second field comprising a sequence number characterizing when the entry was last updated;
wherein:
the entry is considered to be new and it is migrated to the second table when there is only a single entry with the first designation;
the entry is considered to have already been migrated if there is only a single entry with the second designation; and
the entry is migrated to the second table if the sequence number for the entry with the first designation is higher than the sequence number for the entry with the second designation, or the entry is skipped if the sequence number for the entry with the second designation is higher than the sequence number for the entry with the first designation when there are entries with both the first designation and the second designation.
13. A method as in claim 12, further comprising removing the database trigger once the data has been completely migrated.
14. A method as in claim 1, wherein the first application server is different from the second application server.
15. A method as in claim 1, wherein the first application server and the second application server are the same.
16. A method as in claim 1, wherein there are at least two instances adding entries during uptime to the change table in the first schema.
17. A method as in claim 16, wherein each of the at least two instances adding entries during uptime to the change table in the first schema are executed using separate servers.
18. A computer-implemented method comprising:
migrating data during uptime from a first table to a second table in a first schema in a database, a first application server connecting to the database using the first schema, a second application server connecting to the database using a second schema, the first application server running a first version of a software program, the second application server running a second version of the software program, the second schema having a first alias pointing to the first table and a second alias pointing to the second table;
adding entries during uptime to a change table in the first schema characterizing changes to the first table during the data migration, the second schema including a change alias pointing to the change table;
recursively updating the second table to include the entries referred to in the change table using the second application server, the recursively updating comprising: reading data from the first alias corresponding to the entries referred to in the change table, and writing the data from the first alias to the second alias until a remaining number of the entries is below a pre-defined threshold, each update comprising sequentially passing through entries in the change table; and
initiating downtime to migrate remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
19. A non-transitory computer program product storing instructions, which when executed by at least one data processor forming part of a least one computing system, result in operations comprising:
migrating data during uptime from a first table to a second table in a first schema in a database, a first application server connecting to the database using the first schema, a second application server connecting to the database using a second schema, the first application server running a first version of a software program, the second application server running a second version of the software program, the second schema having a first alias pointing to the first table and a second alias pointing to the second table;
adding entries during uptime to a change table in the first schema characterizing changes to the first table during the data migration, the second schema including a change alias pointing to the change table;
recursively updating the second table to include the entries referred to in the change table using the second application server, the recursively updating comprising: reading data from the first alias corresponding to the entries referred to in the change table, and writing the data from the first alias to the second alias until a remaining number of the entries is below a pre-defined threshold; and
initiating downtime to migrate remaining entries in the change table to the second table, delete the first table, and rename the second table to have a same name as the first table prior to deletion so that during uptime the second application server connects to the second table and runs the second version of the software program.
US12/854,789 2010-08-11 2010-08-11 Online data migration Active 2030-12-29 US8356010B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/854,789 US8356010B2 (en) 2010-08-11 2010-08-11 Online data migration
EP11006238.7A EP2418591B1 (en) 2010-08-11 2011-07-28 Online data migration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/854,789 US8356010B2 (en) 2010-08-11 2010-08-11 Online data migration

Publications (2)

Publication Number Publication Date
US20120041933A1 US20120041933A1 (en) 2012-02-16
US8356010B2 true US8356010B2 (en) 2013-01-15

Family

ID=44644866

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/854,789 Active 2030-12-29 US8356010B2 (en) 2010-08-11 2010-08-11 Online data migration

Country Status (2)

Country Link
US (1) US8356010B2 (en)
EP (1) EP2418591B1 (en)

Cited By (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069805B2 (en) 2012-11-16 2015-06-30 Sap Se Migration of business object data in parallel with productive business application usage
US9189226B2 (en) 2013-06-25 2015-11-17 Sap Se Software logistics protocols
CN105359147A (en) * 2013-07-09 2016-02-24 甲骨文国际公司 Online database migration
US20160170977A1 (en) * 2014-12-12 2016-06-16 Sap Se Systems and methods for in-place migration with downtime minimization
US9400720B2 (en) 2014-04-18 2016-07-26 Sybase, Inc. Flexible high availability disaster recovery with a set of database servers
US9436724B2 (en) 2013-10-21 2016-09-06 Sap Se Migrating data in tables in a database
US9460142B2 (en) 2013-10-29 2016-10-04 Sap Ag Detecting renaming operations
US9501516B2 (en) * 2014-12-19 2016-11-22 Sap Se Zero downtime upgrade of database applications using triggers and calculated fields
US9507810B2 (en) 2013-12-10 2016-11-29 Sap Se Updating database schemas in a zero-downtime environment
US9519663B2 (en) 2013-06-26 2016-12-13 Sap Se Upgrading and migrating a database by a migration tool
US9633094B2 (en) 2014-04-25 2017-04-25 Bank Of America Corporation Data load process
US9639448B2 (en) 2013-06-27 2017-05-02 Sap Se Multi-version systems for zero downtime upgrades
US9767424B2 (en) 2013-10-16 2017-09-19 Sap Se Zero downtime maintenance with maximum business functionality
US9898279B2 (en) 2016-03-31 2018-02-20 Sap Se Optimizing ABAP development as a service
US9898494B2 (en) 2015-02-23 2018-02-20 Sap Se Zero downtime upgrade for database applications using tables with sequences
US9922088B2 (en) 2013-12-31 2018-03-20 Sybase, Inc. Cardinality estimation using spanning trees
US10055215B2 (en) 2016-10-05 2018-08-21 Sap Se Enabling corrections during upgrade procedure
US10185552B2 (en) 2017-05-12 2019-01-22 Sap Se Enforcing content constraints on delivery and end user changes
US10230708B2 (en) 2016-05-20 2019-03-12 Sap Se Application managed service instances
US10248671B2 (en) 2013-07-09 2019-04-02 Oracle International Corporation Dynamic migration script management
US10268692B2 (en) 2017-02-15 2019-04-23 Sap Se Multi-procedure support in data migration
US10268472B2 (en) 2017-05-16 2019-04-23 Sap Se Upgrading systems with replicated data
US10298591B2 (en) 2017-04-28 2019-05-21 Sap Se Secure integration of independent cloud foundry applications in a fiori launchpad
US10303665B2 (en) 2014-09-24 2019-05-28 Sap Se Zero downtime maintenance for applications and databases
US10437795B2 (en) 2017-05-12 2019-10-08 Sap Se Upgrading systems with changing constraints
US10452646B2 (en) 2017-10-26 2019-10-22 Sap Se Deploying changes in a multi-tenancy database system
US10482080B2 (en) 2017-10-26 2019-11-19 Sap Se Exchanging shared containers and adapting tenants in multi-tenancy database systems
US10491700B2 (en) 2016-11-18 2019-11-26 Sap Se Application managed service instances
US10523662B2 (en) 2016-09-16 2019-12-31 Sap Se In-memory database advanced programming model
US10534585B1 (en) 2018-10-29 2020-01-14 Sap Se Integrated development environment with deep insights and recommendations
US10536461B2 (en) 2017-12-19 2020-01-14 Sap Se Service identity propagation between applications and reusable services
US10540335B2 (en) 2013-07-09 2020-01-21 Oracle International Corporation Solution to generate a scriptset for an automated database migration
US10621167B2 (en) 2017-10-26 2020-04-14 Sap Se Data separation and write redirection in multi-tenancy database systems
US10642609B1 (en) 2018-12-13 2020-05-05 Sap Se Integrating preview systems for early validation and maintenance in development-to-production landscapes provisioned by continuous delivery
US10657276B2 (en) 2017-10-26 2020-05-19 Sap Se System sharing types in multi-tenancy database systems
US10673962B2 (en) 2017-11-28 2020-06-02 Sap Se Service cross-consumption based on an open service broker application programming interface
US10686882B2 (en) 2018-05-18 2020-06-16 Sap Se Change management using a thing-model on an internet-of-things platform
US10684999B2 (en) 2016-10-05 2020-06-16 Sap Se Multi-procedure support in data migration
US10685007B2 (en) 2016-03-29 2020-06-16 Sap Se Table content transport and delivery
US10691654B2 (en) 2013-07-09 2020-06-23 Oracle International Corporation Automated database migration architecture
US10693989B2 (en) 2017-04-28 2020-06-23 Sap Se Brokering services from partner cloud platforms
US10700949B1 (en) 2018-12-13 2020-06-30 Sap Se Stacking of tentant-aware services
US10706170B2 (en) 2017-03-16 2020-07-07 Sap Se Tenant table sharing with content separation
US10715405B2 (en) 2018-01-30 2020-07-14 Sap Se Tenant isolated data in shared reusable services
US10713277B2 (en) 2017-10-26 2020-07-14 Sap Se Patching content across shared and tenant containers in multi-tenancy database systems
US10733168B2 (en) 2017-10-26 2020-08-04 Sap Se Deploying changes to key patterns in multi-tenancy database systems
US10740318B2 (en) 2017-10-26 2020-08-11 Sap Se Key pattern management in multi-tenancy database systems
US10740315B2 (en) 2017-10-26 2020-08-11 Sap Se Transitioning between system sharing types in multi-tenancy database systems
US10776244B2 (en) 2013-07-09 2020-09-15 Oracle International Corporation Consolidation planning services for systems migration
US10789220B2 (en) 2017-03-28 2020-09-29 Sap Se Management of database API schema
US10803030B2 (en) * 2014-11-14 2020-10-13 Sap Se Asynchronous SQL execution tool for zero downtime and migration to HANA
US10853693B2 (en) 2018-12-04 2020-12-01 Sap Se Software logistic for learning applications
US10871962B2 (en) 2016-05-27 2020-12-22 Sap Se Zero downtime maintenance in constrained systems
US10891217B2 (en) 2018-12-10 2021-01-12 Sap Se Optimizing test coverage based on actual use
US10915551B2 (en) 2018-06-04 2021-02-09 Sap Se Change management for shared objects in multi-tenancy systems
US10936624B2 (en) 2018-06-12 2021-03-02 Sap Se Development and productive use of system with parallel use of production data and zero downtime of software changes
US10942892B2 (en) 2018-05-18 2021-03-09 Sap Se Transport handling of foreign key checks
US10977212B2 (en) 2018-05-03 2021-04-13 Sap Se Data partitioning based on estimated growth
US10983762B2 (en) 2019-06-27 2021-04-20 Sap Se Application assessment system to achieve interface design consistency across micro services
US11030164B2 (en) 2018-01-18 2021-06-08 Sap Se Artifact deployment for application managed service instances
US11036696B2 (en) 2016-06-07 2021-06-15 Oracle International Corporation Resource allocation for database provisioning
US11121943B2 (en) 2018-12-13 2021-09-14 Sap Se Amplifying scaling elasticity of microservice meshes
US11157664B2 (en) 2013-07-09 2021-10-26 Oracle International Corporation Database modeling and analysis
US11232126B2 (en) 2018-11-21 2022-01-25 Sap Se Zero downtime upgrade of systems with database-side replication
US11249812B2 (en) 2019-07-25 2022-02-15 Sap Se Temporary compensation of outages
US11256671B2 (en) 2019-09-13 2022-02-22 Oracle International Corporation Integrated transition control center
US11269717B2 (en) 2019-09-24 2022-03-08 Sap Se Issue-resolution automation
US11314732B2 (en) * 2019-10-11 2022-04-26 International Business Machines Corporation Database migration technique
US11354302B2 (en) 2020-06-16 2022-06-07 Sap Se Automatic creation and synchronization of graph database objects
US11379211B2 (en) 2019-12-05 2022-07-05 Sap Se Fencing execution of external tools during software changes
US11436211B1 (en) 2020-09-29 2022-09-06 Amazon Technologies, Inc. Renaming a database table with minimized application downtime
US11551141B2 (en) 2019-10-14 2023-01-10 Sap Se Data access control and workload management framework for development of machine learning (ML) models
US11561836B2 (en) 2019-12-11 2023-01-24 Sap Se Optimizing distribution of heterogeneous software process workloads
US11693945B2 (en) 2016-11-18 2023-07-04 Sap Se Secure calls between applications
US11797879B2 (en) 2019-05-13 2023-10-24 Sap Se Machine learning on distributed customer data while protecting privacy

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582524B1 (en) * 2012-06-19 2017-02-28 Amazon Technologies, Inc. Transformative migration of static data
FI20126010A (en) 2012-09-28 2014-03-29 Tekla Corp Convert source targets to targets
US9280554B2 (en) * 2012-09-28 2016-03-08 Oracle International Corporation Using confidence values for synchronizing file systems
US9582510B2 (en) * 2013-05-30 2017-02-28 Dassault Systemes Americas Corp. Live Upgrade
US9674105B2 (en) * 2013-06-19 2017-06-06 International Business Machines Corporation Applying a platform code level update to an operational node
US9026502B2 (en) 2013-06-25 2015-05-05 Sap Se Feedback optimized checks for database migration
US9442983B2 (en) 2013-07-09 2016-09-13 Oracle International Corporation Method and system for reducing instability when upgrading software
US9762461B2 (en) 2013-07-09 2017-09-12 Oracle International Corporation Cloud services performance tuning and benchmarking
US9098364B2 (en) 2013-07-09 2015-08-04 Oracle International Corporation Migration services for systems
US9967154B2 (en) 2013-07-09 2018-05-08 Oracle International Corporation Advanced customer support services—advanced support cloud portal
US10311077B2 (en) * 2015-10-22 2019-06-04 Sap Se Database table conversion
US9805071B1 (en) * 2016-11-10 2017-10-31 Palantir Technologies Inc. System and methods for live data migration
US10534640B2 (en) 2017-03-24 2020-01-14 Oracle International Corporation System and method for providing a native job control language execution engine in a rehosting platform
CN110494849B (en) * 2017-03-31 2023-05-26 甲骨文国际公司 System and method for determining success of cross-platform application migration
CN108897773B (en) * 2018-05-31 2019-12-27 湖南格凡安信科技有限公司 Transparent online database anonymization data parallel migration method
US11474982B2 (en) * 2018-07-26 2022-10-18 Sap Se Zero downtime evolution of database schemas for cloud applications
CN109829144B (en) * 2018-12-28 2023-06-06 陈德芹 Method and device for cross-table referencing of online table
US11799839B2 (en) * 2021-03-29 2023-10-24 Oracle International Corporation Cross-regional replication of keys

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591272B1 (en) 1999-02-25 2003-07-08 Tricoron Networks, Inc. Method and apparatus to make and transmit objects from a database on a server computer to a client computer
US6711593B1 (en) 2000-06-26 2004-03-23 Camstar Systems, Inc. System and method for live update of a manufacturing system
US20060004851A1 (en) 2004-07-02 2006-01-05 Graphlogic Inc. Object process graph relational database interface
US20100138821A1 (en) * 2008-12-02 2010-06-03 Volker Driesen Adaptive Switch Installer

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591272B1 (en) 1999-02-25 2003-07-08 Tricoron Networks, Inc. Method and apparatus to make and transmit objects from a database on a server computer to a client computer
US6711593B1 (en) 2000-06-26 2004-03-23 Camstar Systems, Inc. System and method for live update of a manufacturing system
US20060004851A1 (en) 2004-07-02 2006-01-05 Graphlogic Inc. Object process graph relational database interface
US20100138821A1 (en) * 2008-12-02 2010-06-03 Volker Driesen Adaptive Switch Installer

Cited By (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069805B2 (en) 2012-11-16 2015-06-30 Sap Se Migration of business object data in parallel with productive business application usage
US9189226B2 (en) 2013-06-25 2015-11-17 Sap Se Software logistics protocols
US9519663B2 (en) 2013-06-26 2016-12-13 Sap Se Upgrading and migrating a database by a migration tool
US9639448B2 (en) 2013-06-27 2017-05-02 Sap Se Multi-version systems for zero downtime upgrades
US11157664B2 (en) 2013-07-09 2021-10-26 Oracle International Corporation Database modeling and analysis
US10691654B2 (en) 2013-07-09 2020-06-23 Oracle International Corporation Automated database migration architecture
US10776244B2 (en) 2013-07-09 2020-09-15 Oracle International Corporation Consolidation planning services for systems migration
US10248671B2 (en) 2013-07-09 2019-04-02 Oracle International Corporation Dynamic migration script management
CN105359147A (en) * 2013-07-09 2016-02-24 甲骨文国际公司 Online database migration
US10540335B2 (en) 2013-07-09 2020-01-21 Oracle International Corporation Solution to generate a scriptset for an automated database migration
US9767424B2 (en) 2013-10-16 2017-09-19 Sap Se Zero downtime maintenance with maximum business functionality
US9436724B2 (en) 2013-10-21 2016-09-06 Sap Se Migrating data in tables in a database
US9460142B2 (en) 2013-10-29 2016-10-04 Sap Ag Detecting renaming operations
US9471617B2 (en) 2013-10-29 2016-10-18 Sap Ag Schema evolution via transition information
US9507810B2 (en) 2013-12-10 2016-11-29 Sap Se Updating database schemas in a zero-downtime environment
US9922088B2 (en) 2013-12-31 2018-03-20 Sybase, Inc. Cardinality estimation using spanning trees
US9400720B2 (en) 2014-04-18 2016-07-26 Sybase, Inc. Flexible high availability disaster recovery with a set of database servers
US9633094B2 (en) 2014-04-25 2017-04-25 Bank Of America Corporation Data load process
US10303665B2 (en) 2014-09-24 2019-05-28 Sap Se Zero downtime maintenance for applications and databases
US10803030B2 (en) * 2014-11-14 2020-10-13 Sap Se Asynchronous SQL execution tool for zero downtime and migration to HANA
US9881035B2 (en) * 2014-12-12 2018-01-30 Sap Se Systems and methods for in-place migration with downtime minimization
US20160170977A1 (en) * 2014-12-12 2016-06-16 Sap Se Systems and methods for in-place migration with downtime minimization
US9501516B2 (en) * 2014-12-19 2016-11-22 Sap Se Zero downtime upgrade of database applications using triggers and calculated fields
US9898494B2 (en) 2015-02-23 2018-02-20 Sap Se Zero downtime upgrade for database applications using tables with sequences
US10685007B2 (en) 2016-03-29 2020-06-16 Sap Se Table content transport and delivery
US9898279B2 (en) 2016-03-31 2018-02-20 Sap Se Optimizing ABAP development as a service
US10230708B2 (en) 2016-05-20 2019-03-12 Sap Se Application managed service instances
US10659449B2 (en) 2016-05-20 2020-05-19 Sap Se Application managed service instances
US10871962B2 (en) 2016-05-27 2020-12-22 Sap Se Zero downtime maintenance in constrained systems
US11036696B2 (en) 2016-06-07 2021-06-15 Oracle International Corporation Resource allocation for database provisioning
US10523662B2 (en) 2016-09-16 2019-12-31 Sap Se In-memory database advanced programming model
US10055215B2 (en) 2016-10-05 2018-08-21 Sap Se Enabling corrections during upgrade procedure
US10684999B2 (en) 2016-10-05 2020-06-16 Sap Se Multi-procedure support in data migration
US10491700B2 (en) 2016-11-18 2019-11-26 Sap Se Application managed service instances
US11693945B2 (en) 2016-11-18 2023-07-04 Sap Se Secure calls between applications
US10268692B2 (en) 2017-02-15 2019-04-23 Sap Se Multi-procedure support in data migration
US10706170B2 (en) 2017-03-16 2020-07-07 Sap Se Tenant table sharing with content separation
US10789220B2 (en) 2017-03-28 2020-09-29 Sap Se Management of database API schema
US10693989B2 (en) 2017-04-28 2020-06-23 Sap Se Brokering services from partner cloud platforms
US10298591B2 (en) 2017-04-28 2019-05-21 Sap Se Secure integration of independent cloud foundry applications in a fiori launchpad
US10185552B2 (en) 2017-05-12 2019-01-22 Sap Se Enforcing content constraints on delivery and end user changes
US10437795B2 (en) 2017-05-12 2019-10-08 Sap Se Upgrading systems with changing constraints
US10268472B2 (en) 2017-05-16 2019-04-23 Sap Se Upgrading systems with replicated data
US10740318B2 (en) 2017-10-26 2020-08-11 Sap Se Key pattern management in multi-tenancy database systems
US10452646B2 (en) 2017-10-26 2019-10-22 Sap Se Deploying changes in a multi-tenancy database system
US10621167B2 (en) 2017-10-26 2020-04-14 Sap Se Data separation and write redirection in multi-tenancy database systems
US10482080B2 (en) 2017-10-26 2019-11-19 Sap Se Exchanging shared containers and adapting tenants in multi-tenancy database systems
US10713277B2 (en) 2017-10-26 2020-07-14 Sap Se Patching content across shared and tenant containers in multi-tenancy database systems
US10733168B2 (en) 2017-10-26 2020-08-04 Sap Se Deploying changes to key patterns in multi-tenancy database systems
US10657276B2 (en) 2017-10-26 2020-05-19 Sap Se System sharing types in multi-tenancy database systems
US10740315B2 (en) 2017-10-26 2020-08-11 Sap Se Transitioning between system sharing types in multi-tenancy database systems
US11561956B2 (en) 2017-10-26 2023-01-24 Sap Se Key pattern management in multi-tenancy database systems
US10673962B2 (en) 2017-11-28 2020-06-02 Sap Se Service cross-consumption based on an open service broker application programming interface
US10536461B2 (en) 2017-12-19 2020-01-14 Sap Se Service identity propagation between applications and reusable services
US11030164B2 (en) 2018-01-18 2021-06-08 Sap Se Artifact deployment for application managed service instances
US11218388B2 (en) 2018-01-30 2022-01-04 Sap Se Tenant isolated data in shared reusable services
US10715405B2 (en) 2018-01-30 2020-07-14 Sap Se Tenant isolated data in shared reusable services
US10977212B2 (en) 2018-05-03 2021-04-13 Sap Se Data partitioning based on estimated growth
US10686882B2 (en) 2018-05-18 2020-06-16 Sap Se Change management using a thing-model on an internet-of-things platform
US10942892B2 (en) 2018-05-18 2021-03-09 Sap Se Transport handling of foreign key checks
US10915551B2 (en) 2018-06-04 2021-02-09 Sap Se Change management for shared objects in multi-tenancy systems
US10936624B2 (en) 2018-06-12 2021-03-02 Sap Se Development and productive use of system with parallel use of production data and zero downtime of software changes
US10534585B1 (en) 2018-10-29 2020-01-14 Sap Se Integrated development environment with deep insights and recommendations
US11232126B2 (en) 2018-11-21 2022-01-25 Sap Se Zero downtime upgrade of systems with database-side replication
US10853693B2 (en) 2018-12-04 2020-12-01 Sap Se Software logistic for learning applications
US10891217B2 (en) 2018-12-10 2021-01-12 Sap Se Optimizing test coverage based on actual use
US10700949B1 (en) 2018-12-13 2020-06-30 Sap Se Stacking of tentant-aware services
US11121943B2 (en) 2018-12-13 2021-09-14 Sap Se Amplifying scaling elasticity of microservice meshes
US10956150B2 (en) 2018-12-13 2021-03-23 Sap Se Integrating preview systems for early validation and maintenance in development-to-production landscapes provisioned by continuous delivery
US10642609B1 (en) 2018-12-13 2020-05-05 Sap Se Integrating preview systems for early validation and maintenance in development-to-production landscapes provisioned by continuous delivery
US11797879B2 (en) 2019-05-13 2023-10-24 Sap Se Machine learning on distributed customer data while protecting privacy
US11537364B2 (en) 2019-06-27 2022-12-27 Sap Se Application assessment system to achieve interface design consistency across micro services
US10983762B2 (en) 2019-06-27 2021-04-20 Sap Se Application assessment system to achieve interface design consistency across micro services
US11249812B2 (en) 2019-07-25 2022-02-15 Sap Se Temporary compensation of outages
US11822526B2 (en) 2019-09-13 2023-11-21 Oracle International Corporation Integrated transition control center
US11256671B2 (en) 2019-09-13 2022-02-22 Oracle International Corporation Integrated transition control center
US11269717B2 (en) 2019-09-24 2022-03-08 Sap Se Issue-resolution automation
US11314732B2 (en) * 2019-10-11 2022-04-26 International Business Machines Corporation Database migration technique
US11551141B2 (en) 2019-10-14 2023-01-10 Sap Se Data access control and workload management framework for development of machine learning (ML) models
US11379211B2 (en) 2019-12-05 2022-07-05 Sap Se Fencing execution of external tools during software changes
US11561836B2 (en) 2019-12-11 2023-01-24 Sap Se Optimizing distribution of heterogeneous software process workloads
US11354302B2 (en) 2020-06-16 2022-06-07 Sap Se Automatic creation and synchronization of graph database objects
US12013843B2 (en) 2020-06-16 2024-06-18 Sap Se Automatic creation and synchronization of graph database objects
US11436211B1 (en) 2020-09-29 2022-09-06 Amazon Technologies, Inc. Renaming a database table with minimized application downtime

Also Published As

Publication number Publication date
EP2418591B1 (en) 2019-12-04
EP2418591A1 (en) 2012-02-15
US20120041933A1 (en) 2012-02-16

Similar Documents

Publication Publication Date Title
US8356010B2 (en) Online data migration
US11921760B2 (en) Distributed transaction management with tokens
US10437795B2 (en) Upgrading systems with changing constraints
EP2746965B1 (en) Systems and methods for in-memory database processing
US8924384B2 (en) Upgrading column-based databases
US9747356B2 (en) Eager replication of uncommitted transactions
US9396220B2 (en) Instantaneous unplug of pluggable database from one container database and plug into another container database
US11379437B1 (en) Zero-outage database reorganization
US8433692B2 (en) Effective dating for entity attributes and relationships
US8417731B2 (en) Article utilizing a generic update module with recursive calls identify, reformat the update parameters into the identified database table structure
US10754833B2 (en) Combined database migration and structure conversion within maintenance procedures
US20130159339A1 (en) Data Container Access in a Database System
US20160179497A1 (en) Zero Downtime Upgrade of Database Applications Using Triggers and Calculated Fields
CN113868251B (en) Global secondary indexing method and device for distributed database
US20160132577A1 (en) Copy Procedure To Reduce Downtime For A Source System
US8719315B2 (en) Representation of business object in analytical application by combining replicated, analytical, and locally enriched data
US20190354600A1 (en) Transport handling of foreign key checks
US7822792B2 (en) Administration of planning file entries in planning systems with concurrent transactions
US11657046B1 (en) Performant dropping of snapshots by converter branch pruning
CN116186024A (en) Database table expansion method and device, storage medium and electronic equipment
CN114661738A (en) Method, device and equipment for adding index and storage medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: SAP AG, GERMANY

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DRIESEN, VOLKER;REEL/FRAME:025015/0372

Effective date: 20100811

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: SAP SE, GERMANY

Free format text: CHANGE OF NAME;ASSIGNOR:SAP AG;REEL/FRAME:033625/0334

Effective date: 20140707

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12