รับทำเว็บไซต์ครบวงจร
เลือกภาษา Thai English     facebook
รายการหลัก



บทความ


Page Ranking Tool

Ms sql และการทำ Replication เพื่อ Sync ดาต้าเบส ระหว่าง 2 เครื่องเข้าด้วยกัน


สอน SQL Server
> Ms sql และการทำ Replication เพื่อ Sync ดาต้าเบส ระหว่าง 2 เครื่องเข้าด้วยกัน


ถ้ากล่าวโดยรวมๆแล้ว Replication นั้นได้รับการกล่าวขานจากนักวิจารณ์, DBA, Consultant จำนวนมากว่าเป็นฟีเจอร์ที่ดีที่สุดและน่าชื่นชมที่สุดฟีเจอร์หนึ่งเลยทีเดียว งานที่ต้องดำเนินการแบบกระจาย (Distributed Transaction) สามารถดำเนินไปด้วยประสิทธิภาพที่ดีเมื่อเลือกใช้ Replication เป็นโซลูชัน งานดังกล่าวจะรวมถึง การกระจายและรวบรวมข้อมูลจากสำนักงาน(หรือสาขา)ที่กระจายอยู่ในหลายภูมิภาค แอพพลิเคชันแบบ Scaling Out การเตรียมข้อมูลสำเนาให้ใช้ในการออกรายงานหรืองานที่ไม่มีการเปลี่ยนแปลงข้อมูล การทำ Data Warehouse คำจำกัดความอย่างสั้นๆของ Replication คือการทำสำเนาข้อมูลซึ่งอาจจะเล็กแค่หนึ่งเทเบิลหรือใหญ่ถึงขนาดมีข้อมูลครบทั้งฐานข้อมูล แล้วกระจายออกไปใช้งานในแหล่งอื่นๆที่มีความสัมพันธ์กัน และยังสามารถกำหนดให้นำข้อมูลที่มีการเปลี่ยนแปลงจากแหล่งใดๆ (ที่ได้รับการกระจายข้อมูลให้ในตอนแรก) กลับมาอัพเดตให้กับแหล่งอื่นๆที่เกี่ยวข้องกันด้วย สิ่งที่ควรพูดถึงต่อไปเกี่ยวกับ Replication ก็คือองค์ประกอบหลัก ซึ่งเกิดขึ้นและทำงานร่วมกันหลังจากการกำหนดค่าใน SQL Server ขึ้นมาแล้ว ไมโครซอฟท์อุปมาอุปมัยงาน Replication เหมือนเป็นธุรกิจสิ่งพิมพ์ (นิตยสาร, วารสาร) ซึ่งองค์ประกอบที่สำคัญคือ Publisher เป็นเซิร์ฟเวอร์ที่ให้กำเนิดข้อมูลที่จะส่งกระจายออกไปนั่นเอง ข้อมูลที่เตรียมไว้และจะส่งกระจายออกไปแต่ละครั้งนั้นจะเรียกว่า Publications (สิ่งตีพิมพ์) ซึ่งประกอบขึ้นมาจาก Articles (บทความ) โดยแต่ละ Article ก็จะเป็นลอจิคัลเทเบิล ขึ้นอยู่กับการกำหนดค่าของ Replication เองว่า Article หนึ่งๆอาจจะเป็นหนึ่งเทเบิลหรือหนึ่งวิวเลยก็ได้ (เทเบิล และวิว นั้นคาดว่าผู้อ่านส่วนใหญ่น่าจะแยกแยะและเข้าใจความหมายได้ดี) หรืออาจจะเป็นกลุ่มของคอลัมน์จากเทเบิล/วิวใดๆ โดยไม่ได้ดึงมาครบทั้งเทเบิล/วิวก็ได้ Subscriber เป็นเซิร์ฟเวอร์ที่คอยรับ Publications (หรือไปดึงเอามา) ที่ Publisher ผลิตออกมา ก่อนจะรับหรือไปดึงมา ต้องจัดการเรื่อง Subscription (การสมัคร) ให้เรียบร้อยก่อนซึ่งมีอยู่ 2 แบบได้แก่ Pull Subsciption เป็นการสมัครเพื่อที่ Subscriber จะได้ไปดึงข้อมูล Publications มาใช้งานได้ หรือกล่าวได้ว่าเป็นการทำงานหรือความรับผิดชอบของเซิร์ฟเวอร์ที่เป็น Subscriber เองในการไปรับข้อมูล Publications มา เหมาะกับเซิร์ฟเวอร์ที่ไม่ได้เชื่อมต่อกับเซิร์ฟเวอร์ที่เป็น Publisher อย่างสม่ำเสมอ Push Subscription เป็นการสมัครเพื่อที่เซิร์ฟเวอร์ที่เป็น Publishers จะเป็นฝ่ายดำเนินการส่งข้อมูลออกมาให้เซิร์ฟเวอร์ที่เป็น Subscribers เอง การทำงาน(รวมไปถึงการใช้ทรัพยากรระบบ) จะเกิดขึ้นที่ Distributors Distributor เป็นเซิร์ฟเวอร์ที่ทำหน้าที่รวบรวม Publications จาก Publishers (หลาย Publishers สามารถใช้งาน Distributor เดียวกันร่วมกันได้) ก่อนจะส่งต่อออกไปที่ Subscribers (หรือ Subscribers มาดึงเอาไป) ถ้าเป็น Replication ที่กำหนดค่าอย่างง่ายแล้ว Publisher กับ Distributor สามารถถูกกำหนดให้ทำงานอยู่บนเซิร์ฟเวอร์เดียวกันก็ได้ (ถ้ากล่าวในมุมมองของ SQL Server อาจกล่าวได้ว่าถูกกำหนดให้ทำงานอยู่ในอินสแตนส์ (Instance) เดียวกัน) ข้อมูล Publications จะถูกเก็บรวบรวมไว้ที่ฐานข้อมูลระบบชื่อ Distribution ซึ่งหากยังไม่มีการกำหนดให้เกิดงาน Replication ขึ้นก็จะไม่มีฐานข้อมูลนี้ปรากฏขึ้นมาที่เซิร์ฟเวอร์ที่เป็น Distributor เมื่อรู้จักองค์ประกอบเรียบร้อยแล้ว ก่อนจะจบบทความตอนนี้ไป ขอโปรยไว้นิดนึงก่อนว่า Replication ใน SQL Server นั้นมีอยู่ด้วยกัน 3 ชนิด ได้แก่ Snapshot Replication Transactional Replication Merge Replication การประมวลผล distributed transactions ร่วมกับ DTC นั้นทุกเซิร์ฟเวอร์ที่ทำงานแบบกระจายจะต้องออนไลน์ (พร้อมทำงาน) ด้วยกันทั้งหมด เมื่อทรานแซกชันย่อยที่แต่ละเซิร์ฟเวอร์ทำเสร็จก็จะถูกคอมมิทและจัดการด้วยขั้นตอนตามโปรโตคอล 2-phase commit ซึ่งหากข้อผิดพลาดเกิดขึ้นแม้แต่จุดเดียวทรานแซกชันโดยรวมจะถูกยกเลิก แต่หากไม่มีข้อผิดพลาดเกิดขึ้นเลย สภาพข้อมูลในทุกเซิร์ฟเวอร์ก็จะถูกอัพเดตไปพร้อมกัน เสมือนไม่มีดีเลย์ในทุกเซิร์ฟเวอร์ ถ้ามองในแง่ความสัมพันธ์แล้วกล่าวได้ว่าสภาพข้อมูลไม่เป็นอิสระจากกัน (ต้องถูกจัดการให้ถูกต้องเหมือนกันพร้อมกันไปตลอดเวลาในทุกเซิร์ฟเวอร์) ทีนี้หากต้องเลือกสักทางเลือกก็คงต้องดูว่าระบบฐานข้อมูลนั้น ยอมรับได้แค่ไหนในระดับความเป็นอิสระจากกันของสภาพข้อมูลแต่ละเซิร์ฟเวอร์ (ต้องถูกต้องเหมือนกันตลอดเวลา หรือยอมให้ข้อมูลแต่ละเซิรฟเวอร์มีสภาพต่างกันได้บ้าง) << ความเป็นอิสระจากกันของสภาพข้อมูลของแต่ละเซิร์ฟเวอร์ = site autonomy >> มาถึงตรงนี้ก็สามารถโยงไปถึง 3 ชนิดของ SQL Server replication ได้แล้วอันได้แก่ Snapshot replication เป็นชนิดที่เรียบง่ายที่สุด ไม่มีการจัดการที่ซับซ้อนเหมือนอีก 2 ชนิด โดย publication ทั้งก้อนเต็มๆจาก publisher จะเป็นสิ่งเดียวที่จะนำมาใช้งาน ข้อมูลpublication แบบนี้ไมโครซอฟท์เรียกมันว่า snapshot (อันที่จริงข้อมูล snapshot นี้ replication อีก 2 ชนิดก็มีการใช้งานด้วยเช่นกัน) ข้อมูลการเปลี่ยนแปลงย่อยๆอื่นๆจะไม่มีการนำใช้ใน replication ชนิดนี้ Transactional replication เริ่มต้นการทำงานนั้น publication แรกจะถือเป็นข้อมูล snapshot (ข้อมูลก้อนใหญ่ที่ใช้เป็นพื้นฐานแบบเดียวกับที่ snapshot replication ใช้) แต่มีความพิเศษตรงที่เมื่อมีการเปลี่ยนแปลงเกิดขึ้นกับ article (ลองย้อนกลับไปดูความหมายในตอนที่แล้วนะครับ) รายละเอียดการเปลี่ยนแปลงนั้นก็จะถูกรวบรวมจาก transaction log และนำส่งออกไปที่ subscriber อย่างต่อเนื่อง Merge replication คล้ายกับ transactional replication ในด้านการรวบรวมความเปลี่ยนแปลงของข้อมูลอย่างต่อเนื่อง แต่แทนที่จะส่งออกไปอย่างต่อเนื่องเช่นกัน จะมีการรวบรวมเป็นก้อนใหญ่กว่าแล้วค่อยส่งในลักษณะ batch ด้วยช่วงเวลาที่นานขึ้น นอกจากนี้ merge replication ยังมีการจัดการความขัดแย้งของข้อมูล (conflict resolver) ที่ดีเยี่ยมอีกด้วยเมื่อนำข้อมูลมาผสานหรือ merge กัน ขอขอบคุณบทความจาก http://coresharp.net

Short URL click!
<< กลับคืน : เข้าชม 13,532 ครั้ง : ขึ้นไปด้านบน

รับทำเว็บไซต์ รับสร้างเว็บไซต์ รับออกแบบเว็บ รับเขียนเว็บ รับสอนทำเว็บ รับเช่า hosting รับเช่าพื้นที่เว็บไซต์ จดชื่อเว็บ รับโปรโมทเว็บไซต์ รับดูแลเว็บ SiteMap
สปริงเกอร์http://www.xn--22c2c4blb9n.xn--o3cw4h/