如何将Oracle数据库模式、表和过程迁移到Cassandra?有什么工具可以做这项工作吗?
x6492ojm1#
没有一种直接的方法来迁移数据,因为Oracle的关系模型与规范化的表不适合像Cassandra这样的数据库。企业选择Cassandra是因为它可以通过非常快的读写操作互联网规模。为了实现这一点,每个表都针对读取进行了优化,使得数据存储在去规范化的表中。在迁移数据之前,您需要对数据进行建模。在高层次上,这涉及:
步骤1-列出所有应用程序查询。步骤2-对于每个应用程序查询,设计一个表,以便根据查询中的过滤器对数据进行分区。步骤3-对于Cassandra中的每个表,从Oracle导出/卸载相关数据,然后批量加载到Cassandra。
例如,如果应用程序需要根据电子邮件地址获取用户的详细信息,我们需要设计一个按电子邮件分区的表,如下所示:
CREATE TABLE users_by_email ( email text, name text, username text, phone text, address text, ... PRIMARY KEY (email) )
使用此表模式,可以使用以下命令查询表:
SELECT * FROM users_by_email WHERE email = ?
如果应用程序需要根据用户名检索用户的详细信息,我们需要设计一个表,而不是像这样按用户名分区:
CREATE TABLE users_by_username ( username text, name text, email text, phone text, address text, ... PRIMARY KEY (username) )
并使用以下命令查询它:
SELECT * FROM users_by_username WHERE username = ?
使用反规范化,它确实意味着数据在多个表中重复,因此它是磁盘空间与读取性能之间的权衡。完成Cassandra的数据模型后,可以通过多种方式迁移数据。以下是可能的解决方案的简短列表:1.将数据从Oracle导出到CSV文件,然后使用DataStax Bulk Loader (DSBulk)批量加载到Cassandra。1.编写一个Spark作业,从Oracle读取数据,转换数据以匹配Cassandra模式,然后使用Spark Cassandra connector加载数据。1.编写一个Java应用程序(或您选择的语言),从Oracle读取并写入Cassandra。如果您决定使用CSV,这里有一些DSBulk资源,其中包含示例,可以帮助您快速入门:
DSBulk是开源的,所以可以免费使用。干杯!干杯!
xbp102n02#
不,没有工具,因为它不能自动完成,只有模式,你缺乏一些强制性的信息。要使用Cassandra构建一个良好的数据模型,您需要了解应用程序查询,因为它基于WHERE子句,您将创建主键。我为Pet Clinic Spring Application做了这件事,并为那些对流程和方法感兴趣的人创建了一个研讨会
在Cassandra.....
Set
List
Map
在重新设计架构之后,您可以考虑将数据从Oracle迁移到Cassandra。有多种方法可以做到这一点:
JdbcIO
CassandraIO
2条答案
按热度按时间x6492ojm1#
没有一种直接的方法来迁移数据,因为Oracle的关系模型与规范化的表不适合像Cassandra这样的数据库。
企业选择Cassandra是因为它可以通过非常快的读写操作互联网规模。为了实现这一点,每个表都针对读取进行了优化,使得数据存储在去规范化的表中。
在迁移数据之前,您需要对数据进行建模。在高层次上,这涉及:
步骤1-列出所有应用程序查询。
步骤2-对于每个应用程序查询,设计一个表,以便根据查询中的过滤器对数据进行分区。
步骤3-对于Cassandra中的每个表,从Oracle导出/卸载相关数据,然后批量加载到Cassandra。
例如,如果应用程序需要根据电子邮件地址获取用户的详细信息,我们需要设计一个按电子邮件分区的表,如下所示:
使用此表模式,可以使用以下命令查询表:
如果应用程序需要根据用户名检索用户的详细信息,我们需要设计一个表,而不是像这样按用户名分区:
并使用以下命令查询它:
使用反规范化,它确实意味着数据在多个表中重复,因此它是磁盘空间与读取性能之间的权衡。
完成Cassandra的数据模型后,可以通过多种方式迁移数据。以下是可能的解决方案的简短列表:
1.将数据从Oracle导出到CSV文件,然后使用DataStax Bulk Loader (DSBulk)批量加载到Cassandra。
1.编写一个Spark作业,从Oracle读取数据,转换数据以匹配Cassandra模式,然后使用Spark Cassandra connector加载数据。
1.编写一个Java应用程序(或您选择的语言),从Oracle读取并写入Cassandra。
如果您决定使用CSV,这里有一些DSBulk资源,其中包含示例,可以帮助您快速入门:
DSBulk是开源的,所以可以免费使用。干杯!干杯!
xbp102n02#
不,没有工具,因为它不能自动完成,只有模式,你缺乏一些强制性的信息。
要使用Cassandra构建一个良好的数据模型,您需要了解应用程序查询,因为它基于WHERE子句,您将创建主键。
我为Pet Clinic Spring Application做了这件事,并为那些对流程和方法感兴趣的人创建了一个研讨会
高级别原则
在Cassandra.....
Set
,List
,Map
),因此某些一对多关系可以在同一个表中完成。移动数据
在重新设计架构之后,您可以考虑将数据从Oracle迁移到Cassandra。有多种方法可以做到这一点:
JdbcIO
作为输入,CassandraIO
作为输出。