如何在Cassandra中优化从本地到远程服务器的数据传输(备份,同步)?

时间:2017-11-11 13:17:50

标签: c# performance wcf cassandra

我正在使用Cassandra db 3.7实时捕获数据。我已经运行了一年。现在数据非常大(大约100 GB)。让我们说在功能上,如果捕获更多数据,它将大约为1 TB。

现在我首先开始寻找一些ETL工具来为我做这项工作。我查看并尝试了ETL软件,如Talend ETL,Jaspersoft ETL和Spoon。但他们不支持Cassandra 3.7

所以现在我编写了一个asp.net windows应用程序,每次使用datastax dll从Cassandra db form本地读取500条记录,并将它们发送到远程WCF服务,这将把它们插入远程Cassandra数据库。

效果很好,但男人花了太多时间。

问题1:获取所有分区键。

我获取所有分区键(所有不同的主键)并保存到日志中,然后循环遍历这些分区键。现在如果同步失败,我将使用最后处理的分区密钥重新启动进程。

但我的问题是我无法使用

获取不同分区键的列表
Select distinct p1,p2 from table;

当数据很大时,上述陈述失败。

问题2:如何让读/写速度更快。

如果以某种方式我可以像批量读/写一样快速读取表单db(如果有的话)我可以稍微加快一下这个过程。

问题3: WCF只能处理少量请求,限制发送和接收数据大小。这限制了我运行多个应用程序实例。

我可以为每个应用程序实例一次运行多个WCF服务。但考虑到数据大小,请不要认为这是一个很好的解决方案。

我期待ETL,备份,快照工具更快。可以解释它们如何更快。

0 个答案:

没有答案