US20230025934A1 - Configurable and incremental database migration framework for heterogeneous databases - Google Patents

Configurable and incremental database migration framework for heterogeneous databases Download PDF

Info

Publication number
US20230025934A1
US20230025934A1 US17/814,987 US202217814987A US2023025934A1 US 20230025934 A1 US20230025934 A1 US 20230025934A1 US 202217814987 A US202217814987 A US 202217814987A US 2023025934 A1 US2023025934 A1 US 2023025934A1
Authority
US
United States
Prior art keywords
database
destination
source
migration
type
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.)
Pending
Application number
US17/814,987
Inventor
Azmath Mohamad
Chirag Modi
Phani Kumar Bhogaraju
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.)
ByteDance Inc
Original Assignee
Groupon Inc
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 Groupon Inc filed Critical Groupon Inc
Priority to US17/814,987 priority Critical patent/US20230025934A1/en
Assigned to GROUPON, INC. reassignment GROUPON, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MODI, CHIRAG, BHOGARAJU, PHANI KUMAR, MOHAMAD, AZMATH
Publication of US20230025934A1 publication Critical patent/US20230025934A1/en
Assigned to BYTEDANCE INC. reassignment BYTEDANCE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GROUPON, INC.
Pending legal-status Critical Current

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • 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
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database

