EdgeDB, một DBMS dữ liệu quan hệ đồ thị

Gần đây việc phát hành DBMS «EdgeDB 2.0» đã được công bố, trong đó triển khai mô hình dữ liệu quan hệ đồ thị quan hệ và ngôn ngữ truy vấn EdgeQL, được tối ưu hóa để làm việc với dữ liệu phân cấp phức tạp.

EdgeDB là một cơ sở dữ liệu mã nguồn mở được thiết kế như một sự kế thừa tinh thần cho SQL và mô hình quan hệ. Mục tiêu của nó là giải quyết một số vấn đề thiết kế khó khăn khiến cơ sở dữ liệu hiện tại trở nên khó sử dụng một cách không cần thiết.

Được hỗ trợ bởi công cụ truy vấn Postgres, EdgeDB nghĩ về lược đồ giống như cách bạn làm: như các đối tượng có thuộc tính được kết nối bằng các ràng buộc. Nó giống như một cơ sở dữ liệu quan hệ với một mô hình dữ liệu hướng đối tượng hoặc một cơ sở dữ liệu đồ thị với một lược đồ chặt chẽ. Chúng tôi gọi nó là cơ sở dữ liệu quan hệ của đồ thị.

Giới thiệu về EdgeDB

Dự án đang được phát triển như một plugin cho PostgreSQL. Các thư viện máy khách được chuẩn bị cho các ngôn ngữ Python, Go, Rust và TypeScript / Javascript.

Thay vì mô hình dữ liệu dựa trên bảng, EdgeDB sử dụng một hệ thống khai báo dựa trên các kiểu đối tượng. Thay vì khóa ngoại (khóa ngoại) để xác định mối quan hệ giữa các kiểu ràng buộc tham chiếu được sử dụng (một đối tượng có thể được sử dụng như một thuộc tính của đối tượng khác).

Các chỉ mục có thể được sử dụng để tăng tốc độ xử lý truy vấn. Cũng thế các tính năng như gõ thuộc tính mạnh được hỗ trợ, ràng buộc giá trị thuộc tính, thuộc tính được tính toán và thủ tục được lưu trữ. Một số tính năng của lược đồ lưu trữ đối tượng EdgeDB, phần nào gợi nhớ đến ORM, bao gồm khả năng trộn các lược đồ, ràng buộc thuộc tính của các đối tượng khác nhau và hỗ trợ JSON được nhúng.

Các công cụ tích hợp được cung cấp để di chuyển giản đồ lưu trữ: Sau khi thay đổi lược đồ được chỉ định trong một tệp esdl riêng biệt, chỉ cần chạy lệnh “tạo di chuyển edgedb” và DBMS sẽ phân tích sự khác biệt trong lược đồ và tạo tập lệnh một cách tương tác. để chuyển sang giản đồ mới. Lịch sử sửa đổi lược đồ được theo dõi tự động.

Đối với truy vấn, cả ngôn ngữ truy vấn GraphQL và như ngôn ngữ riêng của nó EdgeDB, là một bản chuyển thể của SQL cho dữ liệu phân cấp. Thay vì danh sách, kết quả truy vấn có định dạng có cấu trúc và thay vì truy vấn con và JOIN, một truy vấn EdgeQL có thể được chỉ định dưới dạng một biểu thức trong một truy vấn khác. Các giao dịch và chu kỳ được hỗ trợ.

Các tính năng mới chính của EdgeDB 2.0

Trong phiên bản mới đã được trình bày, giao diện web tích hợp đã được thêm vào để quản trị cơ sở dữ liệu cho phép xem và chỉnh sửa dữ liệu, chạy các truy vấn EdgeQL và phân tích sơ đồ lưu trữ được sử dụng. Giao diện được bắt đầu bằng lệnh "edgedb ui", sau đó nó có sẵn bằng cách truy cập localhost.

Cách diễn đạt "GROUP" đã được triển khai để cho phép phân vùng và tổng hợp dữ liệu và nhóm dữ liệu bằng cách sử dụng các biểu thức EdgeQL tùy ý, tương tự như nhóm trong hoạt động SELECT.

Khả năng kiểm soát quyền truy cập ở cấp độ đối tượng, quy tắc truy cập được xác định ở cấp giản đồ lưu trữ và cho phép bạn hạn chế việc sử dụng một nhóm đối tượng cụ thể trong các hoạt động chọn, chèn, xóa và cập nhật. Ví dụ: bạn có thể thêm quy tắc chỉ cho phép tác giả cập nhật bài đăng.

Nó cũng được nhấn mạnh rằng thêm khả năng sử dụng các biến toàn cục trong sơ đồ lưu trữ. Để liên kết với người dùng, một biến toàn cục mới đã được đề xuất.

Trong số những thay đổi khác nổi bật:

  • Thư viện ứng dụng khách chính thức cho ngôn ngữ Rust đã được chuẩn bị.
  • Giao thức nhị phân EdgeDB đã được ổn định, trong đó có thể xử lý đồng thời nhiều phiên khác nhau trong cùng một kết nối mạng, chuyển tiếp qua HTTP, sử dụng các biến toàn cục và trạng thái cục bộ.
  • Đã thêm hỗ trợ cho các loại xác định phạm vi giá trị (phạm vi).
  • Đã thêm hỗ trợ kích hoạt ổ cắm, cho phép không giữ trình điều khiển máy chủ trong bộ nhớ và chỉ khởi động nó khi cố gắng thiết lập kết nối (hữu ích để tiết kiệm tài nguyên trên các hệ thống phát triển).

Cuối cùng cho những người quan tâm muốn biết thêm về nó, họ nên biết rằng mã được viết bằng Python và Rust và được phát hành theo giấy phép Apache 2.0.

Bạn có thể tìm hiểu thêm về nó tại liên kết theo dõi.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.