如何将mysql数据传输到cassandra数据库?

时间:2015-08-11 04:25:19

标签: cassandra cassandra-2.0 database nosql

我在生产端运行mysql服务器,目前有200 GB的数据。现在管理mysql服务器非常困难,因为它正在逐渐增长。我听说过很多关于cassandra的事情,我就此做了POC。 Cassandra提供高可用性和最终一致的数据。 Cassandra非常适合我们的要求。现在的问题是如何将所有mysql数据传输到cassandra数据库。

由于MYSQL是关系数据库而cassandra是NOSQL。如何将MYSQL表及其关系表映射到cassandra表。

3 个答案:

答案 0 :(得分:0)

您可以使用spark将数据从mysql迁移到cassandra。 spark与mysql以及cassandra有连接。首先,根据您的要求在cassandra中创建模型,然后从mysql中提取所有数据,完成一些转换后,您可以直接在cassandra中推送数据。

答案 1 :(得分:0)

直接将关系数据传输到Cassandra是不可能的。你必须对其进行非规范化。但是,请注意,一些反规范化的查询和方法是反模式。首先通过这些免费课程:

如果您在Cassandra的关系数据数据模型设计中失败,您将无法获得Cassandra提供的不错功能。例如,您不会获得水平可伸缩性(您可能在您的claster中有热点)或高可靠性(对于某些查询,可能会发生构建响应所需的所有节点)

答案 2 :(得分:0)

我相信你问的是错误的问题。从关系模型转换到Cassandra没有规则。

第一个问题如下:您在性能,可用性,数据量和性能方面有哪些要求?增长,以及所有查询能力中最重要的?你需要ACID吗?您是否可以更改访问数据库的应用代码以适应Cassandra更加非规范化的模型?

这些问题的答案将告诉您Cassandra是否与您的用例兼容。

根据经验:

  • 如果您使用带有大量索引的mysql并且通常在查询Cassandra数据模型时执行连接,那么使用数据库的应用代码将需要大量工作,或者甚至Cassandra也不是正确的选择。同样,如果你真的需要ACID,你可能会遇到Cassandra一致性模型的问题。
  • 如果您的SQL数据模型是完全非规范化的并且您执行的查询没有连接,那么您可以将您的数据库表模式复制为Cassandra列族并且您已完成,即使这可能不是最佳的。

您的用例可能介于两者之间,您真的需要了解如何在cassandra中建模数据,您必须自己理解并执行此分析,因为您了解自己的域名并且我们不知道。但是,请不要犹豫,提供有关您的模型以及如何查询数据的线索,以便建议您。

对于Cassandra来说200GB是低的,你可能会发现你的数据在Cassandra中的空间比在MYSQL中少得多,即使在广泛非规范化的情况下也是如此,因为Cassandra非常有效。