𝗧𝘂𝗿𝘀𝗼 𝗹𝗶𝗯𝗦𝗤𝗟 𝘃𝘀 𝗖𝗹𝗼𝘂𝗱𝗳𝗹𝗮𝗿𝗲 𝗗𝟭

Memilih pangkalan data untuk monorepo Astro bergantung kepada aliran kerja anda.

Baru-baru ini, saya membina pangkalan data kongsi untuk tiga laman web Astro SSG. Saya mempunyai dua pilihan: Turso (libSQL) atau Cloudflare D1.

Saya memilih Turso.

Berikut adalah sebab mengapa perbezaan praktikal ini penting.

Cloudflare D1 dibina untuk Cloudflare Workers. Jika anda menggunakan Workers untuk server-side rendering, D1 adalah pemenangnya. Ia berada di tempat kod anda dijalankan.

Tetapan saya berbeza. Laman web saya adalah Astro 5 SSG statik pada Cloudflare Pages. Saya tidak menggunakan Workers. Saluran paip (pipeline) ETL saya berjalan dalam GitHub Actions.

Menggunakan D1 daripada GitHub Actions adalah sukar. Anda mesti menggunakan Cloudflare API atau Wrangler CLI. Kedua-duanya tidak memberikan fail SQLite tempatan untuk pertanyaan (query) semasa pembangunan. Anda akhirnya terpaksa mengakses pangkalan data jauh bagi setiap ujian.

Turso menyelesaikan masalah ini dengan pakej @libsql/client. Ia menerima URL. URL tersebut boleh jadi pautan jauh atau laluan fail tempatan.

Kod saya kelihatan seperti ini:

URL tersebut adalah pautan Turso jauh dalam CI. Pada komputer riba saya, klien membuka fail tempatan. Pakej, pertanyaan, dan skema kekal sama.

Laluan kod adalah identikal.

Ini membolehkan saya:

  • Menjalankan skrip ETL secara tempatan.
  • Memeriksa pangkalan data dengan mana-mana penampil (viewer) SQLite.
  • Menjalankan migrasi dengan fungsi yang sama digunakan dalam production.

Saya tidak memerlukan Docker. Saya tidak memerlukan flags khas. SQL yang sama berfungsi di mana-mana sahaja.

Saya menggunakan pendekatan idempotent untuk migrasi. Kod saya menyemak jika sesebuah jadual wujud sebelum menciptanya. Ini menjadikannya selamat untuk dijalankan berulang kali.

Bilakah anda patut memilih D1? Jika anda menggunakan Cloudflare Workers untuk carian atau laluan API, D1 adalah lebih baik. Sambungannya lebih pantas kerana ia kekal di dalam pusat data yang sama.

Seni bina saya adalah sepenuhnya statik. Memandangkan saya tidak menggunakan Workers, D1 kehilangan kelebihan utamanya.

Imbangan (trade-offs) semasa:

  • Prestasi penulisan: ETL saya menjalankan tugas satu demi satu. Saya belum menguji penulisan serentak berkelajuan tinggi.
  • Perubahan skema: Menambah lajur adalah mudah. Menamakan semula lajur memerlukan lebih ketelitian.
  • Harga: Kedua-duanya mempunyai pelan percuma yang murah hati. Untuk tiga laman web, kos saya adalah sifar.

Pemilihan pangkalan data bukanlah matlamat utama. Pilihan sandaran (fallback) fail tempatan adalah sebab saya memilih Turso. Ia menjadikan pembangunan lebih mudah.

Sumber: https://dev.to/morinaga/turso-libsql-vs-cloudflare-d1-for-an-astro-monorepo-the-practical-difference-3c9