Convert database ด้วย AWS SCT

Prawit Tangmanopeanchai
4 min readJan 31, 2024

--

31 January 2024

ในฐานะที่เคยเป็น developer คนหนึ่ง เวลาจะต้องมีการย้ายระบบจากที่เคยใช้ database ค่ายหนึ่งเปลี่ยนไปใช้อีกค่ายหนึ่ง เราคงต้องมาดูว่า datatype ของเดิมถ้าเปลี่ยนไป database ค่ายใหม่จะต้องเปลี่ยนไปเป็นอะไร เพื่อให้ข้อมูลยังต้องเก็บไว้ได้เหมือนเดิม และตัวโปรแกรมก็ต้องสามารถรองรับ datatype ใหม่ด้วย รวมถึงยังต้อง update เอกสาร data dictionary ที่เปลี่ยนไปด้วยเพื่อให้สามารถใช้สื่อสารกับคนอื่น ๆ ในทีม develop ด้วยกัน

วันนี้มาแนะนำการใช้เครื่องมือ AWS SCT (Schema Conversion Tool) สำหรับใช้ในการแปลง database schema จาก database ค่ายหนึ่งไปยัง database อีกค่ายหนึ่ง

AWS SCT เป็นเครื่องมือที่ใช้ในการ convert database schema ของ AWS โดยสามารถ download มาใช้ได้ตาม link นี้

แต่ก่อนที่จะทำการ convert กันเรามาลองดูข้อจำกัดของเครื่องมือนี้กันก่อนนะครับ ไม่ใช่ว่ามันจะสามารถ convert ได้ทุก database ซะเมื่อไหร่ โดยสามารถดูข้อจำกัดได้ตาม link นี้

จะเห็นว่า source database ที่ SCT รองรับนั้นมีค่ายที่ใช้กันทั่ว ๆ ไปแทบจะครบทุกตัว แต่ตัว target หรือ database ปลายทางที่เราอยากจะ convert ไปนั้นมันได้ไม่หมดทุกตัวครับ เช่นถ้าเราอยากจะ convert จาก db2 ไป oracle ก็ไม่สามารถทำได้ หรืออยากจะ convert oracle ไปเป็น db2 ก็ทำไม่ได้เหมือนกัน ส่วนใหญ่ target database มักจะเป็นพวก database ตระกูล open source ซะเป็นส่วนใหญ่

คราวนี้หลังจากที่ download program มาแล้ว สิ่งที่ต้องทำต่อก่อนหน้าที่จะเริ่ม convert database schema กันก็คือ ต้องมี database driver ของ database ที่เราใช้ให้ครบก่อน โดยใน blog นี้คงจะไม่แนะนำวิธี download วิธีติดตั้ง database driver ของแต่ละตัวนะครับ

หลังจากทุกอย่างพร้อมแล้วก็มาเริ่มกันเลย โดยให้เปิด program AWS SCT ขึ้นมา

จากนั้นให้ทำการสร้าง project ใหม่สำหรับทำการ convert

ตั้งชื่อ project และกำหนดที่เก็บ output

เสร็จแล้วเราจะได้หน้าจอประมาณนี้

จากนั้นให้เราทำการ add source database โดยกดไปที่ “Add source”

จะมีหน้าจอแสดงค่ายของ database ต่าง ๆ มาให้เราเลือก ก็เลือกให้ตรงกับ source database ของเรา (ผมเลือก db2) เสร็จแล้วให้กดปุ่ม Next

จากนั้นก็ใส่รายละเอียดในการ connect ไปที่ source database เข้าไป

ลองกดปุ่ม Test ดูเพื่อทดสอบว่าเราสามารถ connect ไปที่ database ได้

(ในที่นี้ผมจะไม่ใช้ SSL ก็จะกดปุ่ม Accept the risk ไปนะครับ)

ได้ภาพนี้มาแสดงว่า connect database ที่เป็น source ได้สำเร็จ

จากนั้นก็กดปุ่ม Connect

เสร็จแล้วเราก็จะเห็น schema ทั้งหมดของ database

จากนั้นก็ให้เราไปเลือก Add target

\

เลือกประเภทของ database ที่เป็น target ของเรา (จะเห็นว่ามีแค่บาง database ให้เลือก)

ใน blog นี้ผมเลือกเป็น MySQL

ทดสอบ connect เรียบร้อย จากนั้นให้กดที่ปุ่ม connect แล้วที่ฝั่ง Targets จะแสดงรายการของ database ขึ้นมาให้ตามภาพ

จากนั้นให้เรา click เลือก schema ของ data source และ target

แล้วไปเลือก Mapping view ที่ menu Mapping view

ให้เราเลือก Create mapping

จากนั้นจะเห็นคู่ที่ map กันระหว่าง source และ target

จากนั้นให้กลับมาที่หน้าจอเดิมโดยกดที่ปุ่ม Main view

จากนั้นให้เราไป click ขวาที่ schema ของ data source แล้วเลือก Create report เพื่อดูว่าถ้าเราทำการ convert แล้วจะมีอะไรมีปัญหาบ้างหรือไม่

เมื่อดูรายงานผลจนเป็นที่พอใจแล้วก็ถึงเวลาที่จะ convert database schema กันแล้ว

ให้ click ขวาไปที่ schema ของ data source แล้วเลือก Convert schema

program จะถามว่าถ้า object ที่จะ convert ไปปลายทางมีอยู่แล้วจะให้ convert ทับเลยหรือไม่ อันนี้ผมตอบ Yes ไป

จากนั้นจะมี popup ขึ้นมาถามอีกครั้งว่า ปกติ SCT จะไม่ทำการสร้าง object ให้ที่ target โดยทันทีเนื่องจากอาจจะเกิดความผิดพลาดใด ๆ ขึ้นที่ target database ได้ จึงให้เราเป็นคนเลือกว่าจะ convert แบบ offline ซึ่งจะทำแค่ในเครื่องเราเท่านั้น หรือจะ connect ไปที่ target database เพื่อ convert เลย อันนี้ก็แล้วแต่จะเลือกกันเลยนะครับ แต่ใน blog นี้ผมจะเลือกเป็น Convert เอา

(จะเห็นว่า default ของ target database จะเป็น Disconnect อยู่)

หลังจาก convert เสร็จแล้วเราก็จะเห็น schema ที่เรา convert มาแสดงอยู่ที่ target database แล้ว (แต่ที่ตัว target database จะยังไม่มีนะครับ เนื่องจากไม่ได้เลือกเป็น Connect to database)

เป็นอันว่า convert ได้สำเร็จเป็นที่เรียบร้อย หากเราต้องการเอา script ออกมาเพื่อนำไปใช้ต่อก็ให้กด click ขวาที่ schema ของ target แล้วเลือก Save as SQL

เราก็จะได้เป็น script เพื่อเอาไปใช้งานอื่น ๆ ต่อไป

😄 😄 😄

--

--

Prawit Tangmanopeanchai
Prawit Tangmanopeanchai

Written by Prawit Tangmanopeanchai

Head of Cloud Implementation Unit at gosoft (Thailand)

No responses yet