当前位置: 首页 > 科技观察

如何将SQL数据库迁移到NoSQL_0

时间:2023-03-17 16:07:26 科技观察

【.com快速翻译】你知道关系型数据库(RDBMS)和NoSQL数据库的本质区别和适用场景吗?一般来说,RDBMS主要管理、存储和操作结构化数字化数据。其中,数据格式、列、数据类型、属性和模式都是固定的。并且实体之间的关系也基本一致。在使用RDBMS存储事务性数据或记录时,底层数据库不仅要保证事务的ACID(原子性、一致性、隔离性、持久性),还需要注意数据的安全性和可访问性。RDBMS的典型应用场景包括:金融交易记录、OLTP、ERP、CRM系统、电子商务应用。而SQL是处理RDBMS时常用的查询语言。NoSQL(有时也称为非SQL或非关系)数据库是适合管理非关系数据的数据库(即:具有固定的数据类型格式和变量,但不是表格格式的结构化数据)。NoSQL数据库有多种类型,例如:键值、基于文档、基于列和基于图形。NoSQL更适用于非结构化数据具有可扩展性和优异性能的场景。近年来,随着技术的发展,虽然一些图数据库也提供了事务在存储时需要遵循的ACID属性,但仍处于完善的早期阶段。NoSQL的典型数据是各种数据流、文档、聊天消息和大数据。它们往往来自内容管理、个性化网络搜索引擎、机器学习、物联网边缘设备以及来自不同来源的大量用户配置文件的存储。在这里,我们先对两种数据库的特点进行比较总结如下:随着业务的发展和各种需求的出现,很多企业需要将现有的RDBMS数据库迁移到NoSQL上,以实现业务的可扩展性和性能的动态调优。从上面的对比表可以看出,从RDBMS数据源迁移到NoSQL数据库的优势主要体现在:成本、收益、性能、可扩展性、变化、减少人工转换工作量、广泛支持分析等方面。目前,ApacheCassandra和MongoDB是使用最广泛的NoSQL数据库。Atlas是MongoDB提供的DBaaS(数据库即服务)。但是,目前支持将RDBMS迁移到MongoDB或Cassandra的工具并不多。当然,我们也可以使用ETL工具或者自定义转换引擎来实现这种复杂的迁移。此外,云服务提供商提供的专有数据库有:AzureCosmosDB、AWSDynamoDB和GoogleCloudSpanner。这些云服务提供商通常能够提供全面的架构、广泛的支持能力、文档和数据迁移工具。因此,与Cassandra或MongoDB相比,设置和迁移到新的DynamoDB或CosmosDB实例所需的工作更少。当然,Azure和AWSNoSQL服务在业界比谷歌更受欢迎。下面,我们将讨论如何使用云服务提供商提供的各种工具选项将RDBMS迁移或转换为NoSQL数据库。1.AWSDatabaseMigrationService(AWSDMS,https://aws.amazon.com/dms),一个从传统RDBMSDB到AWSDynamoDB的迁移工具,可以将数据从各种广泛使用的商业RDBMS和开源数据库,迁移到同类相似的数据库,或者异构的数据库平台,以及AWS的DBaaS平台(RDS)。AWSSchemaConversionTool(SCT)的对象映射功能可用于在迁移过程中将原始数据重组为目标DynamoDB所需的数据结构。对于复杂的转换,我们可以使用Lambda函数。当然,业界也有很多开源工具,可以将数据库表转换成JSON对象,然后将这些JSON对象导入到NoSQL数据库中。以下是特定迁移的一些有用链接:从RDBMS到DynamoDB-https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.DynamoDB.html从Oracle到DynamoDB-https://aws.amazon。com/blogs/database/aws-database-migration-service-and-amazon-dynamodb-what-you-need-to-know/从Cassandra到DynamoDB-https://aws.amazon.com/blogs/database/migrate-apache-cassandra-databases-to-amazon-dynamodb-more-easily/从MongoDB到DynamoDB-https://aws.amazon.com/blogs/database/performing-a-live-migration-from-a-mongodb-集群到亚马逊dynamodb/2。从RDBMSDB到AzureCosmosDB的迁移工具AzureCosmosDB模拟器和AzureCosmosDB数据迁移工具,可以将CSV或JSON对象格式的源数据从MSSQL数据库迁移到CosmosDB。Azure数据库迁移服务(DMS)、CosmosDB和MongoDB的API可用于将MongoDB迁移到CosmosDB。AzureDMS、CosmosDB、CassandraAPI和cqlsh命令实用程序可用于将Cassandra迁移到CosmosDB。为了从MSSQL以外的其他RDBMS转换,微软建议用户使用第三方工具,例如Blitzz.io。AzureDMS、AzureSQLServerMigrationAssistant(SSMA)和Ora2Pg也可用于关系RDBMS和MSSQL或AzureDBaaS平台之间的同构和异构迁移。当然,用户在使用上述工具进行迁移之前,需要有一个AzureCosmosDB订阅账号。以下是特定迁移操作的一些有用链接:从MSSQL到CosmosDB-https://docs.microsoft.com/en-us/azure/cosmos-db/import-data从Oracle到CosmosDB-https://docs.microsoft.com/en-us/azure/cosmos-db/oracle-migrate-cosmos-db-blitzzMongoDB到CosmosDB-https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb-introductionFromCassandratoCosmosDB-https://datamigration.microsoft.com/scenario/cassandra-to-cosmos?step=1#migrating-from-cassandra3.从SQL迁移到GoogleDataStoreGoogle提供的NoSQL服务包括云数据存储和Bigtable。其中,CloudDatastore已更新升级为Firestore服务。对于从RDBMS数据库或其他NoSQL平台迁移到Firestore或Bigtable,Google没有很多现成的工具和文档支持。我们只能依靠Google托管的RDBMSCloudSQL的内置能力,将各种传统的RDBMS迁移到CloudSQL。上面提到的另一个托管RDBMS——CloudSpanner,需要手动迁移。Google的迁移操作可以参考链接--https://cloud.google.com/solutions/database-migration/technical-resources/Summary今天,除了直接从SQL数据迁移到NoSQL数据库外,很多组织都在也将传统的大规模数据存储迁移到由文件存储、NoSQL数据库和SQL数据库组成的数据湖模型,方便存储挖掘和大数据分析。综上所述,关系数据库和NoSQL数据库适用于不同类型的作业和存储需求。在设计数据库时,架构师必须考虑成本因素、高可用性(HA)设计、灾难恢复(DR)机制以及数据存储和检索的复杂性。如果您想了解更多相关信息,请参考以下两个链接:NoSQL和关系数据库,何时以及如何使用它们?-https://dzone.com/articles/nosql-vs-relational-databases-when-to-use-what数据库迁移挑战-https://dzone.com/articles/database-migration-challenges原标题:SQLvsNoSQLandSQLtoNoSQLMigration,作者:SandeepTol转载请注明原文译者及出处为.com]