Definitions

  • Embodiments of the invention relate, generally, to facilitating heterogeneous database migration, and more specifically for a system, method, apparatus, and computer program product for providing a configurable and incremental database migration framework for heterogeneous databases.
  • embodiments of the present invention include systems, methods and computer readable media for facilitating improved heterogeneous database migration. Some embodiments provide for more specifically to a system, method, apparatus, and computer program product for providing a configurable and incremental database migration framework to facilitate heterogeneous database migration.
  • an apparatus for facilitating heterogeneous database migration comprising at least one processor and at least one memory including computer program code, the at least one memory and the computer program code configured to, with the processor, cause the apparatus to at least access a migration configuration file, the migration configuration file comprising information indicative of at least a source database type of a source database, connection information of accessing the source database, a destination database type of a destination database, and connection information for accessing the destination database, generate configuration data based on the source database type and the destination database type to generate a mapping of a source database table stored within the source database to a destination database table stored within the destination database, and generate a query for execution on the source database enabling data migration from the source database to the destination database.
  • the first database type is different than the second database type.
  • the at least one memory and the computer program code are further configured to, with the processor, cause the apparatus to execute the query on the source database to extract data, frame the data into an insert format, and cause storage of the data, in the insert format, in the destination database.
  • the at least one memory and the computer program code configured for framing the query is further configured to, with the processor, cause the apparatus to call a function for manipulating data values stored in the source database table or any data exchange formats in advance of causing storage of the data in the destination database table.
  • the at least one memory and the computer program code configured for framing the query is further configured to, with the processor, cause the apparatus to call a function configured for supporting data migration from a plurality of source database tables, the function configured for supporting data migration from the plurality of source database tables comprising receiving information indicative of each of the plurality of source database table, receiving information indicative of the destination database, and an order in which the plurality of source database tables join in the destination database.
  • the at least one memory and the computer program code are further configured to, with the processor, cause the apparatus to populate temporary tables in an instance in which a table is having primary key to maintain referential integration.
  • the at least one memory and the computer program code are further configured to, with the processor, cause the apparatus to preceding accessing the migration configuration file, generate the migration configuration file, wherein generation of the migration configuration file comprises receiving source database connection information, receiving destination database connection information, and confirming connectivity to the source database and the destination database.
  • a method for facilitating heterogeneous database migration comprising accessing a migration configuration file, the migration configuration file comprising information indicative of at least a source database type of a source database, connection information of accessing the source database, a destination database type of a destination database, and connection information for accessing the destination database, generating configuration data based on the source database type and the destination database type to generate a mapping of a source database table stored within the source database to a destination database table stored within the destination database, and generating a query for execution on the source database enabling data migration from the source database to the destination database.
  • the method may further comprise executing the query on the source database to extract data, framing the data into an insert format, and causing storage of the data, in the insert format, in the destination database.
  • framing the query comprises calling a function for manipulating data values stored in the source database table or any data exchange formats in advance of causing storage of the data in the destination database table.
  • framing the query comprises calling a function configured for supporting data migration from a plurality of source database tables, the function configured for supporting data migration from the plurality of source database tables comprising receiving information indicative of each of the plurality of source database table, receiving information indicative of the destination database, and an order in which the plurality of source database tables join in the destination database.
  • the method may further comprise populating temporary tables in an instance in which a table is having primary key to maintain referential integration.
  • the method may further comprise preceding accessing the migration configuration file, generating the migration configuration file, wherein generation of the migration configuration file comprises receiving source database connection information, receiving destination database connection information, and confirming connectivity to the source database and the destination database.
  • a computer program product for facilitating heterogeneous database migration comprising at least one non-transitory computer-readable storage medium having computer-executable program code instructions stored therein, the computer-executable program code instructions comprising program code instructions for accessing a migration configuration file, the migration configuration file comprising information indicative of at least a source database type of a source database, connection information of accessing the source database, a destination database type of a destination database, and connection information for accessing the destination database, generating configuration data based on the source database type and the destination database type to generate a mapping of a source database table stored within the source database to a destination database table stored within the destination database, and generating a query for execution on the source database enabling data migration from the source database to the destination database.
  • the first database type is different than the second database type.
  • the computer-executable program code instructions further comprise program code instructions for executing the query on the source database to extract data, framing the data into an insert format, and causing storage of the data, in the insert format, in the destination database.
  • the computer-executable program code instructions configured for framing the query further comprise program code instructions for calling a function for manipulating data values stored in the source database table or any data exchange formats in advance of causing storage of the data in the destination database table.
  • the computer-executable program code instructions configured for framing the query further comprise program code instructions for calling a function configured for supporting data migration from a plurality of source database tables, the function configured for supporting data migration from the plurality of source database tables comprising receiving information indicative of each of the plurality of source database table, receiving information indicative of the destination database, and an order in which the plurality of source database tables join in the destination database.
  • the computer-executable program code instructions further comprise program code instructions for populating temporary tables in an instance in which a table is having primary key to maintain referential integration. In some embodiments, the computer-executable program code instructions further comprise program code instructions for preceding accessing the migration configuration file, generating the migration configuration file, wherein generation of the migration configuration file comprises receiving source database connection information, receiving destination database connection information, and confirming connectivity to the source database and the destination database.
  • FIG. 1 shows an example system within which embodiments of the present invention may operate.
  • FIG. 2 shows a block diagram showing an example device for implementing a configurable and incremental database migration framework to facilitate heterogeneous database migration using special-purpose circuitry in accordance with some exemplary embodiments of the present invention.
  • FIG. 3 shows a flow diagram depicting an exemplary embodiment of performing database migration, in accordance with some exemplary embodiments of the present invention.
  • FIGS. 4 and 5 show flow diagrams depicting exemplary methods for implementing a configurable and incremental database migration framework to facilitate heterogeneous database migration in accordance with some exemplary embodiments of the present invention.
  • embodiments of the present invention are directed to improved systems, apparatuses, methods, and computer readable media for heterogeneous database migration.
  • embodiments of the present invention provide systems, devices, methods, and computer readable media for providing a configurable and incremental database migration framework to facilitate heterogeneous database migration.
  • connection information and a database type of the source and destination databases may perform database migration.
  • features of the present invention include a framework which can be configurable and developed in any programming language/independent of programming language.
  • the present invention does not require a user to possess any database knowledge for execution.
  • the present invention may be configured to call configurable functions which can have complex logic, whereas the same cannot be achieved through stored procedures.
  • the present invention may be further configured such that changes are easy to accommodate in that, for example, a user does not need to login to a server to make changes or execute.
  • the present invention may further be configured such that primary key and foreign key constrains are maintained within an intermediate temporary table. Migration may be divided into subparts and, in some embodiments, executed in many parallel threads based on limit and offset.
  • the present invention may be configured such that, for example, CSV, XML, or JSON files may be imported into database using the same configurations. Moreover, the present invention may be configured such that, based on the logs and/or status, when failure, a pointer can be set to specific record from where the migration to start again. Furthermore, the present invention may be configured such that data may be migrated to multiple and different target databases at the same time.
  • data As used herein, the terms “data,” “content,” “information,” and similar terms may be used interchangeably to refer to data capable of being transmitted, received, and/or stored in accordance with embodiments of the present invention. Thus, use of any such terms should not be taken to limit the spirit and scope of embodiments of the present invention.
  • database may refer to any organized collection of data.
  • a database as referred to herein, is organized such that information may be accessed via a query (e.g., the location of each of a plurality of consumers or merchants may be organized such that each consumer in a particular location may be queried).
  • database type may refer to any database management system.
  • a database type may refer to a computer software application that interacts with the user, other applications, and the database itself to capture and analyze data (e.g., conventional database management software such as MySQL, POSTGRES or the like)
  • Methods, apparatuses, and computer program products of the present invention may be embodied by any of a variety of devices.
  • the method, apparatus, and computer program product of an example embodiment may be embodied by a networked device, such as a server or other network entity, configured to communicate with one or more devices, such as one or more client devices.
  • the computing device may include fixed computing devices, such as a personal computer or a computer workstation.
  • example embodiments may be embodied by any of a variety of mobile terminals, such as a portable digital assistant (PDA), mobile telephone, smartphone, laptop computer, tablet computer, or any combination of the aforementioned devices.
  • PDA portable digital assistant
  • FIG. 1 discloses an example computing system within which embodiments of the present invention may operate.
  • Users may access any of one or more first services 102 A-N and/or any of one or more second services 110 A-N via a network 116 (e.g., the Internet, or the like) using a migration engine 108 .
  • the first service 102 A-N may comprise a server 104 in communication with a source database 106 and the one or more second services 110 A-N may comprise servers 112 A-N in communication with target databases 114 A-N.
  • Both the server 104 and servers 112 A-N may be embodied as a computer or computers as known in the art.
  • the servers 104 and 112 A-N may provide for receiving of electronic data from various sources, including but not necessarily limited to the migration engine 108 .
  • the server 104 may facilitate e-commerce transactions based on transaction information provided by various merchant devices or the like.
  • Databases 106 and 114 A-N may be embodied as a data storage device such as a Network Attached Storage (NAS) device or devices, or as a separate database server or servers.
  • Databases 106 and 114 A-N may include information accessed and stored by the servers 104 and 112 A-N to facilitate the operations of the services 102 A-N and 110 A-N respectively.
  • the databases 106 and 114 A-N may include, without limitation, user account credentials for system administrators, merchants, and consumers, data indicating the products and promotions offered by the service, clickstream data, analytic results, reports, financial data, and/or the like.
  • Migration engine 108 may be any computing device as known in the art and operated by a user.
  • the migration engine 108 may execute an “app” to interact with any of services 102 A-N.
  • apps are typically designed to execute on mobile devices, such as tablets or smartphones.
  • an app may be provided that executes on mobile device operating systems such as Apple Inc.'s iOS®, Google Inc.'s Android®, or Microsoft Inc.'s Windows 8®.
  • These platforms typically provide frameworks that allow apps to communicate with one another and with particular hardware and software components of mobile devices.
  • the mobile operating systems named above each provide frameworks for interacting with location services circuitry, wired and wireless network interfaces, user contacts, and other applications in a manner that allows for improved interactions between apps while also preserving the privacy and security of consumers.
  • a mobile operating system may also provide for improved communication interfaces for interacting with external devices (e.g., home automation systems, indoor navigation systems, and the like). Communication with hardware and software modules executing outside of the app is typically provided via application programming interfaces (APIs) provided by the mobile device operating system.
  • APIs application programming interfaces
  • migration engine 108 may interact through the any of services 102 A-N via a web browser.
  • migration engine 108 may include various hardware or firmware designed to interface with any of services 102 A-N (e.g., where the migration engine 108 is a purpose-built device offered for the primary purpose of communicating with any of services 102 A-N).
  • Migration engine 108 may be embodied by one or more computing systems, such as apparatus 200 shown in FIG. 2 .
  • the apparatus 200 may include a processor 202 , a memory 204 , input/output circuitry 206 , communications circuitry 208 , and migration module 210 .
  • the apparatus 200 may be configured to execute the operations described above with respect to FIG. 1 and below with respect to FIGS. 3 and 4 .
  • these components 202 - 210 are described with respect to functional limitations, it should be understood that the particular implementations necessarily include the use of particular hardware. It should also be understood that certain of these components 202 - 210 may include similar or common hardware.
  • circuitry may both leverage use of the same processor, network interface, storage medium, or the like to perform their associated functions, such that duplicate hardware is not required for each set of circuitry.
  • circuitry as used herein with respect to components of the apparatus should therefore be understood to include particular hardware configured to perform the functions associated with the particular circuitry as described herein.
  • circuitry should be understood broadly to include hardware and, in some embodiments, software for configuring the hardware.
  • circuitry may include processing circuitry, storage media, network interfaces, input/output devices, and the like.
  • other elements of the apparatus 200 may provide or supplement the functionality of particular circuitry.
  • the processor 202 may provide processing functionality
  • the memory 204 may provide storage functionality
  • the communications circuitry 208 may provide network interface functionality, and the like.
  • the processor 202 may be in communication with the memory 204 via a bus for passing information among components of the apparatus.
  • the memory 204 may be non-transitory and may include, for example, one or more volatile and/or non-volatile memories.
  • the memory may be an electronic storage device (e.g., a computer readable storage medium).
  • the memory 204 may be configured to store information, data, content, applications, instructions, or the like, for enabling the apparatus to carry out various functions in accordance with example embodiments of the present invention.
  • the processor 202 may be embodied in a number of different ways and may, for example, include one or more processing devices configured to perform independently. Additionally or alternatively, the processor may include one or more processors configured in tandem via a bus to enable independent execution of instructions, pipelining, and/or multithreading.
  • processing circuitry may be understood to include a single core processor, a multi-core processor, multiple processors internal to the apparatus, and/or remote or “cloud” processors.
  • the processor 202 may be configured to execute instructions stored in the memory 204 or otherwise accessible to the processor.
  • the processor may be configured to execute hard-coded functionality.
  • the processor may represent an entity (e.g., physically embodied in circuitry) capable of performing operations according to an embodiment of the present invention while configured accordingly.
  • the instructions may specifically configure the processor to perform the algorithms and/or operations described herein when the instructions are executed.
  • the apparatus 200 may include input/output circuitry 206 that may, in turn, be in communication with processor 202 to provide output to the user and, in some embodiments, to receive an indication of a user input.
  • the input/output circuitry 206 may comprise a user interface and may include a display and may comprise a web user interface, a mobile application, a client device, a kiosk, or the like.
  • the input/output circuitry 206 may also include a keyboard, a mouse, a joystick, a touch screen, touch areas, soft keys, a microphone, a speaker, or other input/output mechanisms.
  • the processor and/or user interface circuitry comprising the processor may be configured to control one or more functions of one or more user interface elements through computer program instructions (e.g., software and/or firmware) stored on a memory accessible to the processor (e.g., memory 204 , and/or the like).
  • computer program instructions e.g., software and/or firmware
  • the communications circuitry 208 may be any means such as a device or circuitry embodied in either hardware or a combination of hardware and software that is configured to receive and/or transmit data from/to a network and/or any other device, circuitry, or module in communication with the apparatus 200 .
  • the communications circuitry 208 may include, for example, a network interface for enabling communications with a wired or wireless communication network.
  • the communications circuitry 208 may include one or more network interface cards, antennae, buses, switches, routers, modems, and supporting hardware and/or software, or any other device suitable for enabling communications via a network.
  • the communication interface may include the circuitry for interacting with the antenna(s) to cause transmission of signals via the antenna(s) or to handle receipt of signals received via the antenna(s).
  • Migration module 210 includes hardware configured to provide a configurable and incremental database migration framework for heterogeneous databases and perform/facilitate database (e.g., heterogeneous database) migration.
  • the migration module 210 may utilize processing circuitry, such as the processor 202 , to perform these actions.
  • the migration module 210 may receive the data via a network interface provided by the communications circuitry 208 .
  • the migration module 210 may include a separate processor, specially configured field programmable gate array (FPGA), or application specific interface circuit (ASIC) to perform the database migration and/or provide database migration framework.
  • the migration module 210 is therefore implemented using hardware components of the apparatus configured by either hardware or software for implementing these planned functions.
  • any such computer program instructions and/or other type of code may be loaded onto a computer, processor or other programmable apparatus's circuitry to produce a machine, such that the computer, processor other programmable circuitry that execute the code on the machine create the means for implementing various functions, including those described herein.
  • all or some of the information presented by the example displays discussed herein can be based on data that is received, generated and/or maintained by one or more components of apparatus 200 .
  • one or more external systems such as a remote cloud computing and/or data storage system may also be leveraged to provide at least some of the functionality discussed herein.
  • embodiments of the present invention may be configured as methods, mobile devices, backend network devices, and the like. Accordingly, embodiments may comprise various means including entirely of hardware or any combination of software and hardware. Furthermore, embodiments may take the form of a computer program product on at least one non-transitory computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. Any suitable computer-readable storage medium may be utilized including non-transitory hard disks, CD-ROMs, flash memory, optical storage devices, or magnetic storage devices.
  • the system may be configured to a configurable and incremental database migration framework to facilitate heterogeneous database migration.
  • FIGS. 3 and 4 illustrate exemplary processes for receiving, for example, user input identifying at least one source database and one destination database, and, upon reception of a command, performing heterogeneous database migration.
  • FIG. 3 shows an example method that may be executed by one or more machines, for example by apparatus 200 , including migration module 210 of FIG. 2 , for facilitating database migration, in accordance with some embodiments discussed herein.
  • FIG. 3 illustrates a flow diagram depicting an example of a process 300 for facilitating database migration in accordance with embodiments of the present invention.
  • the process illustrates how, upon reception of information related to source database(s) and destination (or target database(s)), a query may be generated and database migration may be performed.
  • the process 300 may be performed by an apparatus, such as the apparatus 200 described above with respect to FIG. 2 .
  • an apparatus such as apparatus 200 may be configured for checking or otherwise confirming connectivity or accessibility to one or more databases, including in some embodiments, a source database 320 and a destination database 330 .
  • the apparatus may be configured to confirm connectivity via any network connection (e.g., WIFI, hardwired or cellular).
  • any network connection e.g., WIFI, hardwired or cellular.
  • to confirm connectivity/accessibility as shown in block 340 of FIG.
  • the apparatus such as apparatus 200
  • block 310 may involve checking three or more connections and block 340 may include additional database types.
  • the apparatus may support heterogeneous database migration from a source database to a plurality of destination database or, in some embodiments, from a plurality of source databases to one or more destination databases. While the description refers to a source database and source database type, one of ordinary skill in the art would appreciate that the present invention may facilitate database migration from, for example, CSV, XML, or JSON files as well as any standard that facilitates data interchange.
  • a query may be generated. That is, as shown in block 350 of FIG. 3 , an apparatus, such as 200 , may be configured for framing a query.
  • the query may be framed based on types of databases involved in the data migration. For example, the query may be a function of the first database type and the second database type. Where more than one source database and/or more than one destination databases are involved, in some embodiments, a plurality of queries may be framed. That is, each query may be directed to a particular source database, a particular destination database, or in some embodiments, to a particular combination of a particular source database and a particular destination database.
  • framing the query may involve determining configuration data to generate a mapping.
  • an apparatus such as 200 , may be configured for determining configuration data to generate a mapping. That is, a process of data migration may comprise analyzing the source database and the target database to produce configuration data, the configuration data being used for generating a mapping of the source database to a target database, which may enable the migration of, for example, at least one table, or portion thereof, from the source database to the target database.
  • Block 360 shows the mapping process. For example, as shown, for each of a plurality of tables in the target database (i.e. a target table), the source tables/columns are identified. Specifically, as shown, for each of N target tables, the sources table and columns are identified in the mapping process.
  • the query is executed.
  • an apparatus, such as 200 may be configured for executing query and/or fetching data, from, for example, source database 320 .
  • an apparatus, such as 200 may be configured for using user defined function(s) to process data. For example, as shown in more detail below and in particular in FIG.
  • the apparatus may be configured for supporting various user defined functions such as supporting constant values, manipulating values of specified fields, identifying multiple source databases, parallel execution, and maintaining referential integrity. That is, as shown in block 380 of FIG. 3 , an apparatus, such as 200 , may be configured for determining function(s) to process in data in required format and as shown in block 385 of FIG. 3 , an apparatus, such as 200 , may be configured for determining functions ranging from constant to formulae.
  • the data may be, for example, converted into a format consistent with insertion into the destination database(s). That is, as shown in block 390 of FIG. 3 , an apparatus, such as 200 , may be configured for framing data into, for example, SQL insert format. Finally, as shown in block 395 of FIG. 3 , an apparatus, such as 200 , may be configured for storing the data in target database 330 .
  • the insert format is achieved by identifying the source database type and converting the data to that of destination database type by, for example, calling one of a plurality of functions, each function configured for converting data of one type to another.
  • a first function that is called when JSON data is being migrated to MySQL For example, a first function that is called when JSON data is being migrated to MySQL, a second for when MySQL is being migrated to PostgreSQL, etc.
  • the configuration file may comprise a flag or the like stating “is the input file of the first file type”, and if yes or in an instance in which a yes is returned, while running the migration program, a function may be called which, for example, takes the file name as an input and within the function, the data of the first file type is transferred or written directly to the target database.
  • the function name will be similar to processSQLFile similar like processJSONFile
  • FIG. 4 illustrates a flow diagram depicting an example of a process 400 for facilitating database migration in accordance with embodiments of the present invention.
  • process 400 illustrates an embodiment in which a configurable and incremental database migration framework may be used to perform heterogeneous database migration.
  • the process 400 may be performed by an apparatus, such as the apparatus 200 described above with respect to FIG. 2 and database connection/data migration may take place via any network connection (e.g., WIFI, hardwired or cellular).
  • WIFI wireless fidelity
  • a migration configuration file may be utilized to identify source database(s) and destination databases, the migration configuration file comprises information identifying one or more source databases and one or more destination databases.
  • database connection information may be first received.
  • an apparatus such as apparatus 200
  • an apparatus such as apparatus 200
  • one or more destination database connections in an instance in which data may be migrated to (and/or from) a plurality of databases, one or more destination database connections (and/or one or more source database connections) may be specified.
  • the apparatus may be configured to provide, for display at a user device, a user interface comprised of user-fillable and/or user-selectable portions.
  • the user interface may be configured to display user-fillable and/or user-selectable portions configured to receive information regarding a username and password.
  • the apparatus may then be configured to receive and subsequently store the user input. For example, a user may input the username and password, which the apparatus subsequently stores in a migration configuration file.
  • the apparatus may be configured to check the database configuration information to, for example, confirm accessibility.
  • an apparatus such as apparatus 200 may be configured for accessing, for example, the migration configuration file, to read and/or identify connection information for the one or more source database(s) and one or more destination database(s).
  • an apparatus such as apparatus 200 may be configured for reading migration configuration file (e.g., migration configuration.php).
  • migration configuration file e.g., migration configuration.php
  • the migration configuration file generated may be generated locally, whereas in other embodiments, the migration configuration file may be generated at a remote server.
  • the migration configuration file may be stored locally, whereas in other embodiments, the migration configuration file may be stored remotely. That is, the migration configuration file may be generated and/or stored at the device at which the user is directing the process or at a remote server that, for example, hosts the heterogeneous database migration framework.
  • a connection file may be different than the migration configuration file and may comprise connection related information (username, passwords, etc.)
  • security requirements may require generation and/or storage of one or both either locally or remotely. During execution, a call to one or both of the connection file or the migration configuration file may be made.
  • the types of databases may be different.
  • a first database i.e. the type of the first database
  • the second database type i.e. the type of the second database
  • PostgreSQL PostgreSQL
  • embodiments disclosed herein discuss various methods that may be employed in the event that the databases are of different types, it should be understood that the databases may also, in some embodiments, be of the same or similar type.
  • a function in which the source database connection is defined as get_ID_connection( ) and the function in which the destination database connection(s) is defined as get_CD_connection( )
  • the functions may be defined as
  • an apparatus such as apparatus 200 may be configured for mapping tables and/or traversing each table and column level configuration. That is, details regarding source database configuration and/or destination database configuration may identified and implemented. As such, depending on one or more particular requirements, the apparatus may be configured to perform the source database configuration and/or destination database configuration.
  • FIG. 5 shows a flow diagram depicts an example process 500 identifying a number of uses cases for which configuration may be performed, in accordance with embodiments of the present invention.
  • the process 500 may be performed by an apparatus, such as the apparatus 200 described above with respect to FIG. 2 .
  • an apparatus such as apparatus 200
  • the apparatus may be configured to enable specification and/or specify a different input format to import data to the destination from a file.
  • an apparatus such as apparatus 200 may be configured for supporting a constant value.
  • the apparatus may be configured to specify a constant value for some of the fields in configuration.
  • an apparatus such as apparatus 200 may be configured for supporting manipulation of values before migrating to the destination table. That is, for example, as shown below, the apparatus may be configured to apply one or more different functions and manipulate a value for each column for each row before inserting it into destination table.
  • an apparatus such as apparatus 200 may be configured for supporting data from multiple databases.
  • the apparatus may be configured to join tables, take data from different source database(s) and take selected fields to map to specified fields in the destination table.
  • an apparatus such as apparatus 200 may be configured for supporting parallel execution.
  • the apparatus may be utilized to execute database migration in parallel in batch by, for example, applying a limit (e.g., to the number of parallel migrations), which may increase the speed of processing.
  • an apparatus such as apparatus 200 may be configured for maintaining referential integrity for a primary and foreign key in the destination database.
  • the apparatus may be configured to create a temporary table to maintain a relation between a primary key in a source table and a destination table, which may be used to maintain referential integrity in destination table during migration.
  • the apparatus may be configured to generate a query which may be configured to refer a primary key from a auto increment table (auto_inc_mapping_users).
  • a utility library (or function library) may be provided/utilized to define functions for utilization in migration configuration mapping which may be used to manipulate field values or in some embodiments, manipulate data values stored in a source database table or any data exchange formats (e.g., XML, JSON, CSV, etc.) in advance of causing storage of the data in the destination database table.
  • the complexity of the manipulation can range from simple to more complex.
  • the function library may include a function to modify a birth date to a required format. Based on the source database type and the destination database type, the apparatus may be configured to determine whether to call this particular function.
  • a function may be called in the mapping process to manipulate the field values so to be able to be stored in a second particular format as required by the destination database.
  • the function library may include a function to convert Taiwanese characters (e.g., a gender as indicated in TW) to a gender in English (e.g., M (male) or F (female)).
  • the library may include a function, also shown below, that may be utilized to reduce the amount of characters to a given number (e.g., 250).
  • the utility library may include any function enabling the manipulation of data from a source database to an insert format required by the destination database.
  • an apparatus such as apparatus 200 may be configured for creating/generating a query on each of one or more source database(s).
  • an apparatus, such as apparatus 200 may be configured for executing the query on the source database(s).
  • an apparatus, such as apparatus 200 may be configured for populating one or more temporary table(s) if, for example, table is having primary key to maintain referential integration. An example query is shown below and refers to a temporary table.
  • computer program code and/or other instructions may be loaded onto a computer, processor or other programmable apparatus's circuitry to produce a machine, such that execution of the code on the machine by the computer, processor, or other circuitry creates the means for implementing various functions, including those described herein.
  • embodiments of the present invention may be configured as methods, mobile devices, backend network devices, and the like. Accordingly, embodiments may comprise various means including entirely of hardware or a combination of software and hardware. Furthermore, embodiments may take the form of a computer program product on at least one computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. Any suitable computer-readable storage medium may be utilized, including non-transitory hard disks, CD-ROMs, flash memory, optical storage devices, magnetic storage devices, or the like.
  • These computer program instructions may also be stored in a computer-readable storage device that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable storage device produce an article of manufacture including computer-readable instructions for implementing the function discussed herein.
  • the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus, thereby producing a computer-implemented process such that the instructions executed on the computer or other programmable apparatus cause performance of the steps and thereby implement the functions discussed herein.
  • blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the circuit diagrams and process flowcharts, and combinations of blocks in the circuit diagrams and process flowcharts, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.

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)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Various methods are provided for facilitating heterogeneous database migration. One example method may comprise accessing a migration configuration file, the migration configuration file comprising information indicative of at least a source database type of a source database, connection information of accessing the source database, a destination database type of a destination database, and connection information for accessing the destination database, generating configuration data based on the source database type and the destination database type to generate a mapping of a source database table stored within the source database to a destination database table stored within the destination database, and generating a query for execution on the source database enabling data migration from the source database to the destination database.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation of U.S. application Ser. No. 17/075,893 titled “CONFIGURABLE AND INCREMENTAL DATABASE MIGRATION FRAMEWORK FOR HETEROGENEOUS DATABASES,” filed Oct. 21, 2020, which is a continuation of U.S. patent application Ser. No. 15/473,091, titled “CONFIGURABLE AND INCREMENTAL DATABASE MIGRATION FRAMEWORK FOR HETEROGENEOUS DATABASES,” filed on Mar. 29, 2017 (now issued U.S. Pat. No. 10,909,120), which claims priority to U.S. provisional Application No. 62/315,086, filed Mar. 30, 2016, the contents of each of which are incorporated herein by reference in their entireties.
  • FIELD
  • Embodiments of the invention relate, generally, to facilitating heterogeneous database migration, and more specifically for a system, method, apparatus, and computer program product for providing a configurable and incremental database migration framework for heterogeneous databases.
  • BACKGROUND
  • The applicant has discovered problems with current methods, systems, and apparatuses for providing heterogeneous database migration. Through applied effort, ingenuity, and innovation, Applicant has solved many of these identified problems by developing a solution that is embodied by the present invention, which is described in detail below.
  • BRIEF SUMMARY
  • In general, embodiments of the present invention provided herein include systems, methods and computer readable media for facilitating improved heterogeneous database migration. Some embodiments provide for more specifically to a system, method, apparatus, and computer program product for providing a configurable and incremental database migration framework to facilitate heterogeneous database migration.
  • In some embodiments, an apparatus for facilitating heterogeneous database migration may be provided, the apparatus comprising at least one processor and at least one memory including computer program code, the at least one memory and the computer program code configured to, with the processor, cause the apparatus to at least access a migration configuration file, the migration configuration file comprising information indicative of at least a source database type of a source database, connection information of accessing the source database, a destination database type of a destination database, and connection information for accessing the destination database, generate configuration data based on the source database type and the destination database type to generate a mapping of a source database table stored within the source database to a destination database table stored within the destination database, and generate a query for execution on the source database enabling data migration from the source database to the destination database.
  • In some embodiments, the first database type is different than the second database type. In some embodiments, the at least one memory and the computer program code are further configured to, with the processor, cause the apparatus to execute the query on the source database to extract data, frame the data into an insert format, and cause storage of the data, in the insert format, in the destination database. In some embodiments, the at least one memory and the computer program code configured for framing the query is further configured to, with the processor, cause the apparatus to call a function for manipulating data values stored in the source database table or any data exchange formats in advance of causing storage of the data in the destination database table. In some embodiments, the at least one memory and the computer program code configured for framing the query is further configured to, with the processor, cause the apparatus to call a function configured for supporting data migration from a plurality of source database tables, the function configured for supporting data migration from the plurality of source database tables comprising receiving information indicative of each of the plurality of source database table, receiving information indicative of the destination database, and an order in which the plurality of source database tables join in the destination database.
  • In some embodiments, the at least one memory and the computer program code are further configured to, with the processor, cause the apparatus to populate temporary tables in an instance in which a table is having primary key to maintain referential integration.
  • In some embodiments, the at least one memory and the computer program code are further configured to, with the processor, cause the apparatus to preceding accessing the migration configuration file, generate the migration configuration file, wherein generation of the migration configuration file comprises receiving source database connection information, receiving destination database connection information, and confirming connectivity to the source database and the destination database.
  • In some embodiments, a method for facilitating heterogeneous database migration may be provided, the method comprising accessing a migration configuration file, the migration configuration file comprising information indicative of at least a source database type of a source database, connection information of accessing the source database, a destination database type of a destination database, and connection information for accessing the destination database, generating configuration data based on the source database type and the destination database type to generate a mapping of a source database table stored within the source database to a destination database table stored within the destination database, and generating a query for execution on the source database enabling data migration from the source database to the destination database.
  • In some embodiments, the first database type is different than the second database type. In some embodiments, the method may further comprise executing the query on the source database to extract data, framing the data into an insert format, and causing storage of the data, in the insert format, in the destination database. In some embodiments, framing the query comprises calling a function for manipulating data values stored in the source database table or any data exchange formats in advance of causing storage of the data in the destination database table. In some embodiments, framing the query comprises calling a function configured for supporting data migration from a plurality of source database tables, the function configured for supporting data migration from the plurality of source database tables comprising receiving information indicative of each of the plurality of source database table, receiving information indicative of the destination database, and an order in which the plurality of source database tables join in the destination database.
  • In some embodiments, the method may further comprise populating temporary tables in an instance in which a table is having primary key to maintain referential integration. In some embodiments, the method may further comprise preceding accessing the migration configuration file, generating the migration configuration file, wherein generation of the migration configuration file comprises receiving source database connection information, receiving destination database connection information, and confirming connectivity to the source database and the destination database.
  • In some embodiments, a computer program product for facilitating heterogeneous database migration may be provided, the computer program product comprising at least one non-transitory computer-readable storage medium having computer-executable program code instructions stored therein, the computer-executable program code instructions comprising program code instructions for accessing a migration configuration file, the migration configuration file comprising information indicative of at least a source database type of a source database, connection information of accessing the source database, a destination database type of a destination database, and connection information for accessing the destination database, generating configuration data based on the source database type and the destination database type to generate a mapping of a source database table stored within the source database to a destination database table stored within the destination database, and generating a query for execution on the source database enabling data migration from the source database to the destination database.
  • In some embodiments, the first database type is different than the second database type. In some embodiments, the computer-executable program code instructions further comprise program code instructions for executing the query on the source database to extract data, framing the data into an insert format, and causing storage of the data, in the insert format, in the destination database. In some embodiments, the computer-executable program code instructions configured for framing the query further comprise program code instructions for calling a function for manipulating data values stored in the source database table or any data exchange formats in advance of causing storage of the data in the destination database table. In some embodiments, the computer-executable program code instructions configured for framing the query further comprise program code instructions for calling a function configured for supporting data migration from a plurality of source database tables, the function configured for supporting data migration from the plurality of source database tables comprising receiving information indicative of each of the plurality of source database table, receiving information indicative of the destination database, and an order in which the plurality of source database tables join in the destination database.
  • In some embodiments, the computer-executable program code instructions further comprise program code instructions for populating temporary tables in an instance in which a table is having primary key to maintain referential integration. In some embodiments, the computer-executable program code instructions further comprise program code instructions for preceding accessing the migration configuration file, generating the migration configuration file, wherein generation of the migration configuration file comprises receiving source database connection information, receiving destination database connection information, and confirming connectivity to the source database and the destination database.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Having described certain example embodiments of the present disclosure in general terms above, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale.
  • FIG. 1 shows an example system within which embodiments of the present invention may operate.
  • FIG. 2 shows a block diagram showing an example device for implementing a configurable and incremental database migration framework to facilitate heterogeneous database migration using special-purpose circuitry in accordance with some exemplary embodiments of the present invention.
  • FIG. 3 shows a flow diagram depicting an exemplary embodiment of performing database migration, in accordance with some exemplary embodiments of the present invention.
  • FIGS. 4 and 5 show flow diagrams depicting exemplary methods for implementing a configurable and incremental database migration framework to facilitate heterogeneous database migration in accordance with some exemplary embodiments of the present invention.
  • DETAILED DESCRIPTION Overview
  • Various embodiments of the present invention are directed to improved systems, apparatuses, methods, and computer readable media for heterogeneous database migration. In this regard, embodiments of the present invention provide systems, devices, methods, and computer readable media for providing a configurable and incremental database migration framework to facilitate heterogeneous database migration.
  • That is, by being provided connection information and a database type of the source and destination databases (MySQL, PostgreSQL, or the like), embodiments of the present invention may perform database migration. Whereas conventionally, a user would have to know, for example semantically, how to perform data manipulation in both the source and destination database, features of the present invention include a framework which can be configurable and developed in any programming language/independent of programming language. The present invention does not require a user to possess any database knowledge for execution. Furthermore, the present invention may be configured to call configurable functions which can have complex logic, whereas the same cannot be achieved through stored procedures. The present invention may be further configured such that changes are easy to accommodate in that, for example, a user does not need to login to a server to make changes or execute. The present invention may further be configured such that primary key and foreign key constrains are maintained within an intermediate temporary table. Migration may be divided into subparts and, in some embodiments, executed in many parallel threads based on limit and offset.
  • Furthermore, the present invention may be configured such that, for example, CSV, XML, or JSON files may be imported into database using the same configurations. Moreover, the present invention may be configured such that, based on the logs and/or status, when failure, a pointer can be set to specific record from where the migration to start again. Furthermore, the present invention may be configured such that data may be migrated to multiple and different target databases at the same time.
  • Definitions
  • Embodiments of the present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all embodiments of the inventions are shown. Indeed, embodiments of the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like numbers refer to like elements throughout.
  • As used herein, the terms “data,” “content,” “information,” and similar terms may be used interchangeably to refer to data capable of being transmitted, received, and/or stored in accordance with embodiments of the present invention. Thus, use of any such terms should not be taken to limit the spirit and scope of embodiments of the present invention.
  • As used herein, the term “database” may refer to any organized collection of data. A database, as referred to herein, is organized such that information may be accessed via a query (e.g., the location of each of a plurality of consumers or merchants may be organized such that each consumer in a particular location may be queried).
  • As used herein, the term “database type” may refer to any database management system. For example, a database type may refer to a computer software application that interacts with the user, other applications, and the database itself to capture and analyze data (e.g., conventional database management software such as MySQL, POSTGRES or the like)
  • Technical Underpinnings and Implementation of Exemplary Embodiments
  • Though data migration has become an integral and necessary part of IT department operations in today's business environment, it often causes major disruptions as a result of data quality and application performance problems. Encountering these problems and subsequently identifying solutions can severely impact budgets. Unfortunately data migration options are limited and particularly so between heterogeneous databases. For example, due to the speed at which new technologies are created and introduced to the market, backwards compatibility to legacy technologies is often not considered. That is, data created and stored by existing legacy technologies are burdened by not only their inherit limitations, but also by lack of compatibility with existing technologies. However, as demand for data analysis and reporting continues to grow, the data created and stored by existing legacy technologies is needed for completeness. For example, data related to health care systems and financial institutions will need be preserved as the newer systems are created and implemented. Moreover, the time and money invested in maintaining and supporting legacy systems is not sustainable.
  • While some solutions do exist (e.g., software bridges used to facilitate transition away from older database technologies), several limitations preclude their practical viability. For instance, any software bridge requires a thorough knowledge of both systems and, for each migration, a complete work up is necessary based on the particulars. As such, the cost of such a solution is often prohibitory. Hence there exists a need for a simpler, more intuitive system, which can be used with any combination of heterogeneous databases, not require expert knowledge of both the legacy and new technology, and provide integration to newer technology.
  • System Architecture
  • Methods, apparatuses, and computer program products of the present invention may be embodied by any of a variety of devices. For example, the method, apparatus, and computer program product of an example embodiment may be embodied by a networked device, such as a server or other network entity, configured to communicate with one or more devices, such as one or more client devices. Additionally or alternatively, the computing device may include fixed computing devices, such as a personal computer or a computer workstation. Still further, example embodiments may be embodied by any of a variety of mobile terminals, such as a portable digital assistant (PDA), mobile telephone, smartphone, laptop computer, tablet computer, or any combination of the aforementioned devices.
  • In this regard, FIG. 1 discloses an example computing system within which embodiments of the present invention may operate. Users may access any of one or more first services 102A-N and/or any of one or more second services 110A-N via a network 116 (e.g., the Internet, or the like) using a migration engine 108. Moreover, the first service 102A-N may comprise a server 104 in communication with a source database 106 and the one or more second services 110A-N may comprise servers 112A-N in communication with target databases 114A-N.
  • Both the server 104 and servers 112A-N may be embodied as a computer or computers as known in the art. The servers 104 and 112A-N may provide for receiving of electronic data from various sources, including but not necessarily limited to the migration engine 108. Generally, the server 104 may facilitate e-commerce transactions based on transaction information provided by various merchant devices or the like.
  • Databases 106 and 114A-N may be embodied as a data storage device such as a Network Attached Storage (NAS) device or devices, or as a separate database server or servers. Databases 106 and 114A-N may include information accessed and stored by the servers 104 and 112A-N to facilitate the operations of the services 102A-N and 110A-N respectively. For example, the databases 106 and 114A-N may include, without limitation, user account credentials for system administrators, merchants, and consumers, data indicating the products and promotions offered by the service, clickstream data, analytic results, reports, financial data, and/or the like.
  • Migration engine 108 may be any computing device as known in the art and operated by a user. In embodiments where migration engine 108 is a mobile device, such as a smart phone or tablet, the migration engine 108 may execute an “app” to interact with any of services 102A-N. Such apps are typically designed to execute on mobile devices, such as tablets or smartphones. For example, an app may be provided that executes on mobile device operating systems such as Apple Inc.'s iOS®, Google Inc.'s Android®, or Microsoft Inc.'s Windows 8®. These platforms typically provide frameworks that allow apps to communicate with one another and with particular hardware and software components of mobile devices. For example, the mobile operating systems named above each provide frameworks for interacting with location services circuitry, wired and wireless network interfaces, user contacts, and other applications in a manner that allows for improved interactions between apps while also preserving the privacy and security of consumers. In some embodiments, a mobile operating system may also provide for improved communication interfaces for interacting with external devices (e.g., home automation systems, indoor navigation systems, and the like). Communication with hardware and software modules executing outside of the app is typically provided via application programming interfaces (APIs) provided by the mobile device operating system.
  • Additionally or alternatively, migration engine 108 may interact through the any of services 102A-N via a web browser. As yet another example, migration engine 108 may include various hardware or firmware designed to interface with any of services 102A-N (e.g., where the migration engine 108 is a purpose-built device offered for the primary purpose of communicating with any of services 102A-N).
  • Example Apparatus for Implementing Embodiments of the Present Invention
  • Migration engine 108 may be embodied by one or more computing systems, such as apparatus 200 shown in FIG. 2 . As illustrated in FIG. 2 , the apparatus 200 may include a processor 202, a memory 204, input/output circuitry 206, communications circuitry 208, and migration module 210. The apparatus 200 may be configured to execute the operations described above with respect to FIG. 1 and below with respect to FIGS. 3 and 4 . Although these components 202-210 are described with respect to functional limitations, it should be understood that the particular implementations necessarily include the use of particular hardware. It should also be understood that certain of these components 202-210 may include similar or common hardware. For example, two sets of circuitry may both leverage use of the same processor, network interface, storage medium, or the like to perform their associated functions, such that duplicate hardware is not required for each set of circuitry. The use of the term “circuitry” as used herein with respect to components of the apparatus should therefore be understood to include particular hardware configured to perform the functions associated with the particular circuitry as described herein.
  • The term “circuitry” should be understood broadly to include hardware and, in some embodiments, software for configuring the hardware. For example, in some embodiments, “circuitry” may include processing circuitry, storage media, network interfaces, input/output devices, and the like. In some embodiments, other elements of the apparatus 200 may provide or supplement the functionality of particular circuitry. For example, the processor 202 may provide processing functionality, the memory 204 may provide storage functionality, the communications circuitry 208 may provide network interface functionality, and the like.
  • In some embodiments, the processor 202 (and/or co-processor or any other processing circuitry assisting or otherwise associated with the processor) may be in communication with the memory 204 via a bus for passing information among components of the apparatus. The memory 204 may be non-transitory and may include, for example, one or more volatile and/or non-volatile memories. In other words, for example, the memory may be an electronic storage device (e.g., a computer readable storage medium). The memory 204 may be configured to store information, data, content, applications, instructions, or the like, for enabling the apparatus to carry out various functions in accordance with example embodiments of the present invention.
  • The processor 202 may be embodied in a number of different ways and may, for example, include one or more processing devices configured to perform independently. Additionally or alternatively, the processor may include one or more processors configured in tandem via a bus to enable independent execution of instructions, pipelining, and/or multithreading. The use of the term “processing circuitry” may be understood to include a single core processor, a multi-core processor, multiple processors internal to the apparatus, and/or remote or “cloud” processors.
  • In an example embodiment, the processor 202 may be configured to execute instructions stored in the memory 204 or otherwise accessible to the processor. Alternatively or additionally, the processor may be configured to execute hard-coded functionality. As such, whether configured by hardware or software methods, or by a combination thereof, the processor may represent an entity (e.g., physically embodied in circuitry) capable of performing operations according to an embodiment of the present invention while configured accordingly. Alternatively, as another example, when the processor is embodied as an executor of software instructions, the instructions may specifically configure the processor to perform the algorithms and/or operations described herein when the instructions are executed.
  • In some embodiments, the apparatus 200 may include input/output circuitry 206 that may, in turn, be in communication with processor 202 to provide output to the user and, in some embodiments, to receive an indication of a user input. The input/output circuitry 206 may comprise a user interface and may include a display and may comprise a web user interface, a mobile application, a client device, a kiosk, or the like. In some embodiments, the input/output circuitry 206 may also include a keyboard, a mouse, a joystick, a touch screen, touch areas, soft keys, a microphone, a speaker, or other input/output mechanisms. The processor and/or user interface circuitry comprising the processor may be configured to control one or more functions of one or more user interface elements through computer program instructions (e.g., software and/or firmware) stored on a memory accessible to the processor (e.g., memory 204, and/or the like).
  • The communications circuitry 208 may be any means such as a device or circuitry embodied in either hardware or a combination of hardware and software that is configured to receive and/or transmit data from/to a network and/or any other device, circuitry, or module in communication with the apparatus 200. In this regard, the communications circuitry 208 may include, for example, a network interface for enabling communications with a wired or wireless communication network. For example, the communications circuitry 208 may include one or more network interface cards, antennae, buses, switches, routers, modems, and supporting hardware and/or software, or any other device suitable for enabling communications via a network. Additionally or alternatively, the communication interface may include the circuitry for interacting with the antenna(s) to cause transmission of signals via the antenna(s) or to handle receipt of signals received via the antenna(s).
  • Migration module 210 includes hardware configured to provide a configurable and incremental database migration framework for heterogeneous databases and perform/facilitate database (e.g., heterogeneous database) migration. The migration module 210 may utilize processing circuitry, such as the processor 202, to perform these actions. The migration module 210 may receive the data via a network interface provided by the communications circuitry 208. However, it should also be appreciated that, in some embodiments, the migration module 210 may include a separate processor, specially configured field programmable gate array (FPGA), or application specific interface circuit (ASIC) to perform the database migration and/or provide database migration framework. The migration module 210 is therefore implemented using hardware components of the apparatus configured by either hardware or software for implementing these planned functions.
  • As will be appreciated, any such computer program instructions and/or other type of code may be loaded onto a computer, processor or other programmable apparatus's circuitry to produce a machine, such that the computer, processor other programmable circuitry that execute the code on the machine create the means for implementing various functions, including those described herein.
  • It is also noted that all or some of the information presented by the example displays discussed herein can be based on data that is received, generated and/or maintained by one or more components of apparatus 200. In some embodiments, one or more external systems (such as a remote cloud computing and/or data storage system) may also be leveraged to provide at least some of the functionality discussed herein.
  • As described above and as will be appreciated based on this disclosure, embodiments of the present invention may be configured as methods, mobile devices, backend network devices, and the like. Accordingly, embodiments may comprise various means including entirely of hardware or any combination of software and hardware. Furthermore, embodiments may take the form of a computer program product on at least one non-transitory computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. Any suitable computer-readable storage medium may be utilized including non-transitory hard disks, CD-ROMs, flash memory, optical storage devices, or magnetic storage devices.
  • Exemplary Operations for Implementing Embodiments of the Present Invention
  • In some embodiments, the system may be configured to a configurable and incremental database migration framework to facilitate heterogeneous database migration. FIGS. 3 and 4 illustrate exemplary processes for receiving, for example, user input identifying at least one source database and one destination database, and, upon reception of a command, performing heterogeneous database migration. FIG. 3 shows an example method that may be executed by one or more machines, for example by apparatus 200, including migration module 210 of FIG. 2 , for facilitating database migration, in accordance with some embodiments discussed herein.
  • Providing a Configurable and Incremental Database Migration Framework
  • FIG. 3 illustrates a flow diagram depicting an example of a process 300 for facilitating database migration in accordance with embodiments of the present invention. The process illustrates how, upon reception of information related to source database(s) and destination (or target database(s)), a query may be generated and database migration may be performed. The process 300 may be performed by an apparatus, such as the apparatus 200 described above with respect to FIG. 2 .
  • As shown in block 310 of FIG. 3 , an apparatus, such as apparatus 200, may be configured for checking or otherwise confirming connectivity or accessibility to one or more databases, including in some embodiments, a source database 320 and a destination database 330. For example, the apparatus may be configured to confirm connectivity via any network connection (e.g., WIFI, hardwired or cellular). In some embodiments, to confirm connectivity/accessibility, as shown in block 340 of FIG. 3 , the apparatus, such as apparatus 200, may be configured for accessing, receiving, or otherwise determining connection related information for each of a plurality of databases, including, for example, a first database having a first database type (e.g., the first database being a source database and the first database type being the type of database) and a second database having a second database type (e.g., the second database being a destination database and the second database type being the type of the second database). In some embodiments, block 310 may involve checking three or more connections and block 340 may include additional database types. For example, the apparatus may support heterogeneous database migration from a source database to a plurality of destination database or, in some embodiments, from a plurality of source databases to one or more destination databases. While the description refers to a source database and source database type, one of ordinary skill in the art would appreciate that the present invention may facilitate database migration from, for example, CSV, XML, or JSON files as well as any standard that facilitates data interchange.
  • Once the apparatus is provided with connection information to each database and has confirmed connectivity/accessibility, the process 300 proceeds to block 350, where a query may be generated. That is, as shown in block 350 of FIG. 3 , an apparatus, such as 200, may be configured for framing a query. The query may be framed based on types of databases involved in the data migration. For example, the query may be a function of the first database type and the second database type. Where more than one source database and/or more than one destination databases are involved, in some embodiments, a plurality of queries may be framed. That is, each query may be directed to a particular source database, a particular destination database, or in some embodiments, to a particular combination of a particular source database and a particular destination database.
  • In some embodiments, framing the query may involve determining configuration data to generate a mapping. As shown in block 355 of FIG. 3 , an apparatus, such as 200, may be configured for determining configuration data to generate a mapping. That is, a process of data migration may comprise analyzing the source database and the target database to produce configuration data, the configuration data being used for generating a mapping of the source database to a target database, which may enable the migration of, for example, at least one table, or portion thereof, from the source database to the target database.
  • Block 360 shows the mapping process. For example, as shown, for each of a plurality of tables in the target database (i.e. a target table), the source tables/columns are identified. Specifically, as shown, for each of N target tables, the sources table and columns are identified in the mapping process. Once the query is framed, the query is executed. As shown in block 370 of FIG. 3 , an apparatus, such as 200, may be configured for executing query and/or fetching data, from, for example, source database 320. Subsequently, as shown in block 375 of FIG. 3 , an apparatus, such as 200, may be configured for using user defined function(s) to process data. For example, as shown in more detail below and in particular in FIG. 5 , the apparatus may be configured for supporting various user defined functions such as supporting constant values, manipulating values of specified fields, identifying multiple source databases, parallel execution, and maintaining referential integrity. That is, as shown in block 380 of FIG. 3 , an apparatus, such as 200, may be configured for determining function(s) to process in data in required format and as shown in block 385 of FIG. 3 , an apparatus, such as 200, may be configured for determining functions ranging from constant to formulae.
  • After querying the source database(s) and processing the data utilizing the user defined functions, the data may be, for example, converted into a format consistent with insertion into the destination database(s). That is, as shown in block 390 of FIG. 3 , an apparatus, such as 200, may be configured for framing data into, for example, SQL insert format. Finally, as shown in block 395 of FIG. 3 , an apparatus, such as 200, may be configured for storing the data in target database 330. In some embodiments, the insert format is achieved by identifying the source database type and converting the data to that of destination database type by, for example, calling one of a plurality of functions, each function configured for converting data of one type to another. For example, a first function that is called when JSON data is being migrated to MySQL, a second for when MySQL is being migrated to PostgreSQL, etc. For example, in an embodiment in which source data is of a first type (e.g., JSON), the configuration file may comprise a flag or the like stating “is the input file of the first file type”, and if yes or in an instance in which a yes is returned, while running the migration program, a function may be called which, for example, takes the file name as an input and within the function, the data of the first file type is transferred or written directly to the target database. The function name will be similar to processSQLFile similar like processJSONFile
  • public function processJSONFile($SQLFileName){
    ...
    ...
    ...
    }
  • Database Migration
  • FIG. 4 illustrates a flow diagram depicting an example of a process 400 for facilitating database migration in accordance with embodiments of the present invention. Specifically, process 400 illustrates an embodiment in which a configurable and incremental database migration framework may be used to perform heterogeneous database migration. The process 400 may be performed by an apparatus, such as the apparatus 200 described above with respect to FIG. 2 and database connection/data migration may take place via any network connection (e.g., WIFI, hardwired or cellular).
  • As will be shown below, a migration configuration file may be utilized to identify source database(s) and destination databases, the migration configuration file comprises information identifying one or more source databases and one or more destination databases. To generate the migration configuration file, database connection information may be first received. As shown in block 410 of FIG. 4 , an apparatus, such as apparatus 200, may be configured for receiving source database connection information. As shown in block 420 of FIG. 4 , an apparatus, such as apparatus 200, may be configured for receiving destination database connection information. In some embodiments, in an instance in which data may be migrated to (and/or from) a plurality of databases, one or more destination database connections (and/or one or more source database connections) may be specified. In an exemplary embodiment, to receive the source and/or destination database connection information, the apparatus may be configured to provide, for display at a user device, a user interface comprised of user-fillable and/or user-selectable portions. For example, the user interface may be configured to display user-fillable and/or user-selectable portions configured to receive information regarding a username and password. The apparatus may then be configured to receive and subsequently store the user input. For example, a user may input the username and password, which the apparatus subsequently stores in a migration configuration file. In some embodiments, as shown in FIG. 3 above, the apparatus may be configured to check the database configuration information to, for example, confirm accessibility.
  • As shown in block 430 of FIG. 4 , an apparatus, such as apparatus 200, may be configured for accessing, for example, the migration configuration file, to read and/or identify connection information for the one or more source database(s) and one or more destination database(s). As shown in block 440 of FIG. 4 , an apparatus, such as apparatus 200, may be configured for reading migration configuration file (e.g., migration configuration.php). In some embodiments, the migration configuration file generated may be generated locally, whereas in other embodiments, the migration configuration file may be generated at a remote server. Similarly, the migration configuration file may be stored locally, whereas in other embodiments, the migration configuration file may be stored remotely. That is, the migration configuration file may be generated and/or stored at the device at which the user is directing the process or at a remote server that, for example, hosts the heterogeneous database migration framework.
  • In some embodiments, a connection file may be different than the migration configuration file and may comprise connection related information (username, passwords, etc.) In an exemplary embodiment, security requirements may require generation and/or storage of one or both either locally or remotely. During execution, a call to one or both of the connection file or the migration configuration file may be made.
  • In some embodiments, the types of databases may be different. For example, a first database (i.e. the type of the first database) may be, for example, MySQL while the second database type (i.e. the type of the second database) may be, for example, PostgreSQL. While embodiments disclosed herein discuss various methods that may be employed in the event that the databases are of different types, it should be understood that the databases may also, in some embodiments, be of the same or similar type.
  • In an exemplary embodiment, a function in which the source database connection is defined as get_ID_connection( ) and the function in which the destination database connection(s) is defined as get_CD_connection( ) Specifically, the functions may be defined as
  • <?php
    function get_ID_connection( ) {
     $tw_mysql_db_hostname = “localhost”;
     $tw_mysql_db_username = “root”;
     $tw_mysql_db_password = “R00T321”;
     $tw_mysql_db_database = “webgroupon”;
     // Check TW DB connection
     $my_con = new mysqli($tw_mysql_db_hostname,
     $tw_mysql_db_username, $tw_mysql_db_password);
     $my_con→set_charset(‘utf8’);
     if ($my_con) {
      return $my_con;
     } else {
      echo “Connection failed with Indonesia
        database.”.$my_con→connect_error;
     }
    }
    function get_CD_connection( ) {
     //CD DB Config setting
     $cd_postgres_db_hostname = “localhost”;
     $cd_postgres_db_username = “stardeals”;
     $cd_postgres_db_password = “stardeals”;
     $cd_postgres_db_name=“t_stardeals_asia”;
     // Check CD DB connection
     $conn_string = “host=$cd_postgres_db_hostgame port=5432
        dbname=$cd_postgres_db_name
        user=$cd_postgres_db_username
     $pg_con = pg_connect($conn_string);
     if ($pg_con) {
       return $pg_con;
     } else {
       echo “Connection failed with CityDeals database.”;
     }
    }
  • As shown in block 450 of FIG. 4 , an apparatus, such as apparatus 200, may be configured for mapping tables and/or traversing each table and column level configuration. That is, details regarding source database configuration and/or destination database configuration may identified and implemented. As such, depending on one or more particular requirements, the apparatus may be configured to perform the source database configuration and/or destination database configuration. FIG. 5 shows a flow diagram depicts an example process 500 identifying a number of uses cases for which configuration may be performed, in accordance with embodiments of the present invention.
  • The process 500 may be performed by an apparatus, such as the apparatus 200 described above with respect to FIG. 2 . As shown in block 510 of FIG. 5 , an apparatus, such as apparatus 200, may be configured for migrating data from, for example, SQL, CSV, or JSON. For example, the apparatus may be configured to enable specification and/or specify a different input format to import data to the destination from a file.
  • ‘std_data.appdomains’ => array (
     ‘migrateData’ => true,
     ‘isSQLFile’ => true,
     ‘SQLFileName’ => “std_data——appdomains.sql”
    ),
  • As shown in block 520 of FIG. 5 , an apparatus, such as apparatus 200, may be configured for supporting a constant value. For example, as shown below, the apparatus may be configured to specify a constant value for some of the fields in configuration.
  • ‘u_appdomain_id’=>array(
     ‘mapping’=>’40’,
     ‘isConstant’=>true,
    ),
  • As shown in block 530 of FIG. 5 , an apparatus, such as apparatus 200, may be configured for supporting manipulation of values before migrating to the destination table. That is, for example, as shown below, the apparatus may be configured to apply one or more different functions and manipulate a value for each column for each row before inserting it into destination table.
  • ‘dm_merchant_welcome_message’=>array(
     ‘mapping’=>’webgroupon.companyinfo.companyinfo’,
     ‘function’=>’stripTo250’,
    ),
  • As shown in block 540 of FIG. 5 , an apparatus, such as apparatus 200, may be configured for supporting data from multiple databases. For example, as shown below, the apparatus may be configured to join tables, take data from different source database(s) and take selected fields to map to specified fields in the destination table.
  • ‘from’=>’FROM webgroupon.promo’,
    ‘join’=>’LEFT JOIN webgroupon.ptc_city_mapping ON
    webgroupon.pr
     . ‘LEFT JOIN webgroupon.auto_inc_mapping_deal_merchant
    ‘where’=>‘WHERE 1 AND webgroupon.promo.id_company = 1 ’ ,
    ‘order_by’=>’ORDER BY webgroupon.promo.id_promo DESC ‘,
  • As shown in block 550 of FIG. 5 , an apparatus, such as apparatus 200, may be configured for supporting parallel execution. For example, as shown below, the apparatus may be utilized to execute database migration in parallel in batch by, for example, applying a limit (e.g., to the number of parallel migrations), which may increase the speed of processing.
  • ‘from’=>’FROM webgroupon.purchase’,
    ‘join’=>’LEFT JOIN webgroupon.auto_inc_mapping_user ON
    webgroupon
     . ‘ LEFT JOIN webgroupon.auto_inc_mapping_city_deals
     ON webgroupon
     . ‘ LEFT JOIN webgroupon.paymenttrack ON
     webgroupon.paymenttrack
     . ‘ LEFT JOIN webgroupon.auto_inc_mapping_users_billing_history
     ON webgroupon
    ‘where’=>’WHERE 1’,
    //’order_by’=>’ORDER BY webgroupon.datauser.id DESC’,
    ‘limit’=>’LIMIT 0,5’,
  • As shown in block 560 of FIG. 5 , an apparatus, such as apparatus 200, may be configured for maintaining referential integrity for a primary and foreign key in the destination database. For example, as shown below, in some embodiments, the apparatus may be configured to create a temporary table to maintain a relation between a primary key in a source table and a destination table, which may be used to maintain referential integrity in destination table during migration.
  • ‘from’=>’FROM webgroupon.datauser’,
    //’join’=>’LEFT JOIN webgroupon.user_detaildata ON
    webgroupon.dataus
    ‘where’=>’WHERE 1’,
    ‘order_by’=>ORDER BY webgroupon.datauser.id_user DESC’,
    ‘limit’=>’LIMIT 0,5’,
    ‘auto_inc_mapping_table’=>’webgroupon.auto_inc_mapping_users’
  • In some embodiments, according to a mapping table, the apparatus may be configured to generate a query which may be configured to refer a primary key from a auto increment table (auto_inc_mapping_users).
  • A utility library (or function library) may be provided/utilized to define functions for utilization in migration configuration mapping which may be used to manipulate field values or in some embodiments, manipulate data values stored in a source database table or any data exchange formats (e.g., XML, JSON, CSV, etc.) in advance of causing storage of the data in the destination database table. The complexity of the manipulation can range from simple to more complex. For example, as show below, the function library may include a function to modify a birth date to a required format. Based on the source database type and the destination database type, the apparatus may be configured to determine whether to call this particular function. That is, where data migration is being performed and the apparatus identifies that particular information (e.g., a birth date) is stored in a first particular format in the source database, a function may be called in the mapping process to manipulate the field values so to be able to be stored in a second particular format as required by the destination database.
  • As also shown below, the function library may include a function to convert Taiwanese characters (e.g., a gender as indicated in TW) to a gender in English (e.g., M (male) or F (female)). Furthermore, the library may include a function, also shown below, that may be utilized to reduce the amount of characters to a given number (e.g., 250). As one of ordinary skill in the art would appreciate, the utility library may include any function enabling the manipulation of data from a source database to an insert format required by the destination database.
  • //Function to get the birthdate in required format
    function setUserBirthday(&$row) {
     if(!empty($row[‘skip_u_birthday_year’]) &&
       !empty($row[‘skip_u_birthday_month’]) &&
       !empty($row[‘skip_u_birthday_day’])
      $row[‘u_birthday’] = $row[skip_u_birthday_year’].’-
        ‘.$row[skip_u_birthday_month’].’-
        ‘.$row[skip_u_birthday_day’].
      }
      $row[‘u_birthday’] = ‘2014-04-23’;
      //$row[‘u_created’] = ‘2015-04-22 10:43:23.518456+00’;
     }
     //Function to convert TW gender to CD m / f value
     function setDefaultSex(&$row) {
      $row[‘u_sex’] = empty($row[‘u_sex’]) ? ‘m’ : $row[‘u_sex’];
      if(strlen($row[‘u_sex’]) != mb_strlen($row[‘u_sex’],
      ‘utf-8’)) {
      }
     }
     function stripTo250(&$row){
      $row[‘dm_merchant_welcome_message’] =
       substring($row[‘dm_merchant_welcome_message’], 0,
       250);
     }
  • Returning back to FIG. 4 , as shown in block 460 of FIG. 4 , an apparatus, such as apparatus 200, may be configured for creating/generating a query on each of one or more source database(s). As shown in block 470 of FIG. 4 , an apparatus, such as apparatus 200, may be configured for executing the query on the source database(s). As shown in block 480 of FIG. 4 , an apparatus, such as apparatus 200, may be configured for populating one or more temporary table(s) if, for example, table is having primary key to maintain referential integration. An example query is shown below and refers to a temporary table.
  •  SELECT qpod_full.auto_inc_mapping_users.new_auto_inc_id AS
    ucd_user_id, qpod_full.user_address.zip AS ucd_postal_code,
    qpod_full.user_address.city AS ucd_cityname,
    SUBSTRING(CONCAT(qpod_full.user_address.address1, “, “,
    qpod_full.user_address.address2), 1, 256) AS ucd_streetname,
    qpod_full.user_address.address1 AS ucd_street_number,
    SUBSTRING(qpod_full.user_address.tel, 1, 32) AS
    ucd_phone_number, qpod_full.user_address.reg_time AS
    ucd_last_modified, ‘false’ AS ucd_created FROM
    ucd_mobile_verificated, qpod_full.user_address.reg_time AS
    qpod_full.user_address JOIN qpod_full.auto_inc_mapping_users ON
    qpod_full.user_address.user_id =
    qpod_full.auto_inc_mapping_users.orig_auto_inc_id WHERE
    qpod_full.user_address.is_master = ‘YES’ AND
    qpod_full.user_address.is_pub =
    ‘YES’ AND (qpod_full.user_address.reg_time >= ‘2016-01-31
    00:00:00’) ORDER BY qpod_full.user_address.user_id ASC
  • As will be appreciated, computer program code and/or other instructions may be loaded onto a computer, processor or other programmable apparatus's circuitry to produce a machine, such that execution of the code on the machine by the computer, processor, or other circuitry creates the means for implementing various functions, including those described herein.
  • As described above and as will be appreciated based on this disclosure, embodiments of the present invention may be configured as methods, mobile devices, backend network devices, and the like. Accordingly, embodiments may comprise various means including entirely of hardware or a combination of software and hardware. Furthermore, embodiments may take the form of a computer program product on at least one computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. Any suitable computer-readable storage medium may be utilized, including non-transitory hard disks, CD-ROMs, flash memory, optical storage devices, magnetic storage devices, or the like.
  • Embodiments of the present invention have been described above with reference to block diagrams and flowchart illustrations of methods, apparatuses, systems and computer program products. It will be understood that each block of the circuit diagrams and process flowcharts, and combinations of blocks in the circuit diagrams and process flowcharts, respectively, can be implemented by various means including computer program instructions. These computer program instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the computer program product includes the instructions which execute on the computer or other programmable data processing apparatus create a means for implementing the functions specified in the flowchart block or blocks.
  • These computer program instructions may also be stored in a computer-readable storage device that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable storage device produce an article of manufacture including computer-readable instructions for implementing the function discussed herein. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus, thereby producing a computer-implemented process such that the instructions executed on the computer or other programmable apparatus cause performance of the steps and thereby implement the functions discussed herein.
  • Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the circuit diagrams and process flowcharts, and combinations of blocks in the circuit diagrams and process flowcharts, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
  • Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these embodiments of the invention pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the embodiments of the invention are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.

