เห็นคุณ DeltaFlyer กำลังบรรเลงซีรีส์บทความการพัฒนาโปรแกรมบน Pocket PC ซึ่งทำงานเชื่อมต่อกับฐานข้อมูล MS SQL Server CE ความยาวหลายตอนจบ น่าสนใจมากทีเดียว (ลองคลิกอ่านกันดูนะครับ) ซึ่งบทความนี้ก็จะไม่ได้มาวิจารณ์ซีรีส์นั้นใดๆทั้งสิ้น แต่อยากจะมาเสริมเรื่องราวทีช่วยสนับสนุนความรู้ที่ได้จากซีรีส์นั้นเข้าไปอีกน่ะครับ
สิ่งที่อยากจะเสริมก็คือเรื่องราวเกี่ยวกับ SQL Server CE ซึ่งจะถูกใช้เป็นโปรแกรมบริหารฐานข้อมูลสำหรับแอพพลิเคชัน .NET ที่ทำงานบน Pocket PC พวกคุณผู้อ่านบางคนคงจะรู้ว่า SQL Server นั้นบันทึกข้อมูลของฐานข้อมูลเป็นไฟล์ ถ้าเป็นเวอร์ชันพี่เบิ้มหน่อยอย่าง Enterprise หรือ Developer นั้นก็จะเป็นไฟล์ที่มีนามสกุล mdf (หรือ ndf) และถ้าเป็นเวอร์ชัน CE (ขอเรียกสั้นๆหน่อยนะครับ) ก็จะเป็นไฟล์นามสกุล sdf ทีนี้เจ้าไฟล์ sdf ตัวนี้จะรับข้อมูลเริ่มต้นมาจากฐานข้อมูลศูนย์กลาง แล้วมันก็จะถูกใช้งานเฉพาะตัวสำหรับสมาร์ทดีไวส์หนึ่งๆเท่านั้นเอง และเมื่อถึงระยะเวลาหนึ่งมันก็จะต้องทำการซิงโครไนส์กับฐานข้อมูลศูนย์กลาง เพื่อนำรายละเอียดการเปลี่ยนแปลงที่มันบันทึกไว้ไปบันทึกและดึงข้อมูลจากฐานข้อมูลศูนย์กลางมาอัพเดพข้อมูลของมัน การซิงโครไนส์ดังกล่าวมีวิธีให้เลือกทำได้ 2 วิธีคือ RDA (Remote Data Access) หรือไม่ก็ Merge Replication โดยหลายตำรารวมถึงแหล่งข้อมูลความรู้ส่วนใหญ่จะแนะนำให้ใช้วิธี Merge Replication เหตุผลหลักก็คือความสามารถที่สูงส่งกว่านั่นเอง
ถ้ากล่าวโดยรวมๆแล้ว Replication นั้นได้รับการกล่าวขานจากนักวิจารณ์, DBA, Consultant จำนวนมากว่าเป็นฟีเจอร์ที่ดีที่สุดและน่าชื่นชมที่สุดฟีเจอร์หนึ่งเลยทีเดียว งานที่ต้องดำเนินการแบบกระจาย (Distributed Transaction) สามารถดำเนินไปด้วยประสิทธิภาพที่ดีเมื่อเลือกใช้ Replication เป็นโซลูชัน งานดังกล่าวจะรวมถึง
- การกระจายและรวบรวมข้อมูลจากสำนักงาน(หรือสาขา)ที่กระจายอยู่ในหลายภูมิภาค
- แอพพลิเคชันแบบ Scaling Out
- การเตรียมข้อมูลสำเนาให้ใช้ในการออกรายงานหรืองานที่ไม่มีการเปลี่ยนแปลงข้อมูล
- การทำ Data Warehouse
คำจำกัดความอย่างสั้นๆของ Replication คือการทำสำเนาข้อมูลซึ่งอาจจะเล็กแค่หนึ่งเทเบิลหรือใหญ่ถึงขนาดมีข้อมูลครบทั้งฐานข้อมูล แล้วกระจายออกไปใช้งานในแหล่งอื่นๆที่มีความสัมพันธ์กัน และยังสามารถกำหนดให้นำข้อมูลที่มีการเปลี่ยนแปลงจากแหล่งใดๆ (ที่ได้รับการกระจายข้อมูลให้ในตอนแรก) กลับมาอัพเดตให้กับแหล่งอื่นๆที่เกี่ยวข้องกันด้วย
สิ่งที่ควรพูดถึงต่อไปเกี่ยวกับ Replication ก็คือองค์ประกอบหลัก ซึ่งเกิดขึ้นและทำงานร่วมกันหลังจากการกำหนดค่าใน SQL Server ขึ้นมาแล้ว ไมโครซอฟท์อุปมาอุปมัยงาน Replication เหมือนเป็นธุรกิจสิ่งพิมพ์ (นิตยสาร, วารสาร) ซึ่งองค์ประกอบที่สำคัญคือ
- Publisher เป็นเซิร์ฟเวอร์ที่ให้กำเนิดข้อมูลที่จะส่งกระจายออกไปนั่นเอง ข้อมูลที่เตรียมไว้และจะส่งกระจายออกไปแต่ละครั้งนั้นจะเรียกว่า Publications (สิ่งตีพิมพ์) ซึ่งประกอบขึ้นมาจาก Articles (บทความ) โดยแต่ละ Article ก็จะเป็นลอจิคัลเทเบิล ขึ้นอยู่กับการกำหนดค่าของ Replication เองว่า Article หนึ่งๆอาจจะเป็นหนึ่งเทเบิลหรือหนึ่งวิวเลยก็ได้ (เทเบิล<table> และวิว<view> นั้นคาดว่าผู้อ่านส่วนใหญ่น่าจะแยกแยะและเข้าใจความหมายได้ดี) หรืออาจจะเป็นกลุ่มของคอลัมน์จากเทเบิล/วิวใดๆ โดยไม่ได้ดึงมาครบทั้งเทเบิล/วิวก็ได้
- 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
รายละเอียดนั้นจะมาบรรยายในบทความหัวเดียวกันนี้ในตอนต่อไป ติดตามกันต่อนะครับ ขอให้ทุกท่านประสบแต่สิ่งดี
**********************
**บทความในซีรีส์นี้**
SQL Server Replication เบื้องต้นสำหรับผู้พัฒนาโปรแกรมบน Pocket PC (ตอนที่1)
SQL Server Replication เบื้องต้นสำหรับผู้พัฒนาโปรแกรมบน Pocket PC ตอนที่ 2 (RELOADED)