{{announcement.body}}
{{announcement.title}}

What Is Data Migration?

DZone 's Guide to

What Is Data Migration?

While it can be a pain in the neck, you'll probably have to migrate your data at some point. In this post, we go over the basics you should be aware of.

· Big Data Zone ·
Free Resource

Data Migration Defined

Data migration is simply the process of moving data from a source system to a target system. Companies have many different reasons for migrating data. You may want to migrate data when you acquire another company and you need to integrate that company's data. Or, you may want to integrate data from different departments within your company so the data is available across your entire business. You may want to move your data from an on-premise platform to a cloud platform. Or, perhaps you're moving from an outdated data storage system to a new database or data storage system. The concept of data migration is simple, but it can sometimes be a complex process.

Data Migration Challenges

Data migration is a necessary part of business, but many companies find the following aspects of migration to be a challenge.

Data Cleansing. The data might be in different formats and come from various sources, including RDBMS, other types of databases, S3 buckets, CSVs, or from streams. Since the data comes from different places, it needs to be cleansed, normalized, or transformed in a way that allows you to analyze it together with data from other sources.

Planning your data model. You may need to change your data model as part of your migration process. You may be moving from an on-premise data warehouse to a cloud-based data warehouse or moving from relational data to a mix of structured and unstructured data. Or, you may even simply be moving data from one relational database to another.

Security. Security is critical during and after migration. What's more, if you want to migrate sensitive data, it is subject to compliance requirements, which can be hard to support during the migration process.

Ways to Migrate Data

There are a number of different methods that can be used to migrate data.

Exporting and Importing. When you export and import, you export the data in a neutral format, such as CSV (comma separated value) files, and then modify the files so that they are in the expected format before importing it into the target database. This is the slowest method of data migration because the work of altering the data types and structures must be done manually by a data scientist.

Scripting. In this case, you would write a script to transform the data into a suitable format for the target data warehouse or store. This is faster than the process of manually exporting and importing, but it is still a very tedious process because you would likely need to write a different script for each source and target.

Using a traditional ETL tool. You might use a third-party ETL tool to move the data. ETL tools are designed to extract, transform, and load the data efficiently. These tools are built to load data from numerous sources into a variety of targets, and they are designed to process large volumes of data. However, not all ETL tools are built equally. Many require the data to be moved in batches and are designed primarily for relational databases, whereas numerous data sources these days are unstructured. In addition, they often have very strict rules and expectations about the data, forcing you to reprocess all your data if something changes in the schema, source, or target.

Using a modern ETL tool. Modern ETL tools can process data in real time rather than in batches. They are flexible enough to handle a range of sources and targets, and the mappings can be modified on the fly to accommodate changes to your company's needs. Additionally, they can scale up or down depending on changing throughput.

Topics:
big data ,data migration ,data migration challenges

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}