Parrot Mang SQL An toàn Kiểu về Ngôn ngữ Lập trình Gleam Sử dụng sqlc

Nhóm Cộng đồng BigGo
Parrot Mang SQL An toàn Kiểu về Ngôn ngữ Lập trình Gleam Sử dụng sqlc

Parrot , một thư viện mới cho ngôn ngữ lập trình Gleam , đã được công nhận là một dự án cộng đồng chính thức trên trang web sqlc . Sự phát triển này đánh dấu một cột mốc quan trọng cho các nhà phát triển đang tìm kiếm các tương tác cơ sở dữ liệu an toàn kiểu trong các ứng dụng Gleam .

Gleam là một ngôn ngữ lập trình hàm có kiểu tĩnh chạy trên Máy ảo Erlang và có thể biên dịch sang JavaScript . Nó cung cấp tính an toàn kiểu mạnh mẽ trong khi duy trì các đặc tính chịu lỗi của hệ sinh thái BEAM . Parrot tận dụng sqlc , một công cụ tạo mã SQL phổ biến, để mang lại việc xác thực truy vấn SQL tại thời điểm biên dịch cho các dự án Gleam .

Sự Nhiệt Tình của Cộng đồng đối với Phương pháp kiểu sqlc

Cộng đồng nhà phát triển đã thể hiện sự ủng hộ mạnh mẽ cho phương pháp sqlc mà Parrot triển khai. Nhiều nhà phát triển đánh giá cao cách tiếp cận này cho phép họ viết các truy vấn SQL thuần túy trong các tệp riêng biệt trong khi duy trì tính an toàn kiểu đầy đủ. Điều này trái ngược với các giải pháp Object-Relational Mapping ( ORM ), thường gặp khó khăn trong việc phù hợp với tính biểu cảm của SQL và có thể gây ra chi phí hiệu suất.

Thư viện tự động tạo ra các hàm Gleam từ các truy vấn SQL , hoàn chỉnh với tên tham số và kiểu trả về phù hợp. Ví dụ, một truy vấn có tên FindUser với SELECT * FROM user WHERE username = $1 trở thành một hàm Gleam find_user(username: String) với các tham số và kết quả được định kiểu phù hợp.

Tính năng chính:

  • Hỗ trợ nhiều truy vấn cho mỗi file
  • Thiết kế không phụ thuộc vào client cơ sở dữ liệu cụ thể
  • Tự động phát hiện schema
  • Tham số có tên với suy luận kiểu dữ liệu
  • Các wrapper tiện ích cho các thư viện cơ sở dữ liệu Gleam phổ biến

Hỗ trợ Cơ sở Dữ liệu và Tích hợp

Parrot hỗ trợ ba hệ thống cơ sở dữ liệu chính mà sqlc xử lý: PostgreSQL , MySQL và SQLite . Thư viện bao gồm các wrapper tiện ích cho các thư viện cơ sở dữ liệu Gleam phổ biến như lpil/sqlightlpil/pog, làm cho việc tích hợp trở nên đơn giản cho các dự án hiện có.

Một hạn chế đáng chú ý là Parrot chỉ có thể thực thi trong các ứng dụng Gleam dựa trên Erlang , mặc dù mã được tạo ra hoạt động trong môi trường JavaScript . Điều này có nghĩa là các dự án JavaScript yêu cầu một bước xây dựng riêng biệt để tạo ra các module mã cần thiết.

Cơ sở dữ liệu được hỗ trợ:

  • SQLite (yêu cầu cài đặt sqlite3)
  • PostgreSQL (yêu cầu cài đặt pg_dump)
  • MySQL (yêu cầu cài đặt mysqldump)

Hạn chế Kỹ thuật và Cân nhắc

Các cuộc thảo luận cộng đồng đã làm nổi bật một số thách thức với phương pháp sqlc , đặc biệt là xung quanh các truy vấn động. Việc lọc và sắp xếp động vẫn còn vấn đề từ góc độ của trình lập kế hoạch truy vấn cơ sở dữ liệu, vì các câu lệnh đã chuẩn bị có thể hoạt động khác nhau tùy thuộc vào giá trị tham số. PostgreSQL xử lý điều này tốt hơn SQLite bằng cách đánh giá xem các câu lệnh đã chuẩn bị có cần tối ưu hóa cụ thể cho tham số hay không.

SQL hầu như không thể tham số hóa, vì vậy, theo ý kiến của tôi, trải nghiệm nhà phát triển tệ hơn nhiều so với việc sử dụng trình xây dựng truy vấn và không tốt hơn nhiều so với việc chỉ sử dụng chuỗi.

Thư viện cũng có một số ràng buộc kỹ thuật. Các kiểu dữ liệu phức tạp được bọc như các kiểu dynamic do độ phức tạp của việc triển khai, và một số tính năng sqlc như nhúng struct và các hoạt động batch chưa được hỗ trợ. Các mảng đa chiều trong PostgreSQL có thể không được xác định chính xác do hạn chế của pg_dump.

Cài đặt và Sử dụng:

 Cài đặt thư viện
$ gleam add parrot

 Tạo mã từ DATABASE_URL
$ gleam run -m parrot

 Sử dụng biến môi trường tùy chỉnh
$ gleam run -m parrot -- --PG_DATABASE_URL

 Chỉ định tệp SQLite
$ gleam run -m parrot -- --sqlite <đường dẫn tệp>

Sự Quan tâm của Hệ sinh thái Đang phát triển

Việc phát hành đã khơi dậy các cuộc thảo luận rộng hơn về các mẫu truy cập cơ sở dữ liệu an toàn kiểu trên các ngôn ngữ lập trình khác nhau. Các nhà phát triển đã đề cập đến các công cụ tương tự như PgTyped cho TypeScript và Jooq cho Java , cho thấy sự quan tâm ngày càng tăng của ngành công nghiệp đối với các phương pháp xác thực SQL tại thời điểm biên dịch.

Parrot đại diện cho một bước tiến quan trọng cho hệ sinh thái Gleam , cung cấp cho các nhà phát triển một giải pháp mạnh mẽ cho các tương tác cơ sở dữ liệu trong khi duy trì sự nhấn mạnh của ngôn ngữ về tính an toàn kiểu và độ tin cậy. Khi cộng đồng Gleam tiếp tục phát triển, các công cụ như Parrot giúp thiết lập ngôn ngữ này như một lựa chọn khả thi để xây dựng các hệ thống có thể mở rộng và an toàn kiểu.

Tham khảo: Parrot / type-safe SQL in gleam