Phát hành đồ thị quan hệ DBMS EdgeDB 2.0

Bản phát hành EdgeDB 2.0 DBMS được trình bày, triển khai mô hình dữ liệu đồ 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. Mã được viết bằng Python và Rust (trình phân tích cú pháp và các phần quan trọng về hiệu năng) và được phân phối theo giấy phép Apache 2.0. Dự án đang được phát triển dưới dạng tiện ích bổ sung cho PostgreSQL. Thư viện máy khách được chuẩn bị cho Python, Go, Rust và TypeScript/Javascript. Cung cấp các công cụ dòng lệnh để quản lý DBMS và thực hiện truy vấn tương tác (REPL).

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

gõ Person { tên thuộc tính bắt buộc -> str; } gõ Phim { tiêu đề thuộc tính bắt buộc -> str; tác nhân đa liên kết -> Người; }

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

Các công cụ tích hợp được cung cấp để lưu trữ di chuyển lược đồ - 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 ra một tập lệnh tương tác để di chuyển sang lược đồ mới. Lịch sử thay đổi lược đồ được tự động theo dõi.

Để tạo truy vấn, cả ngôn ngữ truy vấn GraphQL và ngôn ngữ EdgeDB độc quyền, là ngôn ngữ chuyển thể từ SQL cho dữ liệu phân cấp, đều được hỗ trợ. Thay vì danh sách, kết quả truy vấn được định dạng theo cách có cấu trúc và thay vì truy vấn con và THAM GIA, bạn có thể chỉ định một truy vấn EdgeQL làm biểu thức trong một truy vấn khác. Giao dịch và chu kỳ được hỗ trợ.

select Phim { tiêu đề, diễn viên: { name } } filter .title = "The Matrix" chèn Movie { title := "The Matrix Resurrections", diễn viên := ( select Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } cho số trong {0, 1, 2, 3} hợp ( select { number, number + 0.5 } );

Trong phiên bản mới:

  • Giao diện web tích hợp đã được thêm vào để quản trị cơ sở dữ liệu, cho phép bạn xem và chỉnh sửa dữ liệu, chạy truy vấn EdgeQL và phân tích sơ đồ lưu trữ được sử dụng. Giao diện được khởi chạy bằng lệnh “edgedb ui”, sau đó nó sẽ khả dụng khi truy cập localhost.
    Phát hành đồ thị quan hệ DBMS EdgeDB 2.0
  • Biểu thức “GROUP” đã được triển khai, cho phép bạn phân vùng và tổng hợp dữ liệu cũng như 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ư việc nhóm trong thao tác 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 lược đồ lưu trữ và cho phép bạn giới hạn khả năng sử dụng một tập hợp đối tượng nhất định trong các hoạt động tìm nạp, 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 ấn phẩm.
  • Đã thêm khả năng sử dụng các biến toàn cục trong lược đồ lưu trữ. Một biến toàn cục mới current_user đã được đề xuất để liên kết với người dùng.
  • Đã thêm hỗ trợ cho các loại xác định phạm vi giá trị.
  • Thư viện máy 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, cho phép 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ợ kích hoạt ổ cắm, cho phép bạn không giữ trình xử lý máy chủ trong bộ nhớ và chỉ chạy 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 hệ thống của nhà phát triển).

Nguồn: opennet.ru

Thêm một lời nhận xét