- Tamamen Go ile yazılmış, MySQL uyumlu bir veritabanı motoru
- Veri kaynağından bağımsız bir SQL motorudur; MySQL sözdizimi ve protokolünü kullanarak sağlanan veri kaynakları üzerinde sorgu çalıştırır
- Basit bir bellek içi veritabanı uygulaması içerir ve kendi backend'inizi geliştirerek istediğiniz veri kaynağını sorgulayabilirsiniz
Uyumluluk
- Belirli kısıtlamalar dışında, go-mysql-server MySQL'in yerine kullanılabilir
- MySQL'de çalışan istemci kütüphaneleri, araçlar, sorgular, SQL sözdizimi ve SQL fonksiyonlarının go-mysql-server üzerinde de çalışması gerekir
- Özellik farkları tespit ederseniz issue bildirmeniz istenir
Proje kapsamı
- Veri kaynaklarını sorgulamak için bir SQL sunucusu ve motoru
- Testlerde kullanıma uygun bir bellek içi veritabanı backend uygulaması
- Kendi veri kaynağınızı sorgulamak için yeni backend uygulamalarında kullanılabilecek arayüzler
- Bazı önemli noktalar dikkate alınır ve tam veritabanı uygulaması kullanılırsa MySQL veritabanının yerini alabilir
go-mysql-server'ın başlıca kullanım senaryoları:
- Yerleşik
memory veritabanı uygulamasını kullanarak Go test ortamında MySQL'in yerine geçmek
- Birkaç arayüzü uygulayarak herhangi bir veri kaynağına SQL sorguları ile erişim sağlamak
Bellek içi test sunucusunun kullanımı
- Bellek içi test sunucusu, testlerde gerçek MySQL sunucusunun yerini alabilir
- Sağlanan örnek kod kullanılarak sunucu başlatılabilir
- Sunucu çalıştıktan sonra MySQL istemcisi, Go MySQL connector'ü veya
mysql shell gibi araçlarla bağlanılabilir
Bellek içi veritabanı uygulamasının kısıtları
- Paketle birlikte gelen bellek içi veritabanı uygulaması test amaçlı kullanım içindir
- Bilinen kısıtlar:
- Thread-safe değildir. Eşzamanlılık sorunlarını önlemek için DDL ve DML ifadeleri tek bir goroutine ile sınırlandırılmalıdır
- Transaction desteği yoktur.
START TRANSACTION, ROLLBACK, COMMIT gibi ifadeler çalışmaz
- Verimsiz indeks uygulaması. İndeks aramaları ve join işlemleri, dahili tablolar üzerinde tam tablo taraması yapar
Özel backend uygulama
- Bazı arayüzleri uygulayarak kendi veri kaynağınızı sorgulayan bir backend oluşturabilirsiniz
- Ayrıntılı yönergeler için backend rehberine bakın
go-mysql-server ile çalışan projeler
- dolt
- gitbase (durduruldu)
- go-mysql-server ile bir veritabanı backend'i geliştiriyorsanız bunu bildirmeniz istenir
Lisans
GN⁺ görüşü
- go-mysql-server, Go ile yazılmış hafif bir MySQL uyumlu veritabanı motoru olarak, test ortamlarında MySQL'in yerine geçmek veya kendi veri kaynaklarını SQL ile sorgulamak için kullanışlı görünüyor
- MySQL uyumluluğunu hedeflediği için mevcut MySQL tabanlı uygulamalara büyük değişiklikler yapmadan entegre edilebilmesi beklenebilir
- Ancak proje hâlâ deneysel durumda; özellikle bellek içi uygulama yalnızca test amaçlı olduğundan, production kullanımında performans ve kararlılık açısından dikkat gerektiriyor
- Backend geliştiricileri için, arayüzleri doğrudan uygulayarak istedikleri veri kaynağını bağlayabilmeleri çekici bir özellik olacaktır. Dolt gibi gerçek proje örneklerine bakmak faydalı olabilir
- Benzer MySQL uyumlu veritabanları arasında TiDB ve CockroachDB bulunur. go-mysql-server, bunlardan farklı olarak backend'in serbestçe uygulanabilmesi avantajını sunarken, buna karşılık backend geliştirme için ek maliyet gerektirir
1 yorum
Hacker News yorumları