【问题标题】:How to move an application to Cassandra?如何将应用程序移动到 Cassandra?
【发布时间】:2023-04-02 08:56:01
【问题描述】:

这可能是一个愚蠢的问题,但我刚刚开始在一家公司实习,我应该弄清楚如何将基于 C 的大型算法应用程序从 MySQL 迁移到 Cassandra(我对所有人来说都是全新的)这)。一天以来,我一直在寻找如何处理这个问题,但我仍然有点不清楚。我看到要在 Cassandra 中运行,数据应该是非规范化的。此外,还有一些工具可以将数据从 MySQL 迁移到 Cassandra,例如 Sqoop 或 Bulk Loader。

所以我的问题是:要将此应用程序移至 Cassandra,我是否应该将每个 SQL 语句和表更改为 Cassandra,也许使用 Datastax 的 C 驱动程序?还是我只是在应用程序运行时将一些东西添加到将 MySQL 数据写入 Cassandra 中的键空间的应用程序中,就像它说的 here 一样?

我发现的绝大多数资源只是展示了如何将数据移动到 Cassandra,而不是整个应用程序的逻辑。此外,我发现的大多数资源似乎都已经过时了——似乎因为较新版本的 Cassandra 具有大致相等的读取和写入速率,我的印象是完全非规范化数据的需求并不大。

仅供参考:当前数据存储在大约三十个从无线接入点汇总的统计表中。

【问题讨论】:

    标签: mysql database cassandra database-migration cassandra-2.0


    【解决方案1】:

    您将需要更改应用程序。 cassandra和mysql之间的数据读/写代码有很大不同。您将能够在 mysql 中进行很多在 cassandra 中无法进行的查询 - cassandra 需要以支持使用其(与 sql 相比)有限查询语言 CQL 进行高效查询的方式对数据进行建模。

    您的数据是关系型的吗?是否正在使用连接?还是主要是键值数据,可能是时间序列?如果它是统计信息,并且没有连接,它可能会比其他方式容易得多。

    您需要根据您的应用程序(可能还有其他应用程序)使用的查询来为您的 cassandra 数据模型建模。然后,您可以创建 cassandra 架构,并导出/导入 mysql 数据。为此,您可以使用 Pentaho 之类的工具,甚至编写迁移应用程序。数据库中当前有多少数据?如果不是太多,您也许可以摆脱 csv 导出和导入。

    您的应用程序需要更改。更改应用程序以读取和写入 cassandra。你能忍受停机时间吗?如果没有,请考虑您发布的链接中列出的方法。

    这不是一件小事。根据当前 mysql 中的数据模型,这可能是一项重大任务。

    祝你好运!

    【讨论】:

    • 感谢您的快速回复!没有需要迁移的现有数据 - 截至目前,应用程序本身将模拟数据插入表中并在这些测试用例上运行算法。
    • 另外,据我所知,应用程序中似乎没有任何联接。查询是相当简单的选择语句,例如“从 ap_radios where ((ap_mac=y) and (id=x)) 中选择类型、宽度”。
    • 抱歉,停机时间到底是什么意思?这不是一个非常匆忙的项目——我有一个月的时间来至少计划迁移并开始它。对于更改应用程序中的实际查询,Datastax C 驱动程序是唯一的方法吗?
    • 看起来应该不会太难。您需要了解 cassandra 以及如何使用它。它与关系数据库非常不同。在 datastax.com 上有免费的在线培训,非常非常好。就实际查询而言,这取决于您使用的语言。在大多数情况下,如果有官方的 datastax 驱动程序,那将是一个可以使用的驱动程序。此外,如果您需要对 cql 查询无法满足的数据进行分析,则需要将 Spark 与 DataStax 的 Spark Cassandra 连接器结合使用。
    • 哦...意识到我没有回答你的问题。停机时间是指您必须关闭正在运行的应用程序才能重新部署,或者当应用程序崩溃并且没有人可以使用它时。在您的情况下,现有的应用程序并没有真正做任何事情。所以这应该不是问题。
    猜你喜欢
    • 2018-09-20
    • 2018-01-04
    • 2013-10-13
    • 1970-01-01
    • 2010-09-23
    • 2022-12-21
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多