- Cơ sở dữ liệu quản lý phiên bản theo thời gian thực cho môi trường triển khai nhẹ
- Tối ưu cho prototyping, self-hosting, ứng dụng single-tenant và các môi trường multi-tenant siêu nhẹ không có backend và DB riêng
- Không cần hạ tầng riêng → chạy toàn bộ DB trên client, không cần lập chỉ mục phía server
- Kiến trúc offline-first → ngay cả khi server ngừng hoạt động, client vẫn tiếp tục chạy và có thể khôi phục
- Edge-native → thực hiện phần lớn xử lý trên client để giảm tải server xuống mức tối thiểu
- Hỗ trợ đồng bộ thời gian thực → tự động đồng bộ trạng thái giữa client và server
- Khi khởi tạo, có thể cấu hình vị trí bản sao trong
peers để dễ dàng thiết lập cụm server
- Hỗ trợ đồng bộ giữa các server thông qua giao thức đồng bộ, và có thể mở rộng bằng cách thêm nhiều server mà không cần thay đổi mã
- Sử dụng React Hooks
- React Hooks của GoatDB cung cấp giải pháp quản lý trạng thái hoàn chỉnh, đồng thời cho phép chỉnh sửa trạng thái đồng bộ (mutable)
- Ví dụ, các thay đổi như
task.set('done', true) sẽ được phản ánh ngay trong bộ nhớ, còn GoatDB sẽ tự động xử lý tính toán khác biệt (diffing), commit vào bộ nhớ cục bộ, đồng bộ với server và giải quyết xung đột ở chế độ nền
- Mô hình bảo mật
- Mỗi node duy trì một cặp khóa công khai/riêng tư, và khóa riêng tư tuyệt đối không bị lộ ra ngoài
- Mọi commit đều được ký số, tự động từ chối các thay đổi đã bị can thiệp
- Có thể kiểm soát truy cập dữ liệu thông qua chính sách phân quyền tùy chỉnh
- Cơ chế giải quyết xung đột
- Hợp nhất ba phía (Three-Way Merge): tự động hợp nhất và xử lý khi các thay đổi xung đột
- Cấp phát ID liên tục theo phương thức Logoot: áp dụng hệ thống định danh duy nhất để ngăn xung đột chèn/xóa trong dữ liệu
Dự án ví dụ
- Todo → danh sách việc cần làm hiện đại tối giản dành cho self-hosting
- EdgeChat → giao diện kiểu ChatGPT hoàn toàn chạy trên trình duyệt
- Ovvio → công cụ năng suất đã sử dụng GoatDB từ năm 2024
1 bình luận
GOAT.. ghê thật