Parrot Membawa SQL Selamat-Jenis kepada Bahasa Pengaturcaraan Gleam Menggunakan sqlc

Pasukan Komuniti BigGo
Parrot Membawa SQL Selamat-Jenis kepada Bahasa Pengaturcaraan Gleam Menggunakan sqlc

Parrot , perpustakaan baharu untuk bahasa pengaturcaraan Gleam , telah mendapat pengiktirafan sebagai projek komuniti rasmi di laman web sqlc . Perkembangan ini menandakan pencapaian penting bagi pembangun yang mencari interaksi pangkalan data selamat-jenis dalam aplikasi Gleam .

Gleam adalah bahasa pengaturcaraan berfungsi berjeniskan statik yang berjalan pada Mesin Maya Erlang dan boleh dikompil kepada JavaScript . Ia menawarkan keselamatan jenis yang kuat sambil mengekalkan ciri-ciri toleransi kesalahan ekosistem BEAM . Parrot memanfaatkan sqlc , alat penjanaan kod SQL yang popular, untuk membawa pengesahan pertanyaan SQL masa kompil kepada projek Gleam .

Antusiasme Komuniti terhadap Pendekatan Gaya sqlc

Komuniti pembangun telah menunjukkan sokongan kuat terhadap metodologi sqlc yang dilaksanakan oleh Parrot . Ramai pembangun menghargai bagaimana pendekatan ini membolehkan mereka menulis pertanyaan SQL tulen dalam fail berasingan sambil mengekalkan keselamatan jenis penuh. Ini berbeza dengan penyelesaian Object-Relational Mapping ( ORM ), yang sering bergelut untuk menyamai kekuatan ekspresif SQL dan boleh memperkenalkan overhed prestasi.

Perpustakaan ini secara automatik menjana fungsi Gleam daripada pertanyaan SQL , lengkap dengan nama parameter yang betul dan jenis pulangan. Sebagai contoh, pertanyaan bernama FindUser dengan SELECT * FROM user WHERE username = $1 menjadi fungsi Gleam find_user(username: String) dengan parameter dan hasil yang berjeniskan sesuai.

Ciri-ciri Utama:

  • Sokongan berbilang pertanyaan setiap fail
  • Reka bentuk agnostik klien pangkalan data
  • Pengesanan skema automatik
  • Parameter bernama dengan inferens jenis
  • Pembungkus utiliti untuk perpustakaan pangkalan data Gleam yang popular

Sokongan Pangkalan Data dan Integrasi

Parrot menyokong tiga sistem pangkalan data utama yang dikendalikan oleh sqlc : PostgreSQL , MySQL , dan SQLite . Perpustakaan ini termasuk pembungkus utiliti untuk perpustakaan pangkalan data Gleam yang popular seperti lpil/sqlight dan lpil/pog, menjadikan integrasi mudah untuk projek sedia ada.

Satu had yang ketara ialah Parrot hanya boleh dilaksanakan dalam aplikasi Gleam berasaskan Erlang , walaupun kod yang dijana berfungsi dalam persekitaran JavaScript . Ini bermakna projek JavaScript memerlukan langkah binaan berasingan untuk menjana modul kod yang diperlukan.

Pangkalan Data yang Disokong:

  • SQLite (memerlukan sqlite3 dipasang)
  • PostgreSQL (memerlukan pg_dump dipasang)
  • MySQL (memerlukan mysqldump dipasang)

Had Teknikal dan Pertimbangan

Perbincangan komuniti telah menyerlahkan beberapa cabaran dengan pendekatan sqlc , terutamanya sekitar pertanyaan dinamik. Penapisan dan penyusunan dinamik kekal bermasalah dari perspektif perancang pertanyaan pangkalan data, kerana penyataan yang disediakan mungkin berprestasi berbeza bergantung pada nilai parameter. PostgreSQL mengendalikan ini dengan lebih baik daripada SQLite dengan menilai sama ada penyataan yang disediakan memerlukan pengoptimuman khusus parameter.

SQL hampir tidak boleh diparameterkan, jadi, pada pendapat saya, DX adalah jauh lebih teruk daripada menggunakan pembina pertanyaan dan tidak jauh lebih baik daripada sekadar menggunakan rentetan.

Perpustakaan ini juga mempunyai beberapa kekangan teknikal. Jenis data kompleks dibungkus sebagai jenis dynamic kerana kerumitan pelaksanaan, dan ciri sqlc tertentu seperti pembenaman struktur dan operasi kelompok belum lagi disokong. Tatasusunan multidimensi dalam PostgreSQL mungkin tidak dikenal pasti dengan betul kerana had pg_dump.

Pemasangan dan Penggunaan:

 Pasang perpustakaan
$ gleam add parrot

 Jana kod daripada DATABASE_URL
$ gleam run -m parrot

 Gunakan pembolehubah persekitaran tersuai
$ gleam run -m parrot -- --PG_DATABASE_URL

 Tentukan fail SQLite
$ gleam run -m parrot -- --sqlite <laluan fail>

Minat Ekosistem yang Berkembang

Keluaran ini telah mencetuskan perbincangan yang lebih luas tentang corak akses pangkalan data selamat-jenis merentasi bahasa pengaturcaraan yang berbeza. Pembangun telah menyebut alat serupa seperti PgTyped untuk TypeScript dan Jooq untuk Java , menunjukkan minat industri yang berkembang dalam pendekatan pengesahan SQL masa kompil.

Parrot mewakili langkah penting ke hadapan untuk ekosistem Gleam , menyediakan pembangun dengan penyelesaian yang kukuh untuk interaksi pangkalan data sambil mengekalkan penekanan bahasa pada keselamatan jenis dan kebolehpercayaan. Ketika komuniti Gleam terus berkembang, alat seperti Parrot membantu menetapkan bahasa sebagai pilihan yang berdaya maju untuk membina sistem berskala dan selamat-jenis.

Rujukan: Parrot / type-safe SQL in gleam