Cómo copiar una lista e importarla tal como está en la base de datos postgresql en una fracción de segundo

programación


Tengo una lista de matrices que tiene más de 1 millón de registros, quiero volcarla tal como está en la base de datos PostgreSQL usando métodos integrados como Copy-manger o cualquier método que sea más rápido de importar. esta gran cantidad de datos en postgresql

Mi código es el siguiente

Lo que he probado:

@Service
public class OrderProcessingService {
    
    @Autowired
    private OrderRepository orderRepository;
    
    public void process_data(String hfrcode, List<Order> order) {
            
    List<Order> orderList = new ArrayList<>(); 
  
    for(var data : order) {
    Order order_data = new Visit();
    order_data .setUuid(UUID.randomUUID().toString());
    order_data .setOrderID(data.getOrderID());
    order_data .setOrderDate(data.getOrderDate());
    order_data .setWeight(data.getWeight());
    order_data .setOrderQuantity(data.getOrderQuantity());
    order_data .setOrderLocation(data.getOrderLocation());
    orderList.add(order_data );
    }

   orderRepository.saveAll(orderList);
 }
} 

En lugar de guardar la lista, quiero copiarla y volcarla en la base de datos PostgreSQL para poder minimizar el tiempo de ejecución de la importación de datos a la base de datos.

Solución 1

Nadie puede garantizarle “una fracción de segundo” para agregar un millón de filas a una base de datos, PostgreSQL o no; dependerá de demasiados factores: las computadoras en las que se ejecuta el motor de la base de datos, el nivel de actividad en la base de datos, la conexión entre la computadora de la base de datos y la computadora que ejecuta su código.
Piénselo: si tiene 1.000.000 de filas para agregar, y cada fila tiene 100 caracteres (generalmente una estimación conservadora), entonces tiene 100 megabytes para transferir, lo cual es una porción importante de ancho de banda: una red gigabit tardará un segundo o más en transfiérelo entre las dos computadoras si no hay otro tráfico en la red. Y eso es antes de que el motor de base de datos lo procese y comience a hacer malabarismos con las filas de los archivos de base de datos para almacenarlos.

Piense en lo que está intentando hacer y por qué, luego piense en formas en las que puede reducir en gran medida los datos en lugar de asumir que es “sólo un problema de software”.

Solución 2

Sin saber de dónde obtuvo sus datos, esta es una pregunta casi imposible de responder. Hay algunas cosas que ocurren al mirar esto. Está agregando un UUID aleatorio, pero la base de datos podría generarlo automáticamente fácilmente. No hay nada más que dependa de este valor. Si los datos provienen del resultado de una llamada API, puede usar una herramienta ETL como Sistemas HPCC[^] para hacer el trabajo pesado por usted.

En última instancia, tendrá que probar algunas cosas para descubrir qué funcionará mejor para usted.

コメント

タイトルとURLをコピーしました