• Email Address: info@sittech.co.th
  • Phone number: + 66648597845

อะไรคือความแตกต่างระหว่าง MySQL และ MariaDB?

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

ตอนนี้ มาดูความแตกต่างที่สำคัญระหว่าง RDBMS ทั้งสองกันดีกว่า


1.JSON

MySQL จัดเตรียมประเภทข้อมูล JSON ดั้งเดิมที่กำหนดโดย RFC 7159 ซึ่งช่วยให้สามารถเข้าถึงข้อมูลในเอกสาร JSON (JavaScript Object Notation) ได้อย่างมีประสิทธิภาพโดยเริ่มจากเวอร์ชัน 5.7


2.Standard functions

ทั้ง MariaDB และ MySQL รองรับรูปแบบ JSON และใช้ฟังก์ชัน JSON เดียวกันหลายฟังก์ชัน อย่างไรก็ตาม MySQL เก็บเอกสาร JSON เป็นอ็อบเจ็กต์ไบนารี ในขณะที่ MariaDB เก็บเอกสาร JSON เป็นสตริง


3.SQL

ทั้ง MariaDB และ MySQL รองรับ SQL มาตรฐาน แต่ MariaDB ได้พัฒนาและใช้งานเพิ่มเติมอีก ตัวอย่าง เช่น เมื่อพูดถึง ฐานข้อมูล Object ตัว MariaDB รองรับแบบลำดับ(sequences) ซึ่งไม่มีใน MySQL


4.ดัชนี(Index) 

ในแง่ของดัชนี(Index) MySQL นั้นเหนือกว่าเพราะไม่เพียงแค่รองรับดัชนี(Index) มาตรฐานเท่านั้น แต่ยังรองรับดัชนี(Index) จากมากไปหาน้อย ใช้งานได้จริง และ invisible indexes ด้วย

MySQL 8.0 ซึ่งอยู่ในระดับแนวหน้าด้านความปลอดภัย ใช้การพิสูจน์ตัวตนเริ่มต้นโดยใช้อัลกอริทึม SHA-256 ซึ่งมีไว้เพื่อปรับปรุงความปลอดภัย MariaDB รองรับการตรวจสอบสิทธิ์ผ่านปลั๊กอินการตรวจสอบสิทธิ์เท่านั้น

เมื่อพูดถึงการรับรองความถูกต้องของการตรวจสอบสิทธิ์(Authentication) เราจะนึกถึงการอัปเดตไปใช้ MySQL 8.0 ซึ่งมีการแนะนำให้ไปใช้ policy นำรหัสผ่านมาใช้ซ้ำ(password reuse policies) ซึ่งยังไม่พร้อมใช้งานใน MariaDB ในตอนนี้


5.การเข้ารหัส (Encryption)

MySQL เข้ารหัสบันทึกการทำซ้ำ/เลิกทำ (เมื่อเปิดใช้งาน) แต่จะไม่เข้ารหัสพื้นที่ตารางชั่วคราวหรือบันทึก log ไบนารี MariaDB แนะนำการเข้ารหัสบันทึกไบนารีและตารางชั่วคราว (น่าจะเพื่อความปลอดภัย)


6.การจัดการคีย์ (Key Management)

MariaDB มีปลั๊กอินการจัดการคีย์ของ AWS เป็นค่าเริ่มต้น 

MySQL รองรับปลั๊กอินการจัดการคีย์ อย่างไรก็ตาม มีเฉพาะในรุ่น Enterprise เท่านั้น


7.ตรวจสอบความถูกต้องรหัสผ่าน(Validate_password)

MySQL มาพร้อมกับองค์ประกอบ validate_password ซึ่งใช้ในการตรวจสอบและเพิ่มความปลอดภัยของรหัสผ่าน ดูเหมือนว่าองค์ประกอบ validate_password จะแทนที่ด้วยปลั๊กอิน validate_password ที่เลิกใช้งานแล้ว ในทางกลับกัน MariaDB มีปลั๊กอินตรวจสอบรหัสผ่านสามตัว  ปลั๊กอิน simple_password_check, ปลั๊กอิน cracklib_password_check และปลั๊กอิน password_reuse_check


8.สุดยอดอ่านอย่างเดียว (Super read-only)

