การเปิดตัวกราฟเชิงสัมพันธ์ DBMS EdgeDB 2.0

มีการนำเสนอ EdgeDB 2.0 DBMS ซึ่งใช้โมเดลข้อมูลกราฟเชิงสัมพันธ์และภาษาคิวรี EdgeQL ซึ่งได้รับการปรับให้เหมาะสมสำหรับการทำงานกับข้อมูลลำดับชั้นที่ซับซ้อน โค้ดนี้เขียนด้วยภาษา Python และ Rust (ตัวแยกวิเคราะห์และส่วนที่มีความสำคัญต่อประสิทธิภาพ) และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 โปรเจ็กต์นี้กำลังได้รับการพัฒนาเป็นส่วนเสริมสำหรับ PostgreSQL ไลบรารีไคลเอนต์ได้รับการจัดเตรียมสำหรับ Python, Go, Rust และ TypeScript/Javascript จัดเตรียมเครื่องมือบรรทัดคำสั่งสำหรับการจัดการ DBMS และการดำเนินการค้นหาแบบโต้ตอบ (REPL)

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

พิมพ์บุคคล { ชื่อคุณสมบัติที่ต้องการ -> str; } ประเภทภาพยนตร์ { ชื่อคุณสมบัติที่ต้องการ -> str; นักแสดงหลายลิงค์ -> บุคคล; }

ดัชนีสามารถใช้เพื่อเร่งการประมวลผลแบบสอบถาม นอกจากนี้ยังรองรับฟีเจอร์ต่างๆ เช่น การพิมพ์คุณสมบัติที่เข้มงวด ข้อจำกัดของค่าคุณสมบัติ คุณสมบัติที่คำนวณ และขั้นตอนการจัดเก็บอีกด้วย คุณลักษณะของแผนการจัดเก็บอ็อบเจ็กต์ EdgeDB ซึ่งค่อนข้างชวนให้นึกถึง ORM รวมถึงความสามารถในการผสมสคีมา คุณสมบัติลิงก์จากอ็อบเจ็กต์ต่างๆ และการรองรับ JSON แบบรวม

มีเครื่องมือในตัวสำหรับจัดเก็บการย้ายสคีมา - หลังจากเปลี่ยนสคีมาที่ระบุในไฟล์ esdl แยกต่างหาก เพียงเรียกใช้คำสั่ง "edgedbmigration create" และ DBMS จะวิเคราะห์ความแตกต่างในสคีมาและสร้างสคริปต์แบบโต้ตอบสำหรับการย้ายไปยัง สคีมาใหม่ ประวัติการเปลี่ยนแปลงสคีมาจะถูกติดตามโดยอัตโนมัติ

ในการสร้างการสืบค้น รองรับทั้งภาษาการสืบค้น GraphQL และภาษา EdgeDB ที่เป็นกรรมสิทธิ์ ซึ่งเป็นการปรับ SQL สำหรับข้อมูลแบบลำดับชั้น แทนที่จะเป็นรายการ ผลลัพธ์ของการสืบค้นจะถูกจัดรูปแบบในลักษณะที่มีโครงสร้าง และแทนที่จะจัดรูปแบบการสืบค้นย่อยและ JOIN คุณสามารถระบุการสืบค้น EdgeQL หนึ่งรายการเป็นนิพจน์ภายในการสืบค้นอื่นได้ รองรับธุรกรรมและรอบ

เลือกภาพยนตร์ { title, นักแสดง: { name } } filter .title = "The Matrix" แทรกภาพยนตร์ { title := "The Matrix Resurrections", นักแสดง := ( เลือก Person filter .name ใน { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } สำหรับตัวเลขใน {0, 1, 2, 3} สหภาพ ( เลือก { number, number + 0.5 } );

ในเวอร์ชันใหม่:

  • มีการเพิ่มเว็บอินเทอร์เฟซในตัวสำหรับการดูแลฐานข้อมูล ทำให้คุณสามารถดูและแก้ไขข้อมูล เรียกใช้การสืบค้น EdgeQL และวิเคราะห์รูปแบบการจัดเก็บข้อมูลที่ใช้ อินเทอร์เฟซถูกเปิดใช้งานโดยคำสั่ง "edgedb ui" หลังจากนั้นจะพร้อมใช้งานเมื่อเข้าถึง localhost
    การเปิดตัวกราฟเชิงสัมพันธ์ DBMS EdgeDB 2.0
  • มีการใช้นิพจน์ “GROUP” แล้ว ซึ่งช่วยให้คุณสามารถแบ่งพาร์ติชันและรวบรวมข้อมูลและจัดกลุ่มข้อมูลโดยใช้นิพจน์ EdgeQL ที่กำหนดเองได้ ซึ่งคล้ายกับการจัดกลุ่มในการดำเนินการ SELECT
  • ความสามารถในการควบคุมการเข้าถึงในระดับออบเจ็กต์ กฎการเข้าถึงถูกกำหนดไว้ที่ระดับสคีมาพื้นที่จัดเก็บข้อมูล และอนุญาตให้คุณจำกัดความสามารถในการใช้ชุดออบเจ็กต์บางชุดในการดึงข้อมูล แทรก ลบ และอัปเดต ตัวอย่างเช่น คุณสามารถเพิ่มกฎที่อนุญาตให้เฉพาะผู้เขียนอัปเดตสิ่งพิมพ์ได้
  • เพิ่มความสามารถในการใช้ตัวแปรส่วนกลางในโครงการจัดเก็บข้อมูล มีการเสนอตัวแปรโกลบอล current_user ใหม่เพื่อเชื่อมโยงกับผู้ใช้
  • เพิ่มการรองรับประเภทที่กำหนดช่วงของค่า
  • มีการเตรียมไลบรารีไคลเอนต์อย่างเป็นทางการสำหรับภาษา Rust
  • โปรโตคอลไบนารี EdgeDB มีเสถียรภาพ ทำให้สามารถประมวลผลเซสชันต่างๆ มากมายพร้อมกันภายในการเชื่อมต่อเครือข่ายเดียวกัน ส่งต่อผ่าน HTTP โดยใช้ตัวแปรส่วนกลางและสถานะท้องถิ่น
  • เพิ่มการสนับสนุนสำหรับการเปิดใช้งานซ็อกเก็ต ซึ่งช่วยให้คุณไม่ต้องเก็บตัวจัดการเซิร์ฟเวอร์ไว้ในหน่วยความจำ และเรียกใช้เฉพาะเมื่อพยายามสร้างการเชื่อมต่อเท่านั้น (มีประโยชน์สำหรับการประหยัดทรัพยากรบนระบบของนักพัฒนา)

ที่มา: opennet.ru

เพิ่มความคิดเห็น