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