MySQL มีโหมด super read-only ที่ขยายการทำงานแบบอ่านอย่างเดียว เมื่อเปิดใช้งานตัวแปรระบบแบบอ่านอย่างเดียว เซิร์ฟเวอร์จะอนุญาตให้อัปเดตไคลเอ็นต์เฉพาะเมื่อมีการระบุสิทธิ์ SUPER เท่านั้น หากเปิดใช้งานตัวแปรระบบ super read-only ด้วยเช่นกัน เซิร์ฟเวอร์จะป้องกันไม่ให้มีการอัพเดตไคลเอ็นต์ MariaDB ไม่มีคุณสมบัติดังกล่าว


9.Threadpool

MARIADB นำเสนอการเชื่อมต่อ  THREADPOOL ซึ่งมีประสิทธิภาพสูงสุดเมื่อการ QUERIES เมื่อ CPU โหลดหนัก (เวิร์กโหลด OLTP) 

รุ่น MYSQL COMMUNITY มีกำหนดจำนวนเธรดที่แน่นอน ซึ่งจำกัดความสามารถของระบบในหลายสถานการณ์ 

ส่วน MYSQL ENTERPRISE มีฟังก์ชันการทำงานของ THREADPOOL


10.ฐานข้อมูลและการปกป้องข้อมูล

ทั้งคู่เป็น RDBMS สำหรับ MySQL และ MariaDB มีไฟร์วอลล์ของฐานข้อมูล อย่างไรก็ตาม MariaDB นำเสนอคุณสมบัติฐานข้อมูลขั้นสูงและการปกป้องข้อมูลสองสามอย่าง: dynamic data masking , obfuscation , การควบคุมปริมาณการสืบค้น(Limit Query) และจำกัดผลลัพธ์การ query


11.การเปรียบเทียบและประสิทธิภาพ

มีการทดสอบเกณฑ์ประสิทธิภาพมากมายทั้งบน Engine ของ MySQL และ MariaDB ตลอดหลายปีที่ผ่านมา แทบเป็นไปไม่ได้เลยที่จะตัดสินใจว่าฐานข้อมูลใดเร็วกว่า เนื่องจากขึ้นอยู่กับหลายปัจจัย (ถ้าไม่เทียบกันในเรื่องของฟีเจอร์)


12.การทำสำเนา(Replication)

ฐานข้อมูลทั้งสองรองรับการทำสำเนา(Replication) MariaDB ส่วนใหญ่รองรับการทำสำเนา(Replication) จากฐานข้อมูล MySQL ซึ่งช่วยให้ย้ายฐานข้อมูล MySQL ไปยัง MariaDB ได้อย่างง่ายดาย แต่อย่างไรก็ตามการทำย้อนกลับจาก MariaDB ไป MySQL ไม่ compatible 100% โดยเฉพาะในรุ่นเก่า ๆ เนื่องจากเวอร์ชัน MySQL ส่วนใหญ่ไม่รองรับการทำสำเนา(Replication) จากเซิร์ฟเวอร์ MariaDB อย่างไรก็ตาม เซิร์ฟเวอร์ MariaDB ไม่สามารถทำสำเนา(Replication) จากเซิร์ฟเวอร์หลัก MySQL 8.0 ได้ เนื่องจาก MySQL 8.0 มีรูปแบบ Log ไบนารีที่เข้ากันไม่ได้ (รอดูว่าจะมีการทำให้เหมือนกันไหม)

นอกจากนี้ ควรสังเกตว่า MySQL GTID นั้นแตกต่างจาก MariaDB GTID ซึ่งหมายความว่าเมื่อมีการทำสำเนา(Replication) จาก MySQL ไปยัง MariaDB ข้อมูล GTID จะมีการเปลี่ยนแปลงอย่างเหมาะสมหรือไม่


13.เครื่องมือจัดเก็บ(Storage engines)

MySQL รองรับ Engine การจัดเก็บข้อมูลน้อยกว่า MariaDB แต่ไม่ได้หมายความว่าคุณต้องตัดสินด้วยตัวเลข แต่อย่างไรก็ตามการรู้ว่า RDBMS ใดสนับสนุน Engine การจัดเก็บข้อมูล ในงานบางอย่างจะช่วยให้คุณตอบสนองความต้องการของงานและทำให้งานของคุณมีประสิทธิภาพมากขึ้น


14.ปรับใช้บนลีนุกซ์ดิสทริบิวชันโดยปริยาย (Linux distributions by default)

เมื่อติดตั้งฐานข้อมูล MySQL บนลีนุกซ์บางรุ่น คุณอาจลงเอยด้วยการติดตั้งฐานข้อมูล MariaDB แทน เนื่องจากเป็นฐานข้อมูลดีฟอลต์ในบางเวอร์ชันของ Linux ไปแล้ว

