Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr 在Cassandra集群中删除海量数据_Solr_Cassandra_Opscenter - Fatal编程技术网

Solr 在Cassandra集群中删除海量数据

Solr 在Cassandra集群中删除海量数据,solr,cassandra,opscenter,Solr,Cassandra,Opscenter,我有三个节点的Cassandra集群。我们有过去4年近7 TB的数据。现在,由于服务器中可用的空间较少,我们希望只保留过去2年的数据。但我们不想完全删除它(数据超过2年)。我们希望保留特定数据,即使这些数据超过2年。 目前我可以想到一种方法: 1) 使用“MutationBatch对象”的Java客户端。我可以得到所有属于日期范围的记录键,不包括我们不想删除的行。然后批量删除记录。但由于数据量巨大,这种解决方案引起了人们对性能的担忧 是否可以在服务器级别(opscenter)处理它。我读过关于T

我有三个节点的Cassandra集群。我们有过去4年近7 TB的数据。现在,由于服务器中可用的空间较少,我们希望只保留过去2年的数据。但我们不想完全删除它(数据超过2年)。我们希望保留特定数据,即使这些数据超过2年。 目前我可以想到一种方法: 1) 使用“MutationBatch对象”的Java客户端。我可以得到所有属于日期范围的记录键,不包括我们不想删除的行。然后批量删除记录。但由于数据量巨大,这种解决方案引起了人们对性能的担忧

是否可以在服务器级别(opscenter)处理它。我读过关于TTL的文章,但如何将其应用于现有数据,并限制我想要保留的某些数据,即使这些数据已超过2年


请帮助我找出最佳解决方案。

您需要了解的主要问题是,当您删除Cassandra中的数据时,实际上是通过写入墓碑来添加它们,然后在压缩过程中删除实际数据

因此,正确执行删除操作非常重要。有不同类型的删除-单个单元格、行、范围、分区(根据生成的墓碑数量从最无效到最有效)。最好的方法是按分区删除,第二种方法是按分区内的范围删除。详细描述如何删除数据


您可能需要分几个步骤执行删除操作,这样就不会添加太多的数据作为墓碑。您还需要检查是否有足够的磁盘空间进行压缩。

目前我们没有足够的空间,而且由于堆内存不足,Cassandra有时会下降。在这种情况下,我不担心对这么多记录执行删除操作(即使我在分区中执行删除操作,数据量很大,删除操作将花费大量时间)。在这种情况下可以使用TTL吗?我不确定我们是否可以在现有记录上应用TTL。添加TTL与删除具有相同的效果-磁盘上已经存在的数据不会被修改,并且会添加新数据。如果您从partID=xxxx的表中删除整个分区,Cassandra将只添加一个逻辑删除,而不是为每一行/单元格添加逻辑删除。。。