เอนจิ้นฐานข้อมูลคืออะไร?


14

ฉันได้อ่านคำจำกัดความในhttp://en.wikipedia.org/wiki/Database_engineหลายครั้ง:

เอ็นจิ้นฐานข้อมูล (หรือ "หน่วยเก็บเครื่องมือ") เป็นส่วนประกอบซอฟต์แวร์พื้นฐานที่ระบบจัดการฐานข้อมูล (DBMS) ใช้เพื่อสร้างอ่านอัปเดตและลบข้อมูล (CRUD) จากฐานข้อมูล

สิ่งที่ฉันไม่เข้าใจคือสิ่งที่เหลือไว้ทำไม่ CRUD ทั้งหมดที่ฐานข้อมูลจะทำอย่างไร

หากเอ็นจิ้นฐานข้อมูลทำหน้าที่เหล่านี้ส่วนที่เหลือของฐานข้อมูลจะทำอะไร?


สำหรับคำตอบที่ตรงกับคำถามที่โพสต์ด้วยตัวหนา ( ส่วนที่เหลือของฐานข้อมูลทำอะไร ) ดูคำตอบของไบรอัน สำหรับความชัดเจนเพิ่มเติมเกี่ยวกับสิ่งที่เอ็นจิ้นฐานข้อมูลทำนอกจาก CRUD ดูคำตอบของ Leigh
nealmcb

คำตอบ:


15

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

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

เครื่องยนต์ฐานข้อมูลอาจจัดการกับผู้ใช้หลายคนการทำธุรกรรม , MVCC (Multiversion Concurrency Control)บัฟเฟอร์และแคช, กรด (atomicity สอดคล้องแยกความทนทาน)เช่นเดียวกับการที่แตกต่างกันในระดับที่แยก การอ่านอาจดึงข้อมูลจากหน่วยความจำฐานข้อมูลระยะไกลและหลายตารางในการประมวลผลดิสก์โดยใช้ SQL ผ่านเส้นทางรหัสที่ชัดเจนและ / หรือโดยนัยหลายเส้นทางเพื่อนำเสนอไปยังแอปพลิเคชันที่ร้องขอ การสร้างอาจจัดสรรที่เก็บข้อมูลโครงสร้างการจัดสรรกำหนดค่าและดำเนินการเองก่อนที่จะจัดเก็บข้อมูล เป็นต้น


นี่เป็นคำตอบที่กะทัดรัด แต่ก็สมบูรณ์แบบ +1 !!!
RolandoMySQLDBA

BTW เป็นการเปรียบเทียบที่ดีเกี่ยวกับยานพาหนะกับยานพาหนะเฉพาะประเภท
RolandoMySQLDBA

ในความเห็นของฉันธุรกรรมการรับประกันกรดระดับการแยกการควบคุมพร้อมกันบัฟเฟอร์แคชทั้งหมดได้รับการจัดการโดยโปรแกรมฐานข้อมูลเอง ทำไมฉันพูดอย่างนั้น? ... ลองดูlinux.org/threads/an-introduction-to-mysql-storage-engines.4220
Shatu

@Leigh คุณลักษณะการทำงานพร้อมกันของอุปกรณ์จัดเก็บข้อมูลไม่ใช่ของ DBMS ใช่หรือไม่ หากเป็นคุณสมบัติของ DBMS แล้วทำไม MariaDB / MySQL ไม่สามารถทำธุรกรรมกับเอนจินการเก็บข้อมูลบางอย่างเช่น MyISAM ได้?
Pacerier

@Pacerier - สิ่งนี้อาจเป็นจริงสำหรับระบบที่ทำการแยกระหว่าง DBMS และเอนจินการเก็บข้อมูลสำหรับคนอื่น ๆ ความแตกต่างนั้นไม่มีความหมาย
Leigh Riffel

12

ฐานข้อมูลบางตัวสามารถเรียกใช้เอ็นจินจำนวนมากขึ้นอยู่กับความเหมาะสมที่สุดสำหรับงาน ตัวอย่างเช่นแอปพลิเคชันของฉันจำนวนมากใช้ InnoDB สำหรับข้อมูลส่วนใหญ่ (ข้อ จำกัด คีย์และการล็อกระดับแถว), MyISAM สำหรับข้อมูลเซสชัน (การประมวลผลที่รวดเร็วและน้อยกว่า) และ ArchiveDB สำหรับการตรวจสอบหลักฐาน (บีบอัดและใส่ / เลือกเท่านั้นไม่มีการอัพเดท / ลบ)

"ส่วนที่เหลือ" ของซอฟต์แวร์ฐานข้อมูลให้ส่วนต่อประสานทั่วไปสำหรับการใช้งานผ่าน API หรือเทอร์มินัลอนุญาตการดำเนินการที่ซับซ้อน (เช่นการรวมตัวค้นหาย่อย ฯลฯ ) และจัดการสุขภาพ / สถานะและการกำหนดค่าของเอ็นจิ้นที่รวม มีจำนวนมากในการให้อาหารและดูแลเครื่องยนต์และซอฟต์แวร์ฐานข้อมูลจะซ่อนความซับซ้อนทั้งหมดนั้นไว้


ขอบคุณที่ตอบคำถามจริง ๆ อย่างกล้าหาญ!
nealmcb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.