ในเวอร์ชันล่าสุดของ Red Hat Enterprise/CentOS/Fedora/Debian MariaDB จะถูกติดตั้งตามค่าเริ่มต้น อย่างไรก็ตาม ใน OS distributions รุ่นอื่น ๆ หรือ บางรุ่น เช่น Ubuntu ยังคงใช้ MySQL เป็นฐานข้อมูลเริ่มต้นต่อไป (อนาคตไม่แน่อาจจะกลายเป็น MariaDB)


15.ความพร้อมใช้งานบนแพลตฟอร์มคลาวด์

บน Amazon Web Services (AWS), Microsoft Azure และ Rackspace Cloud มีให้ MariaDB เป็นบริการ

MySQL พร้อมใช้งานบนทั้งสามแพลตฟอร์มที่แสดงไว้ก่อนหน้านี้ เช่นเดียวกับบริการที่มีบนตัวจัดการของ Google Cloud


16.อัตราการเผยแพร่และการอัปเดต

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


17.การพัฒนาอย่างต่อเนื่อง

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


18.ความไม่ลงรอยกันระหว่าง MySQL และ MariaDB

มีตัวอย่างความไม่ลงรอยกันมากมายระหว่าง MariaDB และ MySQL ที่ระบุไว้ในเอกสารประกอบของ MariaDB ในบรรดาคุณสมบัติที่โดดเด่นที่สุดที่มีอยู่ใน MariaDB แต่ไม่ใช่ใน MySQL เราควรพูดถึงโหมดความเข้ากันได้กับ Oracle, การสนับสนุนสำหรับคอลัมน์ไดนามิก, คอลัมน์เสมือน, สถิติผู้ใช้เพิ่มเติม, ไบนารี log ที่บีบอัดได้, ขั้นตอนการสำรองข้อมูล และ DML-only flashback ที่อนุญาตอินสแตนซ์ ฐานข้อมูลหรือตารางที่จะย้อนกลับเป็นสแนปชอตเก่า สาระพัดปัญหาแต่เข้าใจได้เพราะอันนังเอกชนเอามาทำต่อ(และมีขาย Enterprise) อีกอันคนทั่วโลกมาช่วยกันทำแจก


19.การเปรียบเทียบประสิทธิภาพและความเร็ว

เมื่อพูดถึงความเร็วของ MariaDB และ MySQL เราต้องทราบว่าระบบจัดการฐานข้อมูลทั้งสองระบบรองรับความสามารถในการปรับขนาดพื้นฐานและคุณสมบัติด้านประสิทธิภาพ เช่น การแบ่งพาร์ติชันตารางและการบีบอัด อย่างไรก็ตาม ด้วยอาศัย MaxScale proxy อัจฉริยะ และ Spider และ Xpand Smart Engine ทำให้ MariaDB เหนือกว่า MySQL ในแง่ของความเร็วและประสิทธิภาพโดยรวม

ในบรรดาคุณลักษณะด้านประสิทธิภาพ ที่มีอยู่ใน MariaDB แต่ขาดใน MySQL เราควรพูดถึง Parallel execution การแคชผลลัพธ์การค้นหาผ่าน Redis การแยกการอ่าน/เขียน Casual reads, Sharding, และ Distributed SQL.


20.ความแตกต่างของไวยากรณ์(Syntax) และ Query

เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ ทั้ง MySQL และ MariaDB รองรับ ภาษา SQL ดังที่เราได้กล่าวไปแล้ว MariaDB เป็นตัวแยกของ MySQL ดังนั้น ที่จริงแล้ว MySQL และ MariaDB มีความแตกต่างทางไวยากรณ์ไม่มาก ตัวอย่างเช่น คำสั่ง MySQL และ MariaDB เช่น SELECT, INSERT และ UPDATE เหมือนกัน

มาดูความแตกต่างทางไวยากรณ์ที่แท้จริงระหว่างทั้งสองกันดีกว่า MySQL แปลงชื่อตารางทั้งหมดเป็นตัวพิมพ์เล็กในการจัดเก็บและการค้นหา ในขณะที่ MariaDB ชื่อของฐานข้อมูล ตาราง นามแฝงของตาราง และทริกเกอร์จะได้รับผลกระทบจาก system case sensitivity ของ MariaDB รองรับ INTERSECT และ EXCEPT แต่ MySQL ไม่รองรับ คำสั่ง MySQL TRUNCATE TABLE ไม่รองรับตัวเลือก CASCADE ในขณะที่ MariaDB ให้ตัวเลือก CASCADE transaction-safe


