นักพัฒนา Google ได้เปิดตัว Mangle ซึ่งเป็นภาษาโปรแกรมมิ่งแบบโอเพ่นซอร์สที่ขยายความสามารถของ Datalog สำหรับการเขียนโปรแกรมฐานข้อมูลแบบ deductive โปรเจกต์นี้มีเป้าหมายเพื่อทำให้การสืบค้นข้อมูลที่ซับซ้อนเข้าถึงได้ง่ายขึ้นสำหรับนักพัฒนา พร้อมทั้งแก้ไขข้อจำกัดที่มีมายาวนานของ SQL
คุณสมบัติหลักของ Mangle :
- ส่วนขยายของภาษาโปรแกรมมิ่ง Datalog
- รองรับการรวมข้อมูล การเรียกใช้ฟังก์ชัน และการตรวจสอบประเภทข้อมูลแบบเสริม
- กฎเวียนเกิดและการจัดโครงสร้างโปรแกรม
- สามารถแสดงความสัมพันธ์แบบ n-ary (ไม่จำกัดเฉพาะ binary predicates)
- พัฒนาเป็นไลบรารี Go เพื่อความสะดวกในการฝังตัว
- โอเพนซอร์สพร้อม GitHub repository และเอกสารประกอบ
ชุมชนตั้งคำถามเกี่ยวกับโปรเจกต์ภาษาสืบค้นหลายตัวของ Google
การเปิดตัวครั้งนี้ได้จุดประกายการอฟสนเกี่ยวกับแนวทางของ Google ในการพัฒนาภาษาสืบค้น โดยสมาชิกชุมชนสังเกตว่านี่ดูเหมือนจะเป็นภาษาสืบค้นแบบ logic-based ตัวที่สามที่เกิดขึ้นจากบริษัทนี้ แม้ว่า Mangle จะมีข้อความปฏิเสธความรับผิดชอบว่า นี่ไม่ใช่ผลิตภัณฑ์ที่ได้รับการสนับสนุนอย่างเป็นทางการจาก Google แต่ผู้สังเกตการณ์แนะนำว่าอาจเป็นอีกกรณีหนึ่งที่พนักงาน Google ถูกกำหนดให้เปิดซอร์สผลงานของตนภายใต้ชื่อบริษัท แม้จะเป็นโปรเจกต์ส่วนตัวก็ตาม
ชุมชนยังได้เชื่อมโยงกับโปรเจกต์อื่น ๆ ของ Google เช่น Logica ซึ่งถูกอ้างอิงในเอกสารของ Mangle นักพัฒนาบางคนตั้งคำถามว่าแผนกต่าง ๆ ภายใน Google กำลังพัฒนาเครื่องมือสืบค้นของตนเองแบบแยกกันหรือไม่
ส่วนขยาย Datalog ตอบสนองความต้องการในการพัฒนาจริง
ประเด็นสำคัญที่ถูกหยิบยกขึ้นมาอภิปรายคือเหตุผลที่การใช้งาน Datalog เกือบทุกตัว รวมถึง Mangle ต่างขยายภาษาดั้งเดิม สมาชิกชุมชนสังเกตว่าการใช้งาน Datalog แบบบริสุทธิ์นั้นหายาก โดย Datomic เป็นหนึ่งในตัวอย่างไม่กี่ตัวของการใช้งานแบบดั้งเดิมที่ค่อนข้างบริสุทธิ์ รูปแบบนี้สะท้อนให้เห็นว่าการใช้งาน SQL มักจะเพิ่มส่วนขยายของตนเองเพื่อแก้ไขข้อจำกัดในทางปฏิบัติ
Mangle เพิ่มฟีเจอร์หลายอย่างให้กับ Datalog พื้นฐาน รวมถึงการรวมข้อมูล การเรียกใช้ฟังก์ชัน และการตรวจสอบประเภทข้อมูลแบบเสริม ส่วนขยายเหล่านี้ทำให้ภาษานี้ใช้งานได้จริงมากขึ้น แม้ว่าจะต้องสูญเสียการรับประกันทางทฤษฎีบางอย่างของ Datalog เช่น การรับประกันการสิ้นสุดของการทำงาน
การเปรียบเทียบทางเลือกแทน SQL:
- Mangle: ใช้พื้นฐาน Datalog มุ่งเน้นการเขียนโปรแกรมฐานข้มูลแบบ deductive
- PreQL/Trilogy: ภาษาสำหรับการแปลงข้อมูล
- Malloy: ภาษาสำหรับการสร้างแบบจำลองข้อมูลเชิงความหมาย
- PRQL: ภาษาสำหรับการสืบค้นข้อมูลเชิงสัมพันธ์แบบ pipeline
- EdgeQL: ภาษาสำหรับการสืบค้นข้อมูลแบบ graph-relational
นักพัฒนาแสวงหาทางเลือกแทนข้อจำกัดของ SQL
การเปิดตัวครั้งนี้ได้จุดประกายการอภิปรายเกี่ยวกับข้อบกพร่องของ SQL ที่นอกเหนือไปจากปัญหาไวยากรณ์ ความคิดเห็นจากชุมชนเน้นย้ำปัญหาต่าง ๆ เช่น การขาดประเภทข้อมูลแบบ algebraic ความสามารถในการประกอบที่ไม่ดี และความยากลำบากในการจัดการข้อมูลแบบลำดับชั้นเช่นต้นไม้ในฐานข้อมูลเชิงสัมพันธ์
ข้อบกพร่องของ SQL ไม่ได้อยู่แค่ไวยากรณ์และแนวทางของคำสำคัญที่ต้องเขียนด้วยตัวพิมพ์ใหญ่ แต่ยังมีการขาดประเภทข้อมูลแบบ algebraic ความสามารถในการประกอบที่ไม่ดี และการขาดระบบโมดูลที่สอดคล้องกัน
Mangle เข้าร่วมรายชื่อทางเลือกแทน SQL ที่เพิ่มขึ้น รวมถึง PreQL/Trilogy, Malloy, PRQL และ EdgeQL โดยแต่ละตัวพยายามแก้ไขข้อจำกัดด้านต่าง ๆ ของการสืบค้นฐานข้อมูลแบบดั้งเดิม ในขณะที่ยังคงประโยชน์ของพีชคณิตเชิงสัมพันธ์ไว้
โปรเจกต์นี้ถูกพัฒนาเป็นไลบรารี Go ที่สามารถฝังเข้าไปในแอปพลิเคชันได้ พร้อมด้วยเอกสารและตัวอย่างที่มีให้บน GitHub สำหรับนักพัฒนาที่สนใจทดลองกับแนวคิดฐานข้อมูลแบบ deductive Mangle เป็นจุดเริ่มต้นที่ใช้งานได้จริงในการเข้าสู่แนวทางการเขียนโปรแกรมแบบ logic-based สำหรับการจัดการข้อมูล
อ้างอิง: Mangle