AtomixDB ซึ่งเป็นมินิฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์สที่เขียนด้วย Go ได้จุดประกายความสนใจในชุมชนนักพัฒนาในฐานะโครงการเพื่อการศึกษาเพื่อทำความเข้าใจพื้นฐานของฐานข้อมูล โครงการนี้มุ่งเน้นไปที่การนำแนวคิดหลักของฐานข้อมูลมาใช้ เช่น การจัดการพื้นที่เก็บข้อมูลและการจัดการธุรกรรม ซึ่งเป็นส่วนหนึ่งของแนวโน้มที่เพิ่มขึ้นของฐานข้อมูลที่สร้างขึ้นเฉพาะเพื่อวัตถุประสงค์ในการเรียนรู้
คุณสมบัติของ AtomixDB
- เครื่องมือจัดเก็บข้อมูลแบบ B+ Tree พร้อมรองรับการทำดัชนี
- การจัดการรายการว่างสำหรับการนำโหนดกลับมาใช้ใหม่
- รองรับการทำธุรกรรม
- รองรับการอ่านข้อมูลพร้อมกัน
คำสั่งที่รองรับ
- CREATE
- INSERT
- GET
- UPDATE
- DELETE
- BEGIN
- COMMIT
- ABORT
ความต้องการของระบบ
- Go (เวอร์ชัน 1.17 หรือใหม่กว่า)
- Git
- ระบบปฏิบัติการ Linux
โครงการฐานข้อมูลเพื่อการศึกษากำลังได้รับความนิยมเพิ่มขึ้น
AtomixDB เป็นส่วนหนึ่งของการเคลื่อนไหวที่ใหญ่ขึ้น ที่นักพัฒนาสร้างระบบฐานข้อมูลเพื่อเพิ่มความเข้าใจในแนวคิดพื้นฐาน ชุมชน Reddit r/databasedevelopment มักจะมีโครงการคล้ายๆ กันนี้ โดยมีตัวอย่างมากมายที่แชร์ในช่วงไม่กี่เดือนที่ผ่านมา การพัฒนาเพื่อการศึกษาเหล่านี้ช่วยให้โปรแกรมเมอร์สามารถสำรวจแนวคิดฐานข้อมูลที่ซับซ้อนผ่านการพัฒนาแบบลงมือทำ แทนที่จะเป็นเพียงการศึกษาทฤษฎี
ผู้แสดงความคิดเห็นหลายคนได้ชี้ไปยังทรัพยากรเพิ่มเติมสำหรับผู้ที่สนใจการเรียนรู้การพัฒนาฐานข้อมูล รวมถึงหลักสูตรระบบฐานข้อมูลของ MIT ซึ่งมีโครงการฐานข้อมูล Golang สิ่งนี้แสดงให้เห็นถึงระบบนิเวศของทรัพยากรการศึกษาที่เติบโตขึ้นโดยมุ่งเน้นที่การพัฒนาฐานข้อมูลในทางปฏิบัติ
ความคิดเห็นจากชุมชนเน้นย้ำความต้องการเอกสารประกอบ
ในขณะที่ความสำเร็จทางเทคนิคของการสร้างฐานข้อมูลจากศูนย์ได้รับคำชม ความคิดเห็นจากชุมชนส่วนใหญ่มุ่งเน้นไปที่ความจำเป็นในการมีเอกสารประกอบที่ครอบคลุมมากขึ้น ผู้แสดงความคิดเห็นหลายคนสังเกตเห็นการขาดตัวอย่างการใช้งานและคำอธิบายที่ชัดเจนเกี่ยวกับวิธีการทำงานของฐานข้อมูลในทางปฏิบัติ
สิ่งหนึ่งที่ผมอยากเพิ่มลงในไฟล์ readme คือตัวอย่างของวิธีการใช้ฐานข้อมูลในแอปพลิเคชันตัวอย่าง จากเอกสารประกอบ เห็นได้ชัดว่านี่ไม่ใช่ฐานข้อมูล SQL (ยัง?) ดังนั้นจึงควรมีตัวอย่างให้เห็นว่าจะใช้ฐานข้อมูลนี้อย่างไร
ข้อเสนอแนะนี้เน้นย้ำความท้าทายทั่วไปในโครงการทางเทคนิค: การสร้างสมดุลระหว่างงานพัฒนากับเอกสารประกอบที่ทำให้โครงการเข้าถึงได้สำหรับผู้อื่น สำหรับโครงการเพื่อการศึกษาเช่น AtomixDB เอกสารที่ชัดเจนทั้งรูปแบบการใช้งานและรายละเอียดการพัฒนาสามารถเพิ่มคุณค่าอย่างมากในฐานะทรัพยากรการเรียนรู้
คุณสมบัติและจุดเน้นในการพัฒนา
AtomixDB ได้พัฒนาส่วนประกอบหลักของฐานข้อมูลหลายอย่าง รวมถึงเครื่องมือจัดเก็บข้อมูลแบบ B+ Tree พร้อมการสนับสนุนการทำดัชนี, การจัดการรายการที่ว่างสำหรับการนำโหนดกลับมาใช้ใหม่, การสนับสนุนธุรกรรม และการอ่านพร้อมกัน ปัจจุบันฐานข้อมูลนี้รองรับคำสั่งพื้นฐาน เช่น CREATE, INSERT, GET, UPDATE และ DELETE รวมถึงการดำเนินการธุรกรรม BEGIN, COMMIT และ ABORT
การที่โครงการนี้มุ่งเน้นไปที่รายละเอียดการพัฒนามากกว่าการแข่งขันกับฐานข้อมูลที่มีอยู่แล้ว สะท้อนให้เห็นถึงลักษณะเพื่อการศึกษาของโครงการ สมาชิกบางคนในชุมชนสังเกตว่า การเข้าใจวัตถุประสงค์ของโครงการในฐานะเครื่องมือการเรียนรู้เป็นกุญแจสำคัญในการประเมินผลงานของโครงการ แทนที่จะเปรียบเทียบกับฐานข้อมูลเพื่อการผลิต
สำหรับนักพัฒนาที่สนใจเกี่ยวกับส่วนประกอบภายในของฐานข้อมูล โครงการเช่น AtomixDB ให้ข้อมูลเชิงลึกที่มีคุณค่าเกี่ยวกับวิธีการทำงานร่วมกันขององค์ประกอบพื้นฐานของฐานข้อมูล ในฐานะเครื่องมือการศึกษา พวกเขาให้ส่วนเสริมในทางปฏิบัติต่อความรู้ทางทฤษฎี ช่วยให้โปรแกรมเมอร์สามารถสำรวจแนวคิด เช่น การจัดการธุรกรรมและการจัดการพื้นที่เก็บข้อมูลผ่านการพัฒนาโดยตรง
อ้างอิง: AtomixDB: An Open-Source, Mini Relational Database in Go