Как удалить все записи из таблицы cassandra без создания снимка

Столкнулся с проблемой удаления всех записей из таблицы.

Я могу использовать таблицу Truncate. Но усечение создаст моментальный снимок данных, что в моем сценарии будет пустой тратой места для хранения.

Также усечение завершится ошибкой, если какой-либо из узлов не работает.

Поэтому я хотел бы знать, есть ли способ удалить все записи в таблице без создания моментального снимка, который работает, если узел не работает.


person Siva Narayana Reddy M    schedule 04.01.2016    source источник


Ответы (2)


Чтобы изменить поведение создания моментального снимка перед усечением, вы можете изменить свой cassandra.yaml

# Whether or not a snapshot is taken of the data before keyspace truncation
# or dropping of column families. The STRONGLY advised default of true 
# should be used to provide data safety. If you set this flag to false, you will
# lose data on truncation or drop.
auto_snapshot: true

По умолчанию для этого значения установлено значение true. Если вы этого не хотите, вы можете просто установить значение false. Небольшое предупреждение здесь, этот флаг должен убедиться, что после удаления или усечения ваши данные не будут потеряны без задней мысли. Так что подумайте хорошенько, если вы действительно хотите отключить эту функцию.

person HashtagMarkus    schedule 04.01.2016

простое использование, как это

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Truncate_Table {

   public static void main(String args[]){

      //Query
      String query = "Truncate student;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

      //Creating Session object
      Session session = cluster.connect("tp");

      //Executing the query
      session.execute(query);
      System.out.println("Table truncated");
   }
} 

я думаю это тебе поможет

person shiva chauhan    schedule 04.01.2016
comment
ОП говорит, что не хочет использовать truncate запрос. - person NSNoob; 04.01.2016
comment
вы можете использовать вот так String query = DELETE * FROM table; - person shiva chauhan; 04.01.2016
comment
Затем добавьте его в свой ответ, иначе вас могут заминусовать. :) - person NSNoob; 04.01.2016
comment
без условия вы не можете удалять записи в этой базе данных. DELETE * FROM Table WHERE id = 'some_key_value'; - person shiva chauhan; 04.01.2016