Claims (21)

1-21. (canceled)
22. An apparatus comprising at least one processor and at least one non-transitory memory having computer-coded instructions stored thereon that, in execution with the at least one processor, cause the apparatus to:
identify a migration configuration file associated with at least one source database and at least one destination database, wherein the migration configuration file comprises a first database type associated with the at least one source database and wherein the migration configuration file comprises a second database type associated with the at least one destination database, wherein the first database type differs from the second database type;
generate a plurality of queries based at least in part on the migration configuration file, wherein each query of the plurality of queries comprises a function for migration from at least a particular source database of the at least one source database to a particular destination database of the at least one destination database; and
execute the plurality of queries to perform migration from the at least one source database of the first database type to the at least one destination database of the second database type.
23. The apparatus according to claim 22, wherein the at least one source database comprises a first plurality of different database types, and wherein the at least one destination database comprises a second plurality of different database types, wherein the plurality of queries comprises a query associated with migration from a first database type of the first plurality of different database types to a second database type of the second plurality of different database types, and wherein the plurality of queries comprises a second query associated with migration from a third database type of the first plurality of different database types to a fourth database type of the second plurality of different database types.
24. The apparatus according to claim 22, the apparatus further caused to:
maintain a function for each combination of a first plurality of possible database types associated with the at least one source database and a second plurality of possible database types associated with the at least one destination database.
25. The apparatus according to claim 22, wherein the plurality of queries comprises at least a first query that migrates first data from a first source database of the at least one source database and second data from a second source database of the at least one source database to a first destination database of the at least one destination database, wherein the first source database and the second source database are different databases.
26. The apparatus according to claim 22, wherein the plurality of queries comprises at least a first query that migrates first data from a first table of a first source database of the at least one source database and second data from a second table of a second source database of the at least one source database to a first table of a first destination database of the at least one destination database.
27. The apparatus according to claim 22, the apparatus further caused to:
identify at least one supporting function based at least in part on the first database type associated with the at least one source database and the second database type associated with the at least one destination database; and
process migration data utilizing the at least one supporting function before the migration data is migrated to the at least one destination database.
28. The apparatus according to claim 22, wherein the apparatus accesses the at least one source database, the at least one destination database, or a combination of the at least one source database and the at least one destination database based at least in part on a connection file, and wherein the apparatus is further caused to:
maintain the connection file in a separate storage location from the migration configuration file.
29. A computer-implemented method comprising:
identifying a migration configuration file associated with at least one source database and at least one destination database, wherein the migration configuration file comprises a first database type associated with the at least one source database and wherein the migration configuration file comprises a second database type associated with the at least one destination database, wherein the first database type differs from the second database type;
generating a plurality of queries based at least in part on the migration configuration file, wherein each query of the plurality of queries comprises a function for migration from at least a particular source database of the at least one source database to a particular destination database of the at least one destination database; and
executing the plurality of queries to perform migration from the at least one source database of the first database type to the at least one destination database of the second database type.
30. The computer-implemented method according to claim 29, wherein the at least one source database comprises a first plurality of different database types, and wherein the at least one destination database comprises a second plurality of different database types, wherein the plurality of queries comprises a query associated with migration from a first database type of the first plurality of different database types to a second database type of the second plurality of different database types, and wherein the plurality of queries comprises a second query associated with migration from a third database type of the first plurality of different database types to a fourth database type of the second plurality of different database types.
31. The computer-implemented method according to claim 29, the computer-implemented method further comprising:
maintaining a function for each combination of a first plurality of possible database types associated with the at least one source database and a second plurality of possible database types associated with the at least one destination database.
32. The computer-implemented method according to claim 29, wherein the plurality of queries comprises at least a first query that migrates first data from a first source database of the at least one source database and second data from a second source database of the at least one source database to a first destination database of the at least one destination database, wherein the first source database and the second source database are different databases.
33. The computer-implemented method according to claim 29, wherein the plurality of queries comprises at least a first query that migrates first data from a first table of a first source database of the at least one source database and second data from a second table of a second source database of the at least one source database to a first table of a first destination database of the at least one destination database.
34. The computer-implemented method according to claim 29, the computer-implemented method further comprising:
identifying at least one supporting function based at least in part on the first database type associated with the at least one source database and the second database type associated with the at least one destination database; and
processing migration data utilizing the at least one supporting function before the migration data is migrated to the at least one destination database.
35. The computer-implemented method according to claim 29, the computer-implemented method further comprising:
accessing the at least one source database, the at least one destination database, or a combination of the at least one source database and the at least one destination database based at least in part on a connection file; and
maintaining the connection file in a separate storage location from the migration configuration file.
36. A computer program product comprising at least one non-transitory computer-readable storage medium having computer code stored thereon that, in execution with at least one processor, configures the computer program product for:
identifying a migration configuration file associated with at least one source database and at least one destination database, wherein the migration configuration file comprises a first database type associated with the at least one source database and wherein the migration configuration file comprises a second database type associated with the at least one destination database, wherein the first database type differs from the second database type;
generating a plurality of queries based at least in part on the migration configuration file, wherein each query of the plurality of queries comprises a function for migration from at least a particular source database of the at least one source database to a particular destination database of the at least one destination database; and
executing the plurality of queries to perform migration from the at least one source database of the first database type to the at least one destination database of the second database type.
37. The computer program product according to claim 36, wherein the at least one source database comprises a first plurality of different database types, and wherein the at least one destination database comprises a second plurality of different database types, wherein the plurality of queries comprises a query associated with migration from a first database type of the first plurality of different database types to a second database type of the second plurality of different database types, and wherein the plurality of queries comprises a second query associated with migration from a third database type of the first plurality of different database types to a fourth database type of the second plurality of different database types.
38. The computer program product according to claim 36, the computer program product further configured for:
maintaining a function for each combination of a first plurality of possible database types associated with the at least one source database and a second plurality of possible database types associated with the at least one destination database.
39. The computer program product according to claim 36, wherein the plurality of queries comprises at least a first query that migrates first data from a first source database of the at least one source database and second data from a second source database of the at least one source database to a first destination database of the at least one destination database, wherein the first source database and the second source database are different databases.
40. The computer program product according to claim 36, wherein the plurality of queries comprises at least a first query that migrates first data from a first table of a first source database of the at least one source database and second data from a second table of a second source database of the at least one source database to a first table of a first destination database of the at least one destination database.
41. The computer program product according to claim 36, the computer program product further configured for:
identifying at least one supporting function based at least in part on the first database type associated with the at least one source database and the second database type associated with the at least one destination database; and
processing migration data utilizing the at least one supporting function before the migration data is migrated to the at least one destination database.
US17/814,987 2016-03-30 2022-07-26 Configurable and incremental database migration framework for heterogeneous databases Pending US20230025934A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/814,987 US20230025934A1 (en) 2016-03-30 2022-07-26 Configurable and incremental database migration framework for heterogeneous databases

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662315086P 2016-03-30 2016-03-30
US15/473,091 US10909120B1 (en) 2016-03-30 2017-03-29 Configurable and incremental database migration framework for heterogeneous databases
US17/075,893 US11442939B2 (en) 2016-03-30 2020-10-21 Configurable and incremental database migration framework for heterogeneous databases
US17/814,987 US20230025934A1 (en) 2016-03-30 2022-07-26 Configurable and incremental database migration framework for heterogeneous databases

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US17/075,893 Continuation US11442939B2 (en) 2016-03-30 2020-10-21 Configurable and incremental database migration framework for heterogeneous databases

