这可能是一个愚蠢的问题,但我刚开始在一家公司实习,我应该弄清楚如何将一个基于C的大型算法应用程序从MySQL迁移到Cassandra(我对所有人来说都是全新的)这个)。我一直在想我现在如何处理这一天,但我仍然有点不清楚。我看到要在Cassandra中运行,数据应该是非规范化的。此外,有几种工具可以将数据从MySQL迁移到Cassandra,如Sqoop或Bulk Loader。
所以我的问题是:将此应用程序移动到Cassandra,我是否应该将每个SQL语句和表更改为Cassandra,也许使用Datastax的C驱动程序?或者我只是在应用程序中添加一些内容,将应用程序运行时将MySQL数据写入Cassandra中的密钥空间,就像它说here一样?
我发现的绝大多数资源都展示了如何将数据移动到Cassandra,而不是整个应用程序的逻辑。此外,我发现的大多数资源似乎都已过时 - 似乎因为较新版本的Cassandra具有大致相等的读写速率,我的印象是没有非常需要完全非规范化数据。
仅供参考:当前数据存储在从无线接入点汇总的大约30个统计表中。
答案 0 :(得分:3)
您需要更改应用程序。 cassandra和mysql之间的数据读/写代码非常不同。您将能够在mysss中进行大量查询,而这些查询是您无法在cassandra中完成的 - cassandra要求使用与(与sql相比)有限查询语言支持高效查询的方式对数据进行建模,CQL。
您的数据是否相关?是否正在使用连接?或者它主要是键值数据,可能是时间序列?如果是统计数据,并且没有连接,则可能比其他方式更容易。
您需要根据应用程序(以及可能的其他应用程序)使用的查询对您的cassandra数据模型进行建模。然后,您可以创建cassandra模式,并导出/导入mysql数据。为此,您可以使用Pentaho等工具,甚至可以编写迁移应用程序。数据库中当前有多少数据?如果它不是太多,你可能可以逃脱csv导出和导入。
您的申请需要更改。将应用程序更改为读取和写入cassandra。你能忍受停工吗?如果没有,请考虑您发布的链接中列出的方法。
这不是一项微不足道的事。根据当前mysql中的数据模型,这可能是一项重大任务。
祝你好运!