我正在使用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,备份,快照工具更快。可以解释它们如何更快。