Slow insert and saveall performance on spring data cassandra repository
Estoy tratando de insertar 1500 registros usando spring en cassandra. Tengo una lista de POJO que contienen estos 1500 registros y cuando llamo a saveAll o inserto en estos datos, me lleva 30 segundos completar esta operación. ¿Alguien puede sugerirme una forma de hacer esto más rápido? Actualmente estoy ejecutando Cassandra 3.11.2 como un clúster de prueba de nodo único.
Entity POJO:
package com.samplepoc.pojo;
import static org.springframework.data.cassandra.core.cql.PrimaryKeyType.PARTITIONED;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.springframework.data.cassandra.core.mapping.Column;
import org.springframework.data.cassandra.core.mapping.PrimaryKeyColumn;
import org.springframework.data.cassandra.core.mapping.Table;
@Table("health")
public class POJOHealth
{
@PrimaryKeyColumn(type=PARTITIONED)
UUID primkey;
@Column
String col1;
@Column
String col2;
@Column
String col3;
@Column
String col4;
@Column
String col5;
@Column
Date ts;
@Column
boolean stale;
@Column
String col6;
@Column
String col7;
@Column
String col8;
@Column
String col9;
@Column
Map<String,String> data_map = new HashMap<String,String>();
public POJOHealth(
String col1,
String col2,
String col3,
String col4,
String col5,
String col6,
String col7,
String col8,
String col9,
boolean stale,
Date ts,
Map<String,String> data_map
)
{
this.primkey = UUID.randomUUID();
this.col1=col1;
this.col2=col2;
this.col3=col3;
this.col4=col4;
this.col5=col5;
this.col6=col6;
this.col7=col7;
this.col8=col8;
this.col9=col9;
this.ts=ts;
this.data_map = data_map;
this.stale=stale;
}
//getters & setter ommitted
}
Fragmento del servicio Persist:
public void persist(List<POJO> l_POJO)
{
System.out.println("Enter Persist: "+new java.util.Date());
List<l_POJO> l_POJO_stale = repository_name.findBycol1AndStale("sample",false);
System.out.println("Retrieve Old: "+new java.util.Date());
l_POJO_stale.forEach(s -> s.setStale(true));
System.out.println("Set Stale: "+new java.util.Date());
repository_name.saveAll(l_POJO_stale);
System.out.println("Save stale: "+new java.util.Date());
try
{
repository_name.insert(l_POJO);
}
catch (Exception e)
{
System.out.println("Error in persisting new data");
}
System.out.println("Insert complete: "+new java.util.Date());
}