Tiến bộ với DenoGres

Jan 26 2023
Những điều bạn cần biết về DenoGres 4.0
Tổng quan rất ngắn gọn về Deno Deno là thời gian chạy JavaScript, TypeScript và WebAssugging mới nổi nhanh được tích hợp trong Rust trên công cụ V8 của Chrome, với các mặc định an toàn, công cụ tích hợp và nhập URL để quản lý phụ thuộc. Nó được giới thiệu bởi người tạo ra Node, Ryan Dahl, tại JSconf EU vào năm 2018 trong bài nói chuyện nổi tiếng của anh ấy có tiêu đề “10 điều tôi hối tiếc về Node.

Tổng quan rất ngắn gọn về Deno

Deno là thời gian chạy JavaScript, TypeScript và WebAssugging mới nổi nhanh chóng được tích hợp trong Rust trên công cụ V8 của Chrome, với các giá trị mặc định an toàn, công cụ tích hợp và nhập URL để quản lý phụ thuộc. Nó được giới thiệu bởi người tạo ra Node, Ryan Dahl, tại JSconf EU vào năm 2018 trong bài nói chuyện nổi tiếng của anh ấy có tiêu đề “ 10 điều tôi hối tiếc về Node . ”

Tại sao lại là ORM?

Đối với những người không quen thuộc, ORM là viết tắt của Object-Relational Mapper. "Điều đó nghĩa là gì?" bạn có thể hỏi. Nói một cách đơn giản, ORM cho phép các nhà phát triển làm việc với cơ sở dữ liệu quan hệ thông qua các đối tượng, thay vì các chuỗi truy vấn. Việc chuyển đổi giữa lập trình hướng đối tượng và cú pháp khai báo của SQL có thể trở nên tẻ nhạt và làm gián đoạn quy trình làm việc trong quá trình phát triển. ORM cho phép nhà phát triển tương tác với cơ sở dữ liệu của họ dưới dạng các lớp và thể hiện. Vì lợi ích của chúng tôi, có rất nhiều công cụ ORM ngoài kia — thật không may, các tùy chọn nguồn mở được thiết kế với hỗ trợ TypeScript hạng nhất bị hạn chế và thậm chí còn ít hơn được thiết kế cho thời gian chạy Deno.

DenoGres, một giải pháp

DenoGres cung cấp TypeScript ORM cho các nhà phát triển làm việc với PostgreSQL trong thời gian chạy Deno. Công cụ này hoạt động bằng cách xem xét nội quan cơ sở dữ liệu của người dùng — bao gồm các nhãn, loại và ràng buộc của nó — và chuyển đổi từng bảng thành một lớp mở rộng lớp “Mô hình” trừu tượng. Điều này cho phép các lớp bảng này truy cập vào một tập hợp các thuộc tính và phương thức tĩnh xử lý truy vấn cơ sở dữ liệu một cách an toàn, trong khi người dùng trải nghiệm các tương tác cơ sở dữ liệu thông qua cơ chế quen thuộc của OOP.

Để bắt đầu làm việc với DenoGres trong dự án Deno của bạn, hãy làm theo lời nhắc dòng lệnh sau:

Nhập DenoGres vào dự án của bạn:

deno install --allow-read --allow-write --allow-net --allow-env 
--allow-run --name denogres https://deno.land/x/denogres/mod.ts

denogres --init

Xem xét cơ sở dữ liệu của bạn và tạo các mô hình:

denogres --db-pull

denogres --gui

Các tính năng của DenoGres 4.0

DenoGres 4.0 mang đến nhiều bản cập nhật cho ORM vốn đã mạnh mẽ. Có lẽ điều thú vị nhất là nó bổ sung chức năng giao dịch và khôi phục để cho phép người dùng thực hiện hàng loạt truy vấn, duy trì tính toàn vẹn của giao dịch và tuân thủ ACID.

Tính nguyên tử, nguyên tắc đầu tiên trong từ viết tắt ACID, về cơ bản là quy tắc mà khi gộp nhiều truy vấn vào cơ sở dữ liệu, tất cả các thay đổi phải được thực hiện hoặc không có thay đổi nào. Điều này bảo vệ các bảng quan trọng trong cơ sở dữ liệu khỏi những thay đổi không mong muốn trong trường hợp xảy ra sự cố, sự cố kết nối hoặc truy vấn không thành công.

Để sử dụng giao dịch trong DenoGres, người dùng có thể xâu chuỗi .transaction() vào cuối các phương thức truy vấn khác để tạo hoặc tiếp tục giao dịch. Giao dịch có thể được sử dụng trên một số mô hình để truy vấn hàng loạt. Điều này cho phép bạn đảm bảo rằng các bảng quan trọng luôn đồng bộ khi thao tác của một bảng phụ thuộc vào bảng khác. Để kết thúc giao dịch, xâu chuỗi .endTransaction() vào truy vấn cuối cùng. Nếu bất kỳ truy vấn nào trong giao dịch không thành công, tất cả các truy vấn trước đó sẽ được khôi phục và các bảng đó sẽ trở về trạng thái ban đầu.

Đây là một ví dụ:

await Person.insert('name = Alex').transaction();
await Animal.delete().where('name = Spot').transaction();
await Person.insert('nae = Rachel').endTransaction(); 
// throws an error since 'nae' isn't a column, rolls back all previous queries and returns the error for the query that failed

DenoGres 4.0 cũng tăng đáng kể phạm vi mã để đảm bảo trải nghiệm hợp lý cho cả người dùng và nhà phát triển. Bất kỳ trường hợp sử dụng tiềm năng nào cũng được chú ý nghiêm ngặt, điều đó có nghĩa là người dùng có thể sử dụng DenoGres cho các truy vấn phức tạp hơn mà không phải lo lắng rằng dữ liệu sẽ bị rò rỉ.

Tương lai của DenoGres

Vì DenoGres là một sản phẩm mã nguồn mở được phát triển bởi OSLabs, nên công cụ này không ngừng được cải thiện và có một số tính năng đáng mong đợi trong tương lai:

  • Chức năng SavePoint sẽ cho phép người dùng có các giao dịch lớn hơn có thể được tách ra và cho phép khôi phục một phần giao dịch về điểm lưu trữ. Điều này hữu ích cho việc thực hiện khôi phục lỗi phức tạp.
  • Một phương thức setter có thể được thêm vào các mô hình khi liên kết được thiết lập với một mô hình khác, cho phép bổ sung nhanh vào các hàng liên quan.
  • Hàm manyToMany sẽ tạo một bảng nối mới, cho phép người dùng ORM bắt đầu các mối quan hệ phức tạp hơn giữa các bảng.

Người đóng góp DenoGres 4.0:

  • Rachel Cheman | LinkedIn | GitHub
  • Jacob Martin | LinkedIn | GitHub
  • Mia Gussen | LinkedIn | GitHub
  • Alexander Lin | LinkedIn | GitHub