- Mesin database kompatibel MySQL yang ditulis murni dalam Go
- Mesin SQL yang tidak bergantung pada sumber data tertentu, dan mengeksekusi kueri terhadap sumber data yang diberikan menggunakan sintaks dan protokol MySQL
- Menyertakan implementasi database in-memory sederhana, dan Anda dapat mengimplementasikan backend sendiri untuk mengkueri sumber data yang diinginkan
Kompatibilitas
- Dengan pengecualian beberapa batasan tertentu, go-mysql-server dapat digunakan sebagai pengganti MySQL
- Library klien, alat, kueri, sintaks SQL, dan fungsi SQL yang berjalan di MySQL seharusnya juga berjalan di go-mysql-server
- Jika menemukan perbedaan fitur, mohon laporkan issue
Cakupan proyek
- Server dan mesin SQL untuk mengkueri sumber data
- Implementasi backend database in-memory yang cocok digunakan untuk pengujian
- Antarmuka yang dapat digunakan untuk mengimplementasikan backend baru guna mengkueri sumber data Anda sendiri
- Dengan mempertimbangkan beberapa catatan penting dan menggunakan implementasi database secara penuh, ini dapat menggantikan database MySQL
Kasus penggunaan utama go-mysql-server:
- Menggantikan MySQL di lingkungan pengujian Go dengan menggunakan implementasi database
memory bawaan
- Memungkinkan akses SQL query ke sumber data apa pun dengan mengimplementasikan beberapa antarmuka
Menggunakan server uji in-memory
- Server uji in-memory dapat menggantikan server MySQL nyata dalam pengujian
- Anda dapat memulai server menggunakan kode contoh yang disediakan
- Setelah server berjalan, Anda dapat terhubung menggunakan klien MySQL, konektor MySQL untuk Go, shell
mysql, dan sebagainya
Batasan implementasi database in-memory
- Implementasi database in-memory yang disertakan dimaksudkan untuk digunakan untuk pengujian
- Batasan yang diketahui:
- Tidak thread-safe. Untuk menghindari masalah konkurensi, pernyataan DDL dan DML harus dibatasi ke satu goroutine
- Tidak mendukung transaksi. Pernyataan seperti
START TRANSACTION, ROLLBACK, dan COMMIT tidak akan berfungsi
- Implementasi indeks yang tidak efisien. Pencarian indeks dan join melakukan full table scan pada tabel internal
Implementasi backend kustom
- Anda dapat membuat backend untuk mengkueri sumber data Anda sendiri dengan mengimplementasikan beberapa antarmuka
- Untuk petunjuk rinci, lihat panduan backend
Proyek yang ditenagai oleh go-mysql-server
- dolt
- gitbase (dihentikan)
- Jika Anda sedang membangun backend database dengan go-mysql-server, mohon beri tahu
Lisensi
Pendapat GN⁺
- go-mysql-server tampak seperti mesin database ringan yang kompatibel dengan MySQL dan ditulis dalam Go, berguna untuk menggantikan MySQL di lingkungan pengujian atau untuk mengkueri sumber data sendiri dengan SQL
- Karena menargetkan kompatibilitas MySQL, diharapkan dapat diterapkan pada aplikasi berbasis MySQL yang sudah ada tanpa banyak modifikasi
- Namun, ini masih merupakan proyek eksperimental, dan khususnya implementasi in-memory hanya untuk pengujian, sehingga perlu kehati-hatian dari sisi performa dan stabilitas saat digunakan di produksi
- Bagi pengembang backend, daya tariknya adalah kemampuan untuk mengimplementasikan sendiri antarmuka guna menghubungkan sumber data yang diinginkan. Akan baik untuk merujuk pada contoh proyek nyata seperti Dolt
- Database kompatibel MySQL serupa antara lain TiDB dan CockroachDB. Berbeda dari keduanya, go-mysql-server memiliki keunggulan karena backend dapat diimplementasikan secara bebas, tetapi di sisi lain ada kekurangan berupa biaya tambahan untuk pengembangan backend
1 komentar
Komentar Hacker News