portaldacalheta.pt
  • หลัก
  • ไลฟ์สไตล์
  • บุคลากรและทีมงานของผลิตภัณฑ์
  • ชีวิตนักออกแบบ
  • อื่น ๆ
แบ็คเอนด์

คำแนะนำเกี่ยวกับการซิงโครไนซ์ข้อมูลใน Microsoft SQL Server



การแบ่งปันข้อมูลที่เกี่ยวข้องระหว่างระบบที่แยกได้มีความสำคัญมากขึ้นสำหรับองค์กรเนื่องจากช่วยให้สามารถปรับปรุงคุณภาพและความพร้อมใช้งานของข้อมูลได้ มีหลายสถานการณ์ที่มีประโยชน์ในการมีชุดข้อมูลที่พร้อมใช้งานและสอดคล้องกันในเซิร์ฟเวอร์ไดเร็กทอรีมากกว่าหนึ่งตัว นั่นคือเหตุผลที่ต้องรู้วิธีการทั่วไปในการแสดง เซิร์ฟเวอร์ SQL การซิงโครไนซ์ข้อมูลเป็นสิ่งสำคัญ

ความพร้อมใช้งานและความสอดคล้องของข้อมูลสามารถทำได้โดยการจำลองข้อมูลและกระบวนการซิงโครไนซ์ข้อมูล การจำลองข้อมูลเป็นกระบวนการสร้างสำเนาฐานข้อมูลที่ซ้ำซ้อนอย่างน้อยหนึ่งชุดเพื่อวัตถุประสงค์ในการยอมรับข้อผิดพลาดหรือการปรับปรุงการเข้าถึง การซิงโครไนซ์ข้อมูลเป็นกระบวนการสร้างความสอดคล้องของข้อมูลระหว่างสองฐานข้อมูลขึ้นไปและการอัปเดตอย่างต่อเนื่องในภายหลังเพื่อรักษาความสอดคล้องดังกล่าว



แหล่งข้อมูลต่างๆที่รวมกันเป็นคิวรี SQL



ในหลายองค์กรการดำเนินการซิงโครไนซ์ข้อมูลในระบบต่างๆเป็นสิ่งที่พึงปรารถนาและท้าทาย เราสามารถพบกรณีการใช้งานมากมายที่เราจำเป็นต้องทำการซิงโครไนซ์ข้อมูล:



  • การย้ายฐานข้อมูล
  • การประสานระหว่างระบบข้อมูลอย่างสม่ำเสมอ
  • การนำเข้าข้อมูลจากระบบสารสนเทศหนึ่งไปยังอีกระบบหนึ่ง
  • การย้ายชุดข้อมูลระหว่างขั้นตอนหรือสภาพแวดล้อมต่างๆ
  • การนำเข้าข้อมูลจากแหล่งที่ไม่ใช่ฐานข้อมูล

ไม่มีวิธีพิเศษหรือวิธีการที่ตกลงกันเป็นเอกฉันท์สำหรับการซิงโครไนซ์ข้อมูล งานนี้แตกต่างกันไปในแต่ละกรณีและแม้กระทั่งการซิงโครไนซ์ข้อมูลที่ควรจะง่ายในตอนแรกอาจมีความซับซ้อนเนื่องจากโครงสร้างข้อมูลมีความซับซ้อน ในสถานการณ์จริงการซิงโครไนซ์ข้อมูลประกอบด้วยงานที่ซับซ้อนมากมายซึ่งอาจใช้เวลานานในการดำเนินการ เมื่อมีข้อกำหนดใหม่ขึ้นผู้เชี่ยวชาญด้านฐานข้อมูลมักจะต้องนำกระบวนการซิงโครไนซ์ทั้งหมดมาใช้ใหม่ เนื่องจากไม่มีวิธีมาตรฐานในการทำเช่นนี้นอกจากการจำลองแบบแล้วการใช้งานการซิงโครไนซ์ข้อมูลจึงไม่ค่อยเหมาะสม ส่งผลให้ดูแลรักษายากและมีค่าใช้จ่ายสูงขึ้น การใช้งานและการบำรุงรักษาการซิงโครไนซ์ข้อมูลเป็นกระบวนการที่ใช้เวลานานอาจเป็นงานเต็มเวลาได้ด้วยตัวเอง

เราสามารถใช้สถาปัตยกรรมสำหรับงานซิงโครไนซ์ข้อมูลด้วยตนเองโดยอาจใช้ Microsoft Sync Framework หรือเราจะได้รับประโยชน์จากโซลูชันที่สร้างไว้แล้วภายในเครื่องมือสำหรับจัดการ Microsoft SQL Server เราจะพยายามอธิบายวิธีการและเครื่องมือทั่วไปที่สามารถใช้เพื่อแก้ปัญหาการซิงโครไนซ์ข้อมูลบนฐานข้อมูล Microsoft SQL Server และพยายามให้คำแนะนำ



