Dolt: Khi Database ‘kết hôn’ với Git – Hướng dẫn quản lý phiên bản dữ liệu từ A-Z

Database tutorial - IT technology blog
Database tutorial - IT technology blog

Tại sao Dolt lại khiến giới Data Engineering chú ý?

Anh em làm dev chắc đã quá quen với Git để quản lý source code. Nhưng với Database, mọi thứ phức tạp hơn nhiều. Trước đây, khi làm việc với MySQL hay PostgreSQL, mỗi lần muốn thử nghiệm schema mới, mình thường phải dump file SQL hoặc clone database hàng chục GB cực kỳ tốn tài nguyên. Chỉ cần một lệnh UPDATE thiếu WHERE trên production là coi như mất ngủ cả đêm.

Dolt ra đời để chấm dứt những nỗi đau đó. Đây là hệ quản trị cơ sở dữ liệu SQL (tương thích 100% với MySQL) nhưng sở hữu bộ gen của Git. Bạn có thể dolt commit, dolt branch, và dolt merge dữ liệu ngay lập tức.

Sau khi test thử trên các bộ dữ liệu Machine Learning và hệ thống Config phức tạp, mình nhận ra Dolt là cứu cánh cho các môi trường staging cần sự an toàn tuyệt đối.

Quick Start: Làm quen với Dolt trong 5 phút

Việc cài đặt rất gọn nhẹ vì Dolt chỉ gồm một file binary duy nhất.

1. Cài đặt Dolt

Trên Linux hoặc macOS, anh em chỉ cần một dòng lệnh:

sudo curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash

2. Khởi tạo Database

Tương tự git init, hãy tạo thư mục và khởi tạo môi trường:

mkdir project_db && cd project_db
dolt init

3. Thao tác SQL cơ bản

Bạn có thể thực thi SQL trực tiếp từ terminal mà không cần cài thêm client:

dolt sql -q "CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50))"
dolt sql -q "INSERT INTO users VALUES (1, 'Hoang IT')"

4. Commit thay đổi

Đây là lúc chúng ta lưu lại “snapshot” của dữ liệu:

dolt add .
dolt commit -m "Tạo bảng users và thêm data mẫu"

Branching và Merging: Cách ly thay đổi để an tâm thử nghiệm

Trong các dự án thực tế, việc sửa cấu trúc bảng (schema migration) thường đi kèm rủi ro cao. Với MySQL truyền thống, bạn thường phải cầu nguyện trước khi chạy script. Với Dolt, hãy cứ tạo branch mới và quẩy thôi.

Tạo Branch để thử nghiệm

Giả sử mình cần thêm cột phone_number nhưng chưa chắc schema này có tối ưu không:

dolt checkout -b feature/add-phone
dolt sql -q "ALTER TABLE users ADD COLUMN phone VARCHAR(15)"
dolt commit -a -m "Thêm cột phone trên branch riêng"

Nếu quay về branch main, bảng users vẫn sạch sẽ như cũ. Điều này giúp bạn test tính năng mới mà không lo làm hỏng dữ liệu của team.

Merge dữ liệu thông minh

Sau khi kiểm tra thấy ổn, hãy gộp thay đổi vào nhánh chính:

dolt checkout main
dolt merge feature/add-phone

Dolt xử lý merge ở mức cell-level. Nếu hai người cùng update hai dòng khác nhau, Dolt sẽ tự động gộp dữ liệu mượt mà, không gây xung đột như cách chúng ta merge code.

So sánh dữ liệu với Dolt Diff

Tính năng dolt diff là thứ mình tâm đắc nhất. Thay vì phải dùng các tool so sánh database đắt đỏ, bạn chỉ cần gõ:

dolt diff

Màn hình sẽ hiển thị rõ: dòng nào bị xóa (đỏ), dòng nào thêm mới (xanh). Khi debug một bug dữ liệu phát sinh từ 2 tiếng trước, tính năng này giúp bạn tìm ra thủ phạm trong vài giây.

Kết nối như một MySQL Server thực thụ

Dolt không chỉ dừng lại ở CLI. Bạn có thể chạy nó như một server để kết nối qua các công cụ như DBeaver hoặc TablePlus:

dolt sql-server --host 0.0.0.0 --port 3306

Đặc biệt, bạn có thể thực hiện versioning bằng chính câu lệnh SQL thông qua các procedure:

-- Commit ngay trong SQL client của bạn
CALL DOLT_COMMIT('-am', 'Update từ DBeaver');

Kinh nghiệm thực tế: Đừng bỏ qua hiệu suất

Mình đã triển khai Dolt cho một hệ thống quản lý danh mục sản phẩm và có vài lưu ý quan trọng:

  • Performance: Do phải lưu trữ lịch sử qua cấu trúc Prolly Trees, tốc độ ghi (write) của Dolt chậm hơn MySQL khoảng 2-3 lần. Tuy nhiên, tốc độ đọc (read) gần như không có sự khác biệt đáng kể.
  • Lưu trữ: Dung lượng database sẽ phình to nhanh hơn do lưu vết lịch sử. Đừng quên chạy dolt gc định kỳ để tối ưu không gian đĩa.
  • DoltHub: Nếu team bạn làm việc từ xa, hãy dùng DoltHub. Nó giống như GitHub cho dữ liệu, cho phép push/pull và review thay đổi cực kỳ trực quan.

Lời kết

Dolt mang lại khả năng “quay xe” (rollback) cực mạnh cho database. Nếu dự án của bạn thường xuyên phải thay đổi cấu hình hoặc làm về AI/ML cần tracking version của dataset, Dolt là lựa chọn không thể bỏ qua. Hãy thử cài đặt và trải nghiệm cảm giác quản lý database an toàn như quản lý source code nhé.

Share: