- Công cụ cơ sở dữ liệu tương thích MySQL được viết hoàn toàn bằng Go
- Đây là một SQL engine không phụ thuộc vào nguồn dữ liệu, sử dụng cú pháp và giao thức MySQL để thực thi truy vấn trên nguồn dữ liệu được cung cấp
- Đi kèm một triển khai cơ sở dữ liệu in-memory đơn giản, và bạn cũng có thể tự triển khai backend để truy vấn nguồn dữ liệu mong muốn
Tính tương thích
- Ngoại trừ một số giới hạn nhất định, go-mysql-server có thể được dùng như một sự thay thế cho MySQL
- Các thư viện client, công cụ, truy vấn, cú pháp SQL, hàm SQL... hoạt động trên MySQL cũng nên hoạt động trên go-mysql-server
- Nếu phát hiện khác biệt về tính năng, hãy gửi issue
Phạm vi dự án
- SQL server và engine để truy vấn nguồn dữ liệu
- Triển khai backend cơ sở dữ liệu in-memory phù hợp để dùng trong kiểm thử
- Các interface có thể dùng để triển khai backend mới nhằm truy vấn nguồn dữ liệu riêng
- Nếu lưu ý một số điểm nhất định và sử dụng triển khai cơ sở dữ liệu đầy đủ, nó có thể thay thế cơ sở dữ liệu MySQL
Các trường hợp sử dụng chính của go-mysql-server:
- Dùng triển khai cơ sở dữ liệu
memory tích hợp sẵn để thay thế MySQL trong môi trường kiểm thử Go
- Triển khai một vài interface để cho phép truy cập nguồn dữ liệu bất kỳ bằng truy vấn SQL
Sử dụng máy chủ kiểm thử in-memory
- Máy chủ kiểm thử in-memory có thể thay thế máy chủ MySQL thực trong quá trình kiểm thử
- Có thể khởi động máy chủ bằng mã ví dụ được cung cấp
- Khi máy chủ chạy, có thể kết nối bằng MySQL client, Go MySQL connector,
mysql shell, v.v.
Các giới hạn của triển khai cơ sở dữ liệu in-memory
- Triển khai cơ sở dữ liệu in-memory đi kèm được dùng cho mục đích kiểm thử
- Các giới hạn đã biết:
- Không thread-safe. Để tránh vấn đề đồng thời, cần giới hạn các câu lệnh DDL và DML trong một goroutine duy nhất
- Không hỗ trợ transaction. Các câu lệnh như
START TRANSACTION, ROLLBACK, COMMIT sẽ không hoạt động
- Triển khai chỉ mục kém hiệu quả. Tra cứu chỉ mục và join sẽ thực hiện full table scan trên các bảng nội bộ
Triển khai backend tùy chỉnh
- Có thể tạo backend để truy vấn nguồn dữ liệu riêng bằng cách triển khai một số interface
- Xem hướng dẫn backend để biết thêm chi tiết
Các dự án chạy trên go-mysql-server
- dolt
- gitbase (đã ngừng)
- Nếu bạn đang xây dựng backend cơ sở dữ liệu bằng go-mysql-server, hãy cho biết
Giấy phép
Ý kiến của GN⁺
- go-mysql-server có vẻ là một công cụ cơ sở dữ liệu nhẹ, tương thích MySQL, được viết bằng Go; hữu ích để thay thế MySQL trong môi trường kiểm thử hoặc để truy vấn nguồn dữ liệu riêng bằng SQL
- Vì hướng tới tính tương thích với MySQL, có thể kỳ vọng áp dụng cho các ứng dụng hiện có dựa trên MySQL mà không cần chỉnh sửa quá nhiều
- Tuy vậy, đây vẫn là một dự án mang tính thử nghiệm; đặc biệt phần triển khai in-memory chỉ phù hợp cho kiểm thử, nên khi áp dụng vào production cần lưu ý về hiệu năng và độ ổn định
- Với các backend developer, việc có thể tự triển khai interface để kết nối nguồn dữ liệu mong muốn là một điểm hấp dẫn. Có thể tham khảo các dự án thực tế như Dolt
- Các cơ sở dữ liệu tương thích MySQL tương tự có thể kể đến TiDB, CockroachDB, v.v. go-mysql-server có ưu điểm là cho phép tự do triển khai backend, nhưng đổi lại cũng có nhược điểm là phát sinh thêm chi phí phát triển backend
1 bình luận
Ý kiến trên Hacker News
go-mysql-serverlà phần quan trọng nhất