Publications (1)

Publication Number Publication Date
US20230025934A1 true US20230025934A1 (en) 2023-01-26

Family

ID=74260680

Family Applications (3)

Application Number Title Priority Date Filing Date
US15/473,091 Active 2037-08-27 US10909120B1 (en) 2016-03-30 2017-03-29 Configurable and incremental database migration framework for heterogeneous databases
US17/075,893 Active 2037-05-04 US11442939B2 (en) 2016-03-30 2020-10-21 Configurable and incremental database migration framework for heterogeneous databases
US17/814,987 Pending US20230025934A1 (en) 2016-03-30 2022-07-26 Configurable and incremental database migration framework for heterogeneous databases

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US15/473,091 Active 2037-08-27 US10909120B1 (en) 2016-03-30 2017-03-29 Configurable and incremental database migration framework for heterogeneous databases
US17/075,893 Active 2037-05-04 US11442939B2 (en) 2016-03-30 2020-10-21 Configurable and incremental database migration framework for heterogeneous databases

Country Status (1)

Country Link
US (3) US10909120B1 (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321337B2 (en) * 2018-06-04 2022-05-03 Cisco Technology, Inc. Crowdsourcing data into a data lake
US11308120B2 (en) * 2019-08-22 2022-04-19 Sap Se Automated performing of replication tasks in a multiple database system
US10855660B1 (en) * 2020-04-30 2020-12-01 Snowflake Inc. Private virtual network replication of cloud databases
US11232084B2 (en) * 2020-06-26 2022-01-25 Microsoft Technology Licensing, Llc Schema agnostic migration of delineated data between relational databases
CN113204541A (en) * 2021-05-28 2021-08-03 中国工商银行股份有限公司 Heterogeneous database data migration automatic correction method and device
CN113961625B (en) * 2021-10-27 2022-06-07 北京科杰科技有限公司 Task migration method for heterogeneous big data management platform
US11954531B2 (en) 2021-12-28 2024-04-09 Optum, Inc. Use of relational databases in ephemeral computing nodes
US20230367811A1 (en) * 2022-05-10 2023-11-16 T-Mobile Innovations Llc Methods and Systems for Efficient Data Importation for Data Visualization
US11789986B1 (en) 2022-06-14 2023-10-17 T-Mobile Innovations Llc Methods and systems for querying data within a geographical boundary using a query tool
US11934430B2 (en) 2022-07-14 2024-03-19 T-Mobile Innovations Llc Visualization of elevation between geographic locations using segmented vectors based on ground and clutter elevation data
CN116821217A (en) * 2023-05-30 2023-09-29 曙光云计算集团有限公司 Data distribution conversion method, device, equipment and storage medium
CN116821138B (en) * 2023-08-24 2023-12-15 腾讯科技(深圳)有限公司 Data processing method and related equipment
CN117056316B (en) * 2023-10-10 2024-01-26 之江实验室 Multi-source heterogeneous data association query acceleration method, device and equipment

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933837A (en) * 1997-05-09 1999-08-03 At & T Corp. Apparatus and method for maintaining integrated data consistency across multiple databases
US20080177770A1 (en) * 2006-05-02 2008-07-24 International Business Machines Corporation System and method for optimizing distributed and hybrid queries in imperfect environments
US20130152083A1 (en) * 2011-12-13 2013-06-13 Hitachi, Ltd. Virtual computer system and control method of migrating virtual computer
US20140244654A1 (en) * 2013-02-28 2014-08-28 International Business Machines Corporation Data migration
US20140365437A1 (en) * 2013-06-07 2014-12-11 Wipro Limited System and method for implementing database replication configurtions using replication modeling and transformation
US20150019479A1 (en) * 2013-07-09 2015-01-15 Oracle International Corporation Solution to generate a scriptset for an automated database migration
US20160012042A1 (en) * 2014-07-08 2016-01-14 Makesh Balasubramanian Converting Data Objects from Multi- to Single-Source Database Environment
US10185727B1 (en) * 2015-12-30 2019-01-22 Amazon Technologies, Inc. Migrating data between databases

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE509645C2 (en) * 1996-02-08 1999-02-15 Ericsson Telefon Ab L M A method for simultaneously verifying converted data simultaneously with protocol-based function change in a database
US5758337A (en) * 1996-08-08 1998-05-26 Microsoft Corporation Database partial replica generation system
US6151608A (en) * 1998-04-07 2000-11-21 Crystallize, Inc. Method and system for migrating data
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
US7620665B1 (en) * 2000-11-21 2009-11-17 International Business Machines Corporation Method and system for a generic metadata-based mechanism to migrate relational data between databases
US7165088B2 (en) * 2001-01-24 2007-01-16 Microsoft Corporation System and method for incremental and reversible data migration and feature deployment
US7457807B2 (en) * 2004-01-08 2008-11-25 Oco I, Inc. Data migration and analysis
US7555493B2 (en) * 2004-03-08 2009-06-30 Transreplicator, Inc. Apparatus, systems and methods for relational database replication and proprietary data transformation
US20050251812A1 (en) * 2004-04-27 2005-11-10 Convertabase, Inc. Data conversion system, method, and apparatus
US7707007B2 (en) * 2004-07-30 2010-04-27 International Business Machines Corporation Autonomic client migration system for service engagements
AR051014A1 (en) * 2004-08-24 2006-12-13 Geneva Software Technologies Ltd SYSTEM AND METHOD FOR MIGRATION OF A PRODUCT IN VARIOUS LANGUAGES
US7062624B2 (en) * 2004-09-29 2006-06-13 Hitachi, Ltd. Method for managing volume groups considering storage tiers
US20060235899A1 (en) * 2005-03-25 2006-10-19 Frontline Systems, Inc. Method of migrating legacy database systems
US20110110568A1 (en) * 2005-04-08 2011-05-12 Gregory Vesper Web enabled medical image repository
US9514163B2 (en) * 2005-11-17 2016-12-06 International Business Machines Corporation Database consolidation tool
US8375063B2 (en) * 2006-01-31 2013-02-12 International Business Machines Corporation Method and program product for migrating data from a legacy system
JP4931660B2 (en) * 2007-03-23 2012-05-16 株式会社日立製作所 Data migration processing device
US8185712B2 (en) * 2007-08-08 2012-05-22 International Business Machines Corporation System and method for intelligent storage migration
US7801908B2 (en) * 2007-09-19 2010-09-21 Accenture Global Services Gmbh Data mapping design tool
US8037108B1 (en) * 2009-07-22 2011-10-11 Adobe Systems Incorporated Conversion of relational databases into triplestores
US8869136B2 (en) * 2011-01-05 2014-10-21 International Business Machines Corporation Calculating migration points for application migration
US9430505B2 (en) * 2011-04-18 2016-08-30 Infosys Limited Automated data warehouse migration
US8812448B1 (en) * 2011-11-09 2014-08-19 Access Sciences Corporation Computer implemented method for accelerating electronic file migration from multiple sources to multiple destinations
US8407237B1 (en) * 2011-12-20 2013-03-26 Sap Ag System and method of connecting legacy database applications and new database systems
WO2013171794A1 (en) * 2012-05-17 2013-11-21 Hitachi, Ltd. Method of data migration and information storage system
US9229942B1 (en) * 2012-12-11 2016-01-05 Emc Corporation Method and system for hard link handling for incremental file migration
US9122716B1 (en) * 2012-12-13 2015-09-01 Shoretel, Inc. Database upgrade management
US9436712B2 (en) * 2013-03-14 2016-09-06 Microsoft Technology Licensing, Llc Data migration framework
US9176997B2 (en) * 2013-06-28 2015-11-03 Sap Se Universe migration from one database to another
US10162826B2 (en) * 2013-10-31 2018-12-25 Oracle International Corporation UOA migration
US10585862B2 (en) * 2014-02-28 2020-03-10 Red Hat, Inc. Efficient data migration with reversible database schema modification
EP2996025B1 (en) * 2014-09-11 2018-04-25 Datadobi CVBA Data migration tool with intermediate incremental copies
US9513835B2 (en) * 2015-01-09 2016-12-06 International Business Machines Corporation Impact-based migration scheduling from a first tier at a source to a second tier at a destination
US10169345B2 (en) * 2015-03-24 2019-01-01 Quantum Corporation Moving data from linear tape file system storage to cloud storage
US10216744B2 (en) * 2015-05-01 2019-02-26 Microsoft Technology Licensing, Llc Data migration to a cloud computing system
US10089371B2 (en) * 2015-12-29 2018-10-02 Sap Se Extensible extract, transform and load (ETL) framework
US10162612B2 (en) * 2016-01-04 2018-12-25 Syntel, Inc. Method and apparatus for inventory analysis

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933837A (en) * 1997-05-09 1999-08-03 At & T Corp. Apparatus and method for maintaining integrated data consistency across multiple databases
US20080177770A1 (en) * 2006-05-02 2008-07-24 International Business Machines Corporation System and method for optimizing distributed and hybrid queries in imperfect environments
US20130152083A1 (en) * 2011-12-13 2013-06-13 Hitachi, Ltd. Virtual computer system and control method of migrating virtual computer
US20140244654A1 (en) * 2013-02-28 2014-08-28 International Business Machines Corporation Data migration
US20140365437A1 (en) * 2013-06-07 2014-12-11 Wipro Limited System and method for implementing database replication configurtions using replication modeling and transformation
US20150019479A1 (en) * 2013-07-09 2015-01-15 Oracle International Corporation Solution to generate a scriptset for an automated database migration
US20160012042A1 (en) * 2014-07-08 2016-01-14 Makesh Balasubramanian Converting Data Objects from Multi- to Single-Source Database Environment
US10185727B1 (en) * 2015-12-30 2019-01-22 Amazon Technologies, Inc. Migrating data between databases

Also Published As

Publication number Publication date
US20210109934A1 (en) 2021-04-15
US10909120B1 (en) 2021-02-02
US11442939B2 (en) 2022-09-13

Similar Documents

Publication Publication Date Title
US11442939B2 (en) Configurable and incremental database migration framework for heterogeneous databases
US11468406B2 (en) Method of converting language-based written contract to smart legal contract using natural language processing
US9959311B2 (en) Natural language interface to databases
US11561972B2 (en) Query conversion for querying disparate data sources
RU2699400C2 (en) Automatic intelligent collection and data revise
WO2019134340A1 (en) Salary calculation method, application server, and computer readable storage medium
CN107679057B (en) Data interconnection method, device, server and storage medium
US10042921B2 (en) Robust and readily domain-adaptable natural language interface to databases
US10592993B2 (en) Computerized transaction management module for blockchain networks
CN111427971B (en) Business modeling method, device, system and medium for computer system
US10725799B2 (en) Big data pipeline management within spreadsheet applications
US20170235713A1 (en) System and method for self-learning real-time validation of data
US11714812B2 (en) System for augmenting and joining multi-cadence datasets
CN111857674A (en) Business product generation method and device, electronic equipment and readable storage medium
US20180374047A1 (en) Computing framework for compliance report generation
KR20200119176A (en) System, apparatuses, and methods of processing and managing web traffic data
WO2021013057A1 (en) Data management method and apparatus, and device and computer-readable storage medium
CN115858487A (en) Data migration method and device
CN113095806B (en) Work order processing method and device, electronic equipment and computer readable storage medium
US12019647B2 (en) Accessing application services from forms
US11386108B2 (en) Mining data transformation flows in spreadsheets
CN111275436A (en) Method and terminal for processing information
US20160070608A1 (en) Sharing a partitioned data set across parallel applications
US12008017B2 (en) Replicating data across databases by utilizing validation functions for data completeness and sequencing
CN111914065B (en) Short message content verification method, device, computer system and computer readable medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: GROUPON, INC., ILLINOIS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BHOGARAJU, PHANI KUMAR;MODI, CHIRAG;MOHAMAD, AZMATH;SIGNING DATES FROM 20170412 TO 20170413;REEL/FRAME:060625/0217

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

AS Assignment

Owner name: BYTEDANCE INC., DELAWARE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GROUPON, INC.;REEL/FRAME:068538/0001

Effective date: 20240226