كيفية نسخ القائمة واستيرادها كما هي في قاعدة بيانات postgresql في جزء من الثانية


لدي قائمة مصفوفة تحتوي على أكثر من مليون سجل، وأريد تفريغها كما هي في قاعدة بيانات PostgreSQL باستخدام شيء مضمن في أساليب مثل Copy-manger أو أي طريقة ستكون أسرع في الاستيراد هذه الكمية الكبيرة من البيانات في postgresql

قانون بلدي على النحو التالي

ما حاولت:

@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);
 }
} 

بدلاً من حفظ القائمة، أريد نسخها وتفريغها في قاعدة بيانات PostgreSQL حتى أتمكن من تقليل وقت تنفيذ استيراد البيانات إلى قاعدة البيانات.

الحل 1

لا أحد يستطيع أن يضمن لك “جزءًا من الثانية” لإضافة مليون صف إلى قاعدة بيانات أو PostgreSQL أم لا – سيعتمد ذلك على عوامل كثيرة جدًا: الكمبيوتر (أجهزة الكمبيوتر) التي يعمل عليها محرك قاعدة البيانات، ومستوى النشاط عليها قاعدة البيانات، الاتصال بين كمبيوتر قاعدة البيانات والكمبيوتر الذي يقوم بتشغيل التعليمات البرمجية الخاصة بك.
فكر في الأمر: إذا كان لديك 1,000,000 صف لإضافته، وكل صف يحتوي على 100 حرف (تقدير متحفظ بشكل عام)، فلديك 100 ميغابايت لنقلها – وهو جزء كبير من عرض النطاق الترددي: ستستغرق شبكة جيجابت ثانية أو أكثر لنقلها قم بنقله بين جهازي الكمبيوتر في حالة عدم وجود حركة مرور أخرى على الشبكة! وذلك قبل أن يقوم محرك قاعدة البيانات بمعالجتها والبدء في التعامل مع الصفوف في ملفات قاعدة البيانات لتخزينها.

فكر فيما تحاول القيام به ولماذا، ثم فكر في الطرق التي يمكنك من خلالها تقليل البيانات بشكل كبير بدلاً من افتراض أنها “مجرد مشكلة برمجية”.

الحل 2

بدون معرفة مصدر بياناتك، يكاد يكون من المستحيل الإجابة على هذا السؤال. هناك بعض الأشياء التي تحدث من النظر إلى هذا. أنت تقوم بإضافة UUID عشوائي ولكن يمكن بسهولة إنشاء ذلك تلقائيًا بواسطة قاعدة البيانات. لا يوجد شيء آخر يعتمد على هذه القيمة. إذا كانت البيانات تأتي من نتيجة استدعاء API، فيمكنك استخدام أداة ETL مثل أنظمة HPCC[^] للقيام بالرفع الثقيل بالنسبة لك.

في النهاية، سيتعين عليك تجربة بعض الأشياء لمعرفة ما هو الأفضل بالنسبة لك.

コメント

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