นักพัฒนา Google เปิดตัว Mangle: ส่วนขยาย Datalog สำหรับการเขียนโปรแกรมฐานข้อมูลแบบ Deductive

ทีมชุมชน BigGo
นักพัฒนา Google เปิดตัว Mangle: ส่วนขยาย Datalog สำหรับการเขียนโปรแกรมฐานข้อมูลแบบ Deductive

นักพัฒนา 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