Sunday, December 27, 2009

Oracle Heterogeneous Service (HS) การเชื่อมต่อ Oracle กับฐานข้อมูลตัวอื่น ๆ เช่น Microsoft SQL Server หรือ AS400 (ตอนที่ 1)

การเชื่อมต่อระหว่างระบบฐานข้อมูลต่างยี่ห้อกันบางทีก็ทำให้ปวดหัวและเสียเวลาได้เหมือนกัน การใช้ Heterogeneous Service อาจจะช่วยคุณได้เหมือนกับอธิชาติดังเรื่องข้างล่างนี้ครับ

ณัฐพลถูกมอบหมายให้เขียนรายงานเพื่อนำข้อมูลกรมธรรม์หลักที่ได้จากระบบประกันชีวิตหลักที่อยู่บนเครื่อง AS400 มาเปรียบเทียบกับเงินสินไหมที่บริษัทต้องจ่ายในแต่ละวัน ของแต่ละกรมธรรม์ซึ่งข้อมูลการเคลมนี้อยู่บนฐานข้อมูลที่เป็น Mircrosoft SQL Server ในขณะที่รายงานที่ออกนี้จะต้องนำมาจากฐานข้อมูล Oracle ที่ได้จากการเตรียมข้อมลจากฐานข้อมูล AS400 และ MSSQL ทั้งสอง เพื่อให้ระบบจัดการความสัมพันธ์ของลูกค้า (Customer Relation Ship Management -- CRM) สามารถนำไปใช้ได้ด้วย ณัฐพลจะทำอย่างไรเพื่อให้สามารถนำข้อมูลจากแหล่งทั้ง 3 เข้ามารวมกันได้อย่างไร้รอยต่อ และให้ทุกอย่างสามารถเป็นไปได้โดยอัตโนมัติ และเชื่อถือได้

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

ณัฐพลจึงขอให้ทีม AS400 Export ข้อมูลออกมาเป็นเท็กซ์ไฟล์ และให้ทีมงานที่ดูแลระบบสินไหม Export ข้อมูลออกมาเป็นเท็กซ์ไฟล์ทุกวันเช่นกัน ส่วนตัวเขาเองในฐานะผู้รวบรวมข้อมูลให้กับระบบ CRM ซึ่งอยู่บนฐานข้อมูลจะทำหน้าที่ Import ข้อมูลเข้าระบบฐานข้อมูล Oracle ทุกวันเช่นกัน ต่อจากนั้นก็แล้วแต่ว่าณัฐพลจะใช้วิธีการใดในการ Join ข้อมูลจากทั้งสองฐานเข้าด้วยกัน

วิธีการดังกล่าวเป็นวิธีการหนึ่งที่พบได้อยู่ทั่วไป แต่ด้วยขั้นตอนการนำข้อมูลเข้า ๆ ออก ๆ จากระบบหนึ่ง ไปยังอีกระบบหนึ่ง อาจทำให้เกิดความไม่สะดวกในการทำงาน และจะต้องอาศัยทักษะในการนำเข้า-ออกข้อมูลจากระบบต่าง ๆ เป็นเท็กซ์ไฟล์
ณัฐพลหากไม่ได้รับความช่วยเหลือจากทีม AS400 หรือ Microsoft SQL Server จะต้องมีทักษะในระบบฐานข้อมูลทั้งสองด้วย แล้วมีวิธีการอื่นไหมที่มีประสิทธิภาพกว่านี้

อธิชาติเป็นโปรแกรมเมอร์ที่มีความรู้ในระบบฐานข้อมูล Oracle เป็นอย่างดี และทราบว่า Oracle มีคุณสมบัติที่สามารถจะติดต่อกับฐานข้อมูลของบริษัทอื่น ๆ โดยผ่าน Heterogeneous Service เขาเริ่มจากการ Install โปรแกรม Client ของ AS400 ลงบนเครื่อง Oracle10gR2 Database Server ซึ่งมี OS เป็น Windows Server2003 และสร้าง ODBC Datasource เพื่อที่จะให้เครื่อง Database Server นี้สามารถมองเห็นทั้ง MSSQL และ AS400 ได้ จากนั้นเขาก็เข้าไปคอนฟิค Oracle Listener, และสร้างคอนเนคชั่นคอนฟิคกูเรชั่นในไฟล์ TNSNames.ora จากนั้นจึงได้เข้าไปสร้าง Database Link ในฐานข้อมูล Oracle เพียงเท่านี้เขาก็สามารถที่จะล็อกอินเข้าในฐานข้อมูล Oracle ในขณะเดียวกันก็สามารถที่จะคิวรีข้อมูลจาก AS400 หรือ MSSQL ได้โดยตรงโดยไม่ต้องล็อกเอาท์ออกมา เพียงเท่านี้อธิชาติก็สามารถที่จะคิวรีข้อมูลจากตารางใน AS400 หรือ MSSQL ได้สด ๆ ราวกับอยู่ในฐานข้อมูลเดียวกัน หลังจากไตร่ตรองแล้วเขาเลือกที่จะใช้วิธีการสร้างตารางที่เป็นก๊อปปี้ของตารางต้นทางแล้ว Import ข้อมูลเข้าไปทุกคืน ด้วยวิธีการนี้เขาสามารถควบคุมประสิทธิภาพของคิวรีในช่วงกลางวันที่มีผู้ใช้งานจำนวนมากได้ดีกว่าการคิวรีจากฐานข้อมูล AS400 หรือ MSSQL แบบ Online โดยหลังจากสร้างตารางเปล่าที่เหมือนต้นฉบับเอาไว้บน Oracle แล้ว อธิชาติจะเขียนคำสั่งเพื่อไปดึงข้อมูลมาโดยมีลักษณะคล้าย ๆ คำสั่งข้างล่างนี้
SQL> insert into ORACLE_TABLES select * from AS400_TABLES@AS400_DB_LINK;
เขาเขียนคำสั่งเหล่านี้เป็นสคริปต์ไฟล์เอาไว้เพื่อให้ข้อมูลอัพเดททุก ๆ คืน เพื่อให้แน่ใจว่าในตอนกลางวันระบบ CRM และรายงานของเขาจะมีข้อมูลที่ทันสมัยเอาไว้ใช้ทุกวัน

เรื่องของ Heterogeneous Service ยังมีต่อ ครั้งหน้าเราจะมาพูดถึงวิธีการทำกันนะครับ ขอขอบคุณที่ติดตามครับ

บทความที่เกี่ยวเนื่องกัน
Oracle Heterogeneous Service (HS) การเชื่อมต่อ Oracle กับฐานข้อมูลตัวอื่น ๆ เช่น Microsoft SQL Server หรือ AS400 (ตอนที่ 2)