21.ชุมชน (Community)

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


22.ใบอนุญาต (Licensing)

MariaDB Server ได้รับอนุญาตภายใต้ GNU General Public License เวอร์ชัน 2 ในขณะที่สิทธิ์ใช้งาน MySQL มีสองตัวเลือก: GPLv2 (สำหรับรุ่น Community) และ Enterprise ความแตกต่างหลักระหว่างสิทธิ์ใช้งาน MySQL สองรายการนั้นอยู่ที่ฟังก์ชันการทำงานและการสนับสนุนที่มีให้ MariaDB มีแพ็คเกจที่สมบูรณ์ ในขณะที่ MySQL ไม่มี แต่มีข้อจำกัดบางรุ่น รุ่น Community ไม่มีความสามารถ เช่น Threadpool ซึ่งอาจทำให้ฐานข้อมูลและความเร็วในการสืบค้นลดลงอย่างมาก


23.การสนับสนุนทางเทคนิค

MySQL ให้ความช่วยเหลือลูกค้าตลอด 24 ชั่วโมง Oracle มีตัวเลือกการสนับสนุนที่หลากหลาย รวมถึงการสนับสนุนที่ขยายเวลา การสนับสนุนระยะยาว และบริการระดับพรีเมียม ตามความต้องการของลูกค้า ทีมสนับสนุนของ MariaDB คุ้นเคยกับฐานข้อมูลทั้ง MariaDB และ MySQL พวกเขาให้การสนับสนุนระดับองค์กรและพร้อมให้บริการตลอด 24 ชั่วโมงเช่นกัน


24.ความนิยม

ข้อดีอย่างหนึ่งที่ชัดเจนที่สุดของ MySQL คือการมีอยู่ในตลาดมาอย่างยาวนาน จากการจัดอันดับของ DB-Engines MySQL เป็นเอ็นจิ้นฐานข้อมูลที่ได้รับความนิยมมากเป็นอันดับสองของโลก ในขณะที่ MariaDB อยู่ในอันดับที่ 12 (8/11/2022) ดังนั้น ในแง่ของความนิยม MySQL จึงเป็นผู้ชนะที่ชัดเจน

25.ราคา (Price)

เพื่อตอบสนองความต้องการของธุรกิจแม้แต่ธุรกิจที่เล็กที่สุด รายการราคา MySQL ได้รวบรวม 3 รุ่นที่มีฟังก์ชันและราคาที่แตกต่างกัน การสมัครสมาชิกรายปีสำหรับ MySQL Standard Edition จะมีค่าใช้จ่ายประมาณ $2,000 ในขณะที่สำหรับ MySQL Enterprise Edition และ MySQL Cluster CGE คุณจะต้องจ่ายประมาณ $5,000 และ $10000 ตามลำดับ

MariaDB Community Server นั้นฟรีอย่างแน่นอน ในขณะที่ราคาสำหรับ MariaDB Enterprise สามารถต่อรองได้และสามารถเริ่มต้นที่ประมาณ $500 ต่อใบอนุญาต

26.ความเข้ากันได้ (Compatibility)

MariaDB ได้ประกาศความเข้ากันได้ในวงกว้างกับ MySQL เป็นเป้าหมายหลัก ทีมพัฒนา MariaDB มุ่งมั่นที่จะสร้างความมั่นใจว่าการแทนที่ MySQL ด้วย MariaDB จะเป็นไปอย่างราบรื่น พวกเขาทำการผสานระบบหลายเดือนจาก MySQL เพื่อรองรับคุณสมบัติล่าสุดและการแก้ไขข้อบกพร่องต่าง ๆ

ในที่นี้ เราควรจะพูดถึงปัญหาความเข้ากันได้ของ MariaDB และ Oracle MariaDB สามารถเรียกใช้ขั้นตอนการจัดเก็บที่เขียนใน Oracle PL/SQL ได้อย่างง่ายดาย และสามารถสร้างตารางใน MariaDB ได้โดยใช้ประเภทข้อมูล Oracle Database ยิ่งไปกว่านั้น MariaDB รองรับไวยากรณ์ Oracle Database syntax สำหรับ sequences.


#DATABASE #MariaDB #MySQL #RDBMS #comparison #SmartIT #ITConsulting

Related Post