จากโครงสร้างของต้นทางและปลายทาง (เช่นฐานข้อมูลตาราง) เราสามารถแยกความแตกต่างกรณีการใช้งานเมื่อโครงสร้างมีความเหมือนหรือแตกต่างกัน

ต้นทางและปลายทางมีโครงสร้างที่คล้ายกันมาก

กรณีนี้มักเกิดขึ้นเมื่อเราใช้ข้อมูลในขั้นตอนต่างๆของวงจรการพัฒนาซอฟต์แวร์ ตัวอย่างเช่นโครงสร้างข้อมูลในสภาพแวดล้อมการทดสอบและการผลิตมีความคล้ายคลึงกันมาก ข้อกำหนดทั่วไปคือการเปรียบเทียบข้อมูลระหว่างฐานข้อมูลการทดสอบและการผลิตและนำเข้าข้อมูลจากการผลิตไปยังฐานข้อมูลการทดสอบ



ต้นทางและปลายทางมีโครงสร้างที่แตกต่างกัน

หากโครงสร้างแตกต่างกันการซิงโครไนซ์จะซับซ้อนมากขึ้น นอกจากนี้ยังเป็นงานที่เกิดซ้ำบ่อยขึ้น กรณีทั่วไปคือการนำเข้าจากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูล กรณีที่พบบ่อยที่สุดคือเมื่อซอฟต์แวร์ชิ้นหนึ่งต้องการนำเข้าข้อมูลจากซอฟต์แวร์อื่นซึ่งดูแลโดย บริษัท อื่น โดยปกติแล้วการนำเข้าจำเป็นต้องเรียกใช้โดยอัตโนมัติตามกำหนดเวลา

วิธีที่ใช้ขึ้นอยู่กับความชอบส่วนบุคคลและความซับซ้อนของปัญหาที่คุณต้องแก้ไข



ไม่ว่าโครงสร้างจะคล้ายกันแค่ไหนเราสามารถเลือกวิธีแก้ปัญหาการซิงโครไนซ์ข้อมูลได้สี่วิธี:

  • การซิงโครไนซ์โดยใช้สคริปต์ SQL ที่สร้างขึ้นด้วยตนเอง
  • การซิงโครไนซ์โดยใช้วิธีเปรียบเทียบข้อมูล (สามารถใช้ได้เฉพาะเมื่อแหล่งที่มาและเป้าหมายมีโครงสร้างที่คล้ายคลึงกัน)
  • การซิงโครไนซ์โดยใช้สคริปต์ SQL ที่สร้างขึ้นโดยอัตโนมัติ - ต้องการผลิตภัณฑ์เชิงพาณิชย์

ต้นทางและปลายทางมีโครงสร้างที่เหมือนกันหรือคล้ายกันมาก

การใช้สคริปต์ SQL ที่สร้างขึ้นด้วยตนเอง

วิธีแก้ปัญหาที่ตรงไปตรงมาและน่าเบื่อที่สุดคือการเขียนสคริปต์ SQL ด้วยตนเองสำหรับการซิงโครไนซ์



ข้อดี

  • สามารถทำได้โดยเครื่องมือฟรีและโอเพ่นซอร์ส (FOSS)
  • ถ้าตารางมีดัชนีแสดงว่าเร็วมาก
  • สคริปต์ SQL สามารถบันทึกลงในโพรซีเดอร์ที่เก็บไว้หรือเรียกใช้เป็นงานสำหรับ SQL Server เป็นระยะ
  • สามารถใช้เป็นการนำเข้าอัตโนมัติแม้ข้อมูลที่เปลี่ยนแปลงอย่างต่อเนื่อง

ข้อเสีย

  • การสร้างสคริปต์ SQL นั้นค่อนข้างน่าเบื่อเพราะโดยปกติแล้วต้องใช้สคริปต์สามตัวสำหรับแต่ละตาราง: INSERT, UPDATE และ DELETE
  • คุณสามารถซิงโครไนซ์ข้อมูลที่พร้อมใช้งานผ่านการสืบค้น SQL เท่านั้นดังนั้นจึงไม่สามารถนำเข้าจากแหล่งที่มาเช่นไฟล์ CSV และ XML ได้
  • เป็นการยากที่จะรักษา - เมื่อโครงสร้างฐานข้อมูลมีการเปลี่ยนแปลงจำเป็นต้องแก้ไขสคริปต์สองหรือสามสคริปต์ (INSERT, UPDATE และบางครั้งก็เป็น DELETE)

ตัวอย่าง

เราจะทำการซิงโครไนซ์ระหว่างตาราง Source กับคอลัมน์ ID และ Value และตาราง Target ที่มีคอลัมน์เดียวกัน

หากตารางมีคีย์หลักเดียวกันและตารางเป้าหมายไม่มีคีย์หลักที่เพิ่มขึ้นอัตโนมัติ (เอกลักษณ์) คุณสามารถเรียกใช้สคริปต์การซิงโครไนซ์ต่อไปนี้



อินเทอร์เน็ตบ้านอัจฉริยะของสิ่งต่าง ๆ
-- insert INSERT INTO Target (ID, Value) SELECT ID, Value FROM Source WHERE NOT EXISTS (SELECT * FROM Target WHERE Target.ID = Source.ID); -- update UPDATE Target SET Value = Source.Value FROM Target INNER JOIN Source ON Target.ID = Source.ID -- delete DELETE FROM Target WHERE NOT EXISTS (SELECT * FROM Source WHERE Target.ID = Source.ID)

ใช้วิธีเปรียบเทียบข้อมูล

ในวิธีนี้เราสามารถใช้เครื่องมือเพื่อเปรียบเทียบระหว่างข้อมูลต้นทางและข้อมูลเป้าหมาย กระบวนการเปรียบเทียบสร้างสคริปต์ SQL ที่ใช้ความแตกต่างจากฐานข้อมูลต้นทางไปยังฐานข้อมูลเป้าหมาย

มีโปรแกรมจำนวนมากสำหรับการเปรียบเทียบและซิงโครไนซ์ข้อมูล โปรแกรมเหล่านี้ส่วนใหญ่ใช้แนวทางเดียวกัน ผู้ใช้เลือกแหล่งที่มาและฐานข้อมูลเป้าหมาย แต่ทางเลือกอื่นอาจเป็นการสำรองฐานข้อมูลโฟลเดอร์ที่มีสคริปต์ SQL หรือแม้แต่การเชื่อมต่อกับระบบควบคุมแหล่งที่มา

ด้านล่างนี้เป็นเครื่องมือยอดนิยมที่ใช้วิธีเปรียบเทียบข้อมูล:

  • ข้อมูล dbForge เปรียบเทียบสำหรับ SQL Server
  • RedGate SQL Data เปรียบเทียบ
  • Apex SQL Data Diff

ในขั้นตอนแรกข้อมูลจะถูกอ่านหรือเพียงแค่ตรวจสอบข้อมูลขนาดใหญ่จากแหล่งที่มาและจากเป้าหมายจะถูกอ่าน จากนั้นกระบวนการเปรียบเทียบจะดำเนินการ

เครื่องมือเหล่านี้ยังมีการตั้งค่าเพิ่มเติมสำหรับการซิงโครไนซ์

เราจำเป็นต้องตั้งค่าตัวเลือกการกำหนดค่าต่อไปนี้ที่จำเป็นสำหรับการซิงโครไนซ์ข้อมูล:

คีย์ซิงค์

โดยค่าเริ่มต้นคีย์หลักหรือ UNIQUE ใช้ข้อ จำกัด หากไม่มีคีย์หลักคุณสามารถเลือกคอลัมน์ร่วมกันได้ คีย์ Sync ใช้เพื่อจับคู่แถวของแหล่งที่มากับแถวของเป้าหมาย

การจับคู่ตาราง

โดยค่าเริ่มต้นตารางจะจับคู่ตามชื่อ คุณสามารถเปลี่ยนสิ่งนี้และจับคู่ตามความต้องการของคุณเอง ในซอฟต์แวร์ dbForge Data Compare คุณสามารถเลือก SQL query ให้เป็นต้นทางหรือปลายทางได้

เครื่องชั่งประเภทนี้มีองค์ประกอบที่มาจากจุดศูนย์กลาง หรือสร้างจุดโฟกัสที่ศูนย์กลาง

กระบวนการซิงโครไนซ์

หลังจากยืนยันแล้วเครื่องมือจะเปรียบเทียบข้อมูลแหล่งที่มาและเป้าหมาย กระบวนการทั้งหมดประกอบด้วยการดาวน์โหลดแหล่งที่มาและข้อมูลเป้าหมายทั้งหมดและเปรียบเทียบตามเกณฑ์ที่กำหนด โดยค่าเริ่มต้นจะเปรียบเทียบค่าจากตารางและคอลัมน์ที่มีชื่อเท่ากัน เครื่องมือทั้งหมดรองรับคอลัมน์การแมปและชื่อตาราง นอกจากนี้ยังมีความเป็นไปได้ที่จะยกเว้น IDENTITY (autoincrement) คอลัมน์หรือทำการแปลงบางอย่างก่อนที่จะเปรียบเทียบค่า (ประเภท round float, ละเว้นตัวพิมพ์เล็ก, ถือว่า NULL เป็นสตริงว่าง ฯลฯ ) การดาวน์โหลดข้อมูลได้รับการปรับให้เหมาะสม หากปริมาณข้อมูลมีมากระบบจะดาวน์โหลดเช็คซัมเท่านั้น การเพิ่มประสิทธิภาพนี้มีประโยชน์ในกรณีส่วนใหญ่ แต่ข้อกำหนดด้านเวลาในการดำเนินการจะเพิ่มขึ้นตามปริมาณข้อมูล

ในขั้นตอนถัดไปมีสคริปต์ SQL ที่สร้างการโอนย้าย สคริปต์นี้สามารถบันทึกหรือเรียกใช้โดยตรง เพื่อความปลอดภัยเราสามารถสำรองฐานข้อมูลก่อนที่จะเรียกใช้สคริปต์นี้ เครื่องมือ ApexSQL Data Diff สามารถสร้างโปรแกรมปฏิบัติการซึ่งรันสคริปต์บนฐานข้อมูลที่เลือก สคริปต์นี้มีข้อมูลที่จำเป็นต้องเปลี่ยนแปลงไม่ใช่ตรรกะในการเปลี่ยนแปลง ซึ่งหมายความว่าไม่สามารถรันสคริปต์โดยอัตโนมัติเพื่อให้การนำเข้าที่เกิดซ้ำได้ นั่นคือข้อเสียที่สุดของแนวทางนี้

ข้อดี

  • ไม่จำเป็นต้องมีความรู้ขั้นสูงเกี่ยวกับ SQL และสามารถทำได้ผ่าน GUI
  • คุณมีความสามารถในการตรวจสอบความแตกต่างระหว่างฐานข้อมูลก่อนการซิงโครไนซ์ด้วยสายตา

ข้อเสีย

  • เป็นคุณลักษณะขั้นสูงของผลิตภัณฑ์เชิงพาณิชย์
  • ประสิทธิภาพจะลดลงเมื่อถ่ายโอนข้อมูลจำนวนมหาศาล
  • สคริปต์ SQL ที่สร้างขึ้นมีความแตกต่างเท่านั้นจึงไม่สามารถใช้ซ้ำเพื่อซิงโครไนซ์ข้อมูลในอนาคตโดยอัตโนมัติ

ด้านล่างนี้คุณจะเห็น UI ทั่วไปของเครื่องมือเหล่านี้

ApexSQL Data Diff

ApexSQL Data Diff

RedGate SQL เปรียบเทียบ

RedGate SQL เปรียบเทียบ

เปลี่ยนรายการใน dbForge Data Compare

เปลี่ยนรายการใน dbForge Data Compare

ซิงโครไนซ์กับ SQL ที่สร้างขึ้นโดยอัตโนมัติ

วิธีนี้คล้ายกับวิธีเปรียบเทียบข้อมูลมาก ข้อแตกต่างเพียงอย่างเดียวเมื่อเทียบกับวิธีการก่อนหน้านี้คือไม่มีการเปรียบเทียบข้อมูลและสคริปต์ SQL ที่สร้างขึ้นไม่มีความแตกต่างของข้อมูล แต่เป็นตรรกะในการซิงโครไนซ์ สคริปต์ที่สร้างขึ้นสามารถบันทึกลงในขั้นตอนการจัดเก็บได้อย่างง่ายดายและสามารถเรียกใช้เป็นระยะ ๆ (เช่นทุกคืน) วิธีนี้มีประโยชน์สำหรับการนำเข้าอัตโนมัติระหว่างฐานข้อมูล ประสิทธิภาพของวิธีนี้ดีกว่าวิธีเปรียบเทียบข้อมูลมาก

การซิงโครไนซ์โดย SQL ที่สร้างขึ้นโดยอัตโนมัติมีให้โดย สตูดิโอฐานข้อมูล SQL .

SQL Database Studio มีอินเทอร์เฟซที่คล้ายกันกับวิธีการเปรียบเทียบข้อมูล เราจำเป็นต้องเลือกแหล่งที่มาและเป้าหมาย (ฐานข้อมูลหรือตาราง) จากนั้นเราต้องตั้งค่าตัวเลือก (ปุ่มซิงค์การจับคู่และการทำแผนที่) มีคุณลักษณะตัวสร้างแบบสอบถามแบบกราฟิกสำหรับการตั้งค่าพารามิเตอร์ทั้งหมด

ข้อดี

  • ไม่จำเป็นต้องมีความรู้ขั้นสูงเกี่ยวกับ SQL
  • คุณสามารถตั้งค่าทุกอย่างใน GUI ได้อย่างรวดเร็ว
  • สคริปต์ SQL ที่เป็นผลลัพธ์สามารถบันทึกลงในโพรซีเดอร์ที่เก็บไว้
  • สามารถใช้เป็นการนำเข้าอัตโนมัติ - เป็นงานสำหรับ SQL Server

ข้อเสีย

  • เป็นคุณลักษณะขั้นสูงของผลิตภัณฑ์เชิงพาณิชย์
  • ไม่สามารถตรวจสอบความแตกต่างได้ด้วยตนเองก่อนการซิงโครไนซ์เนื่องจากกระบวนการทั้งหมดดำเนินการในขั้นตอนเดียว

เกณฑ์มาตรฐานประสิทธิภาพ

กรณีทดสอบ

สองฐานข้อมูล (A และ B) แต่ละฐานข้อมูลมีหนึ่งตารางที่มี 2,000,000 แถว ตารางอยู่ในฐานข้อมูลที่แตกต่างกันสองฐานข้อมูลบน SQL Server เดียวกัน การทดสอบนี้ครอบคลุมกรณีที่รุนแรงสองกรณี: 1) ตารางต้นทางมีทั้งหมด 2,000,000 แถวและตารางเป้าหมายว่างเปล่า การซิงโครไนซ์จำเป็นต้องมี INSERTS มากมาย 2) ตารางต้นทางและเป้าหมายมี 2,000,000 แถว ความแตกต่างอยู่ในแถวเดียวเท่านั้น การซิงโครไนซ์จำเป็นต้องระบุ UPDATE เท่านั้น

RedGate Data Compare ต้องการ 3 ขั้นตอน:

  • เปรียบเทียบ
  • สร้างสคริปต์
  • รันสคริปต์บนฐานข้อมูลเป้าหมาย

ApexSQL Data Diff ต้องการ 2 ขั้นตอน:

  • เปรียบเทียบ
  • สร้างสคริปต์และเรียกใช้สคริปต์ในขั้นตอนเดียว

SQL Database Studio ทำการซิงโครไนซ์ทั้งหมดในขั้นตอนเดียว ด้านล่างนี้เป็นเวลาในการซิงโครไนซ์เป็นวินาที ในคอลัมน์ที่มีชื่อว่า 'แต่ละขั้นตอน' คือระยะเวลาของขั้นตอนการซิงโครไนซ์ที่ระบุไว้ด้านบน

กรณีก. INSERTs จำนวนมาก กรณีก. INSERTs จำนวนมาก (แต่ละขั้นตอน) กรณีข. อัปเดตหนึ่งแถว กรณี B อัปเดตหนึ่งแถว (แต่ละขั้นตอน)
สตูดิโอฐานข้อมูล SQL 47 5
เปรียบเทียบข้อมูล RedGate 317 13 + 92 + 212 2. 3 22 + 0 + 1
ApexSQL Data Diff 188 18 + 170 26 25+

ต่ำกว่าจะดีกว่า

การทดสอบเดียวกัน แต่ฐานข้อมูลอยู่บนเซิร์ฟเวอร์ SQL ที่แตกต่างกันซึ่งไม่ได้เชื่อมต่อผ่านเซิร์ฟเวอร์ที่เชื่อมโยง

กรณีก. INSERTs จำนวนมาก กรณีก. INSERTs จำนวนมาก (แต่ละขั้นตอน) กรณีข. อัปเดตหนึ่งแถว กรณี B อัปเดตหนึ่งแถว (แต่ละขั้นตอน)
สตูดิโอฐานข้อมูล SQL 78 44
เปรียบเทียบข้อมูล RedGate 288 17 + 82 + 179 25 24 + 0 + 1
ApexSQL Data Diff 203 18 + 185 25 24 + 1
เปรียบเทียบข้อมูล dbForge 326 11 + 315 16 16 + 0

ต่ำกว่าจะดีกว่า

สรุป

จากผลลัพธ์จะเห็นได้ชัดว่า RedGate และ Apex ไม่สนใจว่าฐานข้อมูลจะอยู่บนเซิร์ฟเวอร์ SQL เดียวกันหรือไม่เนื่องจากอัลกอริทึมการซิงโครไนซ์ไม่ขึ้นอยู่กับ SQL Server SQL Database Studio ใช้ฟังก์ชันดั้งเดิมของ SQL Server ดังนั้นผลลัพธ์จะดีกว่าเมื่อฐานข้อมูลอยู่บนเซิร์ฟเวอร์เดียวกัน

ต้นทางและปลายทางมีโครงสร้างที่แตกต่างกัน

นอกจากนี้ยังมีสถานการณ์ที่ต้องซิงโครไนซ์ตารางกว้างหนึ่งตารางไปยังตารางขนาดเล็กจำนวนมากที่เกี่ยวข้อง

ตัวอย่างนี้ประกอบด้วย SourceData ตารางกว้างหนึ่งตารางซึ่งต้องซิงโครไนซ์ลงในตารางขนาดเล็ก Continent, Country และ City โครงการได้รับด้านล่าง

Scheme สำหรับฐานข้อมูลตัวอย่าง

ข้อมูลใน SourceData อาจเป็นเหมือนในภาพด้านล่าง

การขึ้นต่อกันในโค้ดคืออะไร

จุดข้อมูลสำหรับตัวอย่าง

ใช้สคริปต์ SQL ที่สร้างขึ้นด้วยตนเอง

สคริปต์ซิงโครไนซ์ตารางทวีป

INSERT INTO Continent (Name) SELECT SourceData.Continent FROM SourceData WHERE (SourceData.Continent IS NOT NULL AND NOT EXISTS (SELECT * FROM Continent tested WHERE tested.Name =SourceData.Continent )) GROUP BY SourceData.Continent;

สคริปต์การซิงโครไนซ์ตารางเมือง

INSERT INTO City (Name, CountryId) SELECT SourceData.City, Country.Id FROM SourceData LEFT JOIN Continent ON SourceData.Continent = Continent.Name LEFT JOIN Country ON SourceData.Country = Country.Name AND Continent.Id = Country.ContinentId WHERE SourceData.City IS NOT NULL AND Country.Id IS NOT NULL AND NOT EXISTS (SELECT * FROM City tested WHERE tested.Name = SourceData.City AND tested.CountryId = Country.Id) GROUP BY SourceData.City, Country.Id;

สคริปต์นี้มีความซับซ้อนมากขึ้น เป็นเพราะบันทึกในตาราง Country และ Continent จะต้องพบ สคริปต์นี้แทรกบันทึกที่ขาดหายไปใน City และเติม ContryId ถูกต้อง

UPDATE และ DELETE นอกจากนี้ยังสามารถเขียนสคริปต์ในลักษณะเดียวกันได้หากจำเป็น

ข้อดี

  • คุณไม่ต้องการผลิตภัณฑ์เชิงพาณิชย์ใด ๆ
  • สคริปต์ SQL สามารถบันทึกลงในกระบวนงานที่เก็บไว้หรือเรียกใช้เป็นงานสำหรับ SQL Server เป็นระยะ

ข้อเสีย

  • การสร้างสคริปต์ SQL นั้นยากและซับซ้อน (สำหรับแต่ละตารางสามสคริปต์ - INSERT, UPDATE และ DELETE - โดยทั่วไปจำเป็น)
  • มันยากมากที่จะรักษา

การใช้เครื่องมือภายนอก

การซิงโครไนซ์แบบนี้ (ตารางกว้างเป็นตารางที่เกี่ยวข้องจำนวนมาก) ไม่สามารถทำได้ด้วยวิธีเปรียบเทียบข้อมูลเนื่องจากเน้นไปที่กรณีการใช้งานที่แตกต่างกัน เนื่องจากวิธีการเปรียบเทียบข้อมูลจะสร้างสคริปต์ SQL พร้อมข้อมูลที่จะแทรกจึงไม่มีความสามารถที่ตรงไปตรงมาในการค้นหาข้อมูลอ้างอิงในตารางที่เกี่ยวข้อง ด้วยเหตุนี้จึงไม่สามารถใช้แอปพลิเคชันที่ใช้วิธีนี้ได้ (dbForge Data Compare สำหรับ SQL Server, RedGate SQL Data Compare, Apex SQL Data Diff)

อย่างไรก็ตาม SQL Database Studio สามารถช่วยคุณสร้างสคริปต์ซิงโครไนซ์โดยอัตโนมัติ ในภาพด้านล่างมีองค์ประกอบที่เรียกว่า Editor for Data Synchronization ใน SQL Database Studio

วิธีเขียนแบบทดสอบหน่วยที่ดี

ตัวแก้ไขสำหรับการซิงโครไนซ์ข้อมูลใน SQL Database Studio

ตัวแก้ไขดูเหมือนเครื่องมือสร้างแบบสอบถามที่รู้จักกันดีและทำงานในลักษณะที่คล้ายกันมาก แต่ละตารางจำเป็นต้องมีคีย์การซิงโครไนซ์ที่กำหนดไว้ แต่ยังมีการกำหนดความสัมพันธ์ระหว่างตารางด้วย ในภาพด้านบนมีการทำแผนที่สำหรับการซิงโครไนซ์ด้วย ในรายการคอลัมน์ (ส่วนล่างของรูปภาพ) มีคอลัมน์ของตาราง City (สำหรับตารางอื่นจะคล้ายกัน)

คอลัมน์

  • Id - คอลัมน์นี้ไม่ถูกแมปเนื่องจากเป็นคีย์หลัก (สร้างขึ้นโดยอัตโนมัติ)
  • CountryId - คอลัมน์นี้ถูกกำหนดให้เป็นข้อมูลอ้างอิงสำหรับตาราง
  • ชื่อ - คอลัมน์นี้เติมจากคอลัมน์เมืองในตารางต้นทาง (ตารางกว้าง)

คอลัมน์ CountryId และ Name ถูกเลือกเป็นคีย์การซิงโครไนซ์ คีย์การซิงโครไนซ์คือชุดของคอลัมน์ที่ระบุแถวในตารางต้นทางและตารางเป้าหมายโดยไม่ซ้ำกัน คุณไม่สามารถใช้คีย์หลัก Id เป็นคีย์การซิงโครไนซ์เนื่องจากไม่ได้อยู่ในตารางต้นทาง

หลังจากการซิงโครไนซ์ตารางจะมีลักษณะดังนี้:

เนื้อหาของตารางหลังการซิงโครไนซ์

ในตัวอย่างข้างต้นมีตารางกว้างหนึ่งตัวเป็นแหล่งที่มา นอกจากนี้ยังมีสถานการณ์ทั่วไปเมื่อข้อมูลต้นทางถูกเก็บไว้ในตารางที่เกี่ยวข้อง ความสัมพันธ์ใน SQL Database Studio ไม่ได้กำหนดโดยใช้คีย์ต่างประเทศ แต่ชื่อคอลัมน์ วิธีนี้ยังสามารถนำเข้าจากไฟล์ CSV หรือ Excel ได้ (ไฟล์ถูกโหลดลงในตารางชั่วคราวและการซิงโครไนซ์จะถูกเรียกใช้จากตารางนั้น) การตั้งชื่อคอลัมน์ที่ไม่ซ้ำกันเป็นแนวทางปฏิบัติที่ดี หากไม่สามารถทำได้คุณสามารถกำหนดนามแฝงให้กับคอลัมน์เหล่านั้นได้

ข้อดี

  • สร้างง่ายและรวดเร็ว
  • ดูแลรักษาง่าย
  • สามารถบันทึกลงในโพรซีเดอร์ที่เก็บไว้ได้ (โพรซีเดอร์ที่จัดเก็บจะถูกบันทึกด้วยข้อมูลที่จำเป็นเพื่อเปิดการซิงโครไนซ์ในตัวแก้ไขในภายหลัง)

ข้อเสีย

  • โซลูชันเชิงพาณิชย์

การเปรียบเทียบโซลูชัน

การซิงโครไนซ์ข้อมูลประกอบด้วยลำดับของ INSERT, UPDATE หรือ DELETE คำสั่ง มีหลายวิธีในการสร้างลำดับของคำสั่งเหล่านี้ ในบทความนี้เราดูตัวเลือกสามตัวในการสร้างสคริปต์ SQL ซิงโครไนซ์ ตัวเลือกแรกคือการสร้างทุกอย่างด้วยตนเอง เป็นไปได้ (แต่ใช้เวลามากเกินไป) ต้องมีความเข้าใจที่ซับซ้อนเกี่ยวกับ SQL และยากที่จะสร้างและดูแลรักษา ทางเลือกที่สองคือการใช้เครื่องมือทางการค้า เราดูเครื่องมือต่อไปนี้:

  • ข้อมูล dbForge เปรียบเทียบสำหรับ SQL Server
  • RedGate SQL Data เปรียบเทียบ
  • Apex SQL Data Diff
  • สตูดิโอฐานข้อมูล SQL

เครื่องมือสามตัวแรกทำงานคล้ายกันมาก พวกเขาเปรียบเทียบข้อมูลให้ผู้ใช้วิเคราะห์ความแตกต่างและสามารถซิงโครไนซ์ความแตกต่างที่เลือก (แม้โดยอัตโนมัติหรือจากบรรทัดคำสั่ง) ซึ่งเป็นประโยชน์สำหรับสถานการณ์การใช้งานเหล่านี้:

  • ฐานข้อมูลไม่ซิงค์เนื่องจากข้อผิดพลาดต่างๆ
  • คุณต้องหลีกเลี่ยงการจำลองแบบในขณะที่ถ่ายโอนข้อมูลระหว่างสภาพแวดล้อม
  • จำเป็นต้องมีรายงานการเปรียบเทียบข้อมูลใน Excel หรือ HTML

เครื่องมือแต่ละตัวเป็นที่ชื่นชอบด้วยเหตุผลเดียว: dbForge มี UI ที่ยอดเยี่ยมและตัวเลือกมากมาย ApexSQL ทำงานได้ดีกว่าที่เหลือและ RedGate เป็นเครื่องมือที่ได้รับความนิยมสูงสุด

เครื่องมือที่สี่ SQL Database Studio ทำงานแตกต่างกันเล็กน้อย สร้างสคริปต์ SQL ที่มีตรรกะการซิงโครไนซ์ไม่ใช่การเปลี่ยนแปลง ประสิทธิภาพก็ยอดเยี่ยมเช่นกันเนื่องจากงานทั้งหมดทำโดยตรงบนเซิร์ฟเวอร์ฐานข้อมูลดังนั้นจึงไม่จำเป็นต้องถ่ายโอนข้อมูลระหว่างเซิร์ฟเวอร์ฐานข้อมูลและเครื่องมือซิงโครไนซ์ เครื่องมือนี้มีประโยชน์สำหรับกรณีการใช้งานต่อไปนี้:

  • การย้ายฐานข้อมูลอัตโนมัติโดยที่ฐานข้อมูลมีโครงสร้างที่แตกต่างกัน
  • นำเข้าสู่ตารางที่เกี่ยวข้องหลายตาราง
  • นำเข้าจากแหล่งภายนอก XML, CSV, MS Excel

ที่เกี่ยวข้อง: คู่มือ Oracle ไปยัง SQL Server และ SQL Server ไปยัง Oracle Migration

ทำความเข้าใจพื้นฐาน

มีเครื่องมือใดบ้างสำหรับการซิงโครไนซ์ฐานข้อมูล

คุณสามารถใช้เครื่องมือเช่น RedGate Data Compare, ApexSQL Data Diff และ dbForge Data Compare ซึ่งใช้วิธีเปรียบเทียบข้อมูล คุณสามารถใช้ SQL Database Studio ซึ่งสร้างสคริปต์ SQL ที่ใช้ซ้ำได้โดยอัตโนมัติ

จะเปรียบเทียบข้อมูลฐานข้อมูลได้อย่างไร?

การเปรียบเทียบตามข้อมูลสามารถทำได้โดยอัตโนมัติโดยใช้เครื่องมือของบุคคลที่สามซึ่งมีราคา หรือคุณสามารถเขียนสคริปต์ SQL เปรียบเทียบที่แสดงความแตกต่าง แต่ใช้เวลานานกว่าและใช้ซ้ำได้น้อยกว่า

จะซิงโครไนซ์ฐานข้อมูลใน SQL Server ได้อย่างไร?

คุณสามารถซิงโครไนซ์ฐานข้อมูล SQL ด้วยตนเองโดยการเขียนสคริปต์ SQL (INSERT, DELETE, UPDATE) หรือคุณสามารถใช้เครื่องมือของบุคคลที่สามซึ่งมีราคา เครื่องมือของบุคคลที่สามทำงานโดยการเปรียบเทียบข้อมูลและสร้างสคริปต์ SQL การซิงโครไนซ์หรือคุณสามารถตั้งค่าตรรกะการซิงโครไนซ์และสร้างสคริปต์ SQL ตาม

การเรียนรู้ของเครื่องสามารถเพิ่มความปลอดภัยทางไซเบอร์ให้กับรถยนต์ที่เป็นอิสระได้อย่างไร

นวัตกรรม

การเรียนรู้ของเครื่องสามารถเพิ่มความปลอดภัยทางไซเบอร์ให้กับรถยนต์ที่เป็นอิสระได้อย่างไร
วิธีป้องกันฟีเจอร์ Creep ด้วยแนวทางปฏิบัติที่ดีที่สุดของ User Story

วิธีป้องกันฟีเจอร์ Creep ด้วยแนวทางปฏิบัติที่ดีที่สุดของ User Story

การออกแบบ Ux

โพสต์ยอดนิยม
การบันทึกผลิตภัณฑ์ X - กรณีศึกษาการคิดเชิงออกแบบ
การบันทึกผลิตภัณฑ์ X - กรณีศึกษาการคิดเชิงออกแบบ
ผู้แทนฝ่ายพัฒนาการขาย SMB
ผู้แทนฝ่ายพัฒนาการขาย SMB
Python Logging: บทช่วยสอนเชิงลึก
Python Logging: บทช่วยสอนเชิงลึก
การขุดข้อมูลสำหรับการวิเคราะห์เครือข่ายสังคมออนไลน์แบบคาดเดา
การขุดข้อมูลสำหรับการวิเคราะห์เครือข่ายสังคมออนไลน์แบบคาดเดา
ผู้อำนวยการฝ่ายบริการลูกค้าองค์กรผลิตภัณฑ์และบริการอุตสาหกรรม
ผู้อำนวยการฝ่ายบริการลูกค้าองค์กรผลิตภัณฑ์และบริการอุตสาหกรรม
 
การคาดการณ์การลงทุนในปี 2560: สัญญาณของความเหนื่อยล้า
การคาดการณ์การลงทุนในปี 2560: สัญญาณของความเหนื่อยล้า
เกิดอะไรขึ้นกับ BlackBerry: Zombie Stock หรือ Comeback King?
เกิดอะไรขึ้นกับ BlackBerry: Zombie Stock หรือ Comeback King?
Erik Stettler เข้าร่วม ApeeScape ในตำแหน่งหัวหน้านักเศรษฐศาสตร์
Erik Stettler เข้าร่วม ApeeScape ในตำแหน่งหัวหน้านักเศรษฐศาสตร์
คู่มือพื้นฐานสำหรับการใช้งานมือถือ
คู่มือพื้นฐานสำหรับการใช้งานมือถือ
สร้างส่วนประกอบทางรถไฟที่เพรียวบางด้วยวัตถุทับทิมเก่า ๆ
สร้างส่วนประกอบทางรถไฟที่เพรียวบางด้วยวัตถุทับทิมเก่า ๆ
โพสต์ยอดนิยม
  • ความรับผิดชอบต่อสังคมขององค์กรเพิ่มผลกำไรหรือไม่
  • เคล็ดลับและเทคนิคการนำเสนอ powerpoint
  • รูปแบบวันที่และเวลาของจาวาสคริปต์
  • ไฟล์บูตสแตรปคืออะไร
  • ความยืดหยุ่นของราคาของอุปทานใช้เพื่อวัด
  • ลินุกซ์ใช้ภาษาโปรแกรมอะไร
หมวดหมู่
  • ไลฟ์สไตล์
  • บุคลากรและทีมงานของผลิตภัณฑ์
  • ชีวิตนักออกแบบ
  • อื่น ๆ
  • © 2022 | สงวนลิขสิทธิ์

    portaldacalheta.pt