ฉันต้องใช้การประสานข้อมูลระหว่างสองฐานข้อมูลขนาดใหญ่ที่มีโครงสร้างที่แตกต่างกันโดยสิ้นเชิง โดยทั่วไปฉันต้องการรวบรวมข้อมูลบางอย่างเกี่ยวกับผลิตภัณฑ์ในตารางที่แตกต่างกันในฐานข้อมูลแรกและจัดเรียงใหม่สำหรับตารางอื่น ๆ ในฐานข้อมูลที่สอง
การสร้างผลิตภัณฑ์ของฉันในครั้งแรกนั้นไม่ซับซ้อนมาก แต่ฉันกำลังมองหาวิธีการอัปเดตข้อมูลเฉพาะบางอย่าง - ไม่ใช่ข้อมูลทั้งหมด - เกี่ยวกับแต่ละผลิตภัณฑ์
เห็นได้ชัดว่ามีบางประเด็นที่ทำให้เรื่องนี้ยุ่งยาก
- ฉันไม่ได้รับอนุญาตให้ทำสิ่งใดในฐานข้อมูลต้นฉบับนอกเหนือจากแบบสอบถามแบบใช้เลือกข้อมูล
- บนฐานข้อมูลเป้าหมายฉันสามารถทำการสืบค้นตามปกติ (เลือกอัปเดตแทรกสร้าง) แต่ฉันไม่สามารถแก้ไขโครงสร้าง / ตารางที่มีอยู่ได้
- Target และ source db มีโครงสร้างที่แตกต่างกันโดยสิ้นเชิงตารางไม่เหมือนกันเลยดังนั้นข้อมูลจะต้องถูกจัดเรียงใหม่จริง ๆ การเปรียบเทียบตารางจะไม่ทำงาน
- ฐานข้อมูลเป้าหมายใช้เซิร์ฟเวอร์ MySQL - ซอร์สอาจเป็น DB2
- ไม่มีฟิลด์ "เวลาที่อัปเดต" ที่ใดก็ได้
ดังนั้นกระบวนการทั้งหมดจะต้องทำในสคริปต์ Python (นึกคิด) เดียว
ฉันคิดเกี่ยวกับการสร้างแฮชสำหรับแต่ละผลิตภัณฑ์โดยอิงตามฟิลด์เพื่ออัปเดตในฐานข้อมูลเป้าหมาย: md5 (รหัส + คำอธิบาย + ผู้จำหน่าย + ประมาณ 10 สาขาอื่น ๆ ) แฮชใหม่ที่ใช้ข้อมูลเดียวกันจะถูกสร้างขึ้นทุกวันจากฐานข้อมูลต้นทาง ฉันจะเก็บแฮชทั้งหมดไว้ในตารางเดียว (รหัสรายการ, current_hash, old_hash) เพื่อการแสดง จากนั้นเปรียบเทียบและอัปเดตผลิตภัณฑ์หากแฮชใหม่นั้นแตกต่างจากของเก่า
มีสินค้าประมาณ 500,000 รายการดังนั้นฉันกังวลเล็กน้อยเกี่ยวกับการแสดง
มันเป็นวิธีที่ดีที่จะไป?