Thay thế Cơ sở dữ liệu của Ứng dụng bằng một Thư mục Google Drive

Tôi muốn theo dõi tiến trình học nhạc của con gái mình. Mỗi tuần, con bé đều nhận được các đoạn âm thanh và ghi chú từ giáo viên. Tôi muốn nghe lại các buổi tập luyện của con theo thời gian. Tôi không muốn các bản ghi âm mới ghi đè lên các bản cũ.

Tôi đã xây dựng một ứng dụng để giải quyết vấn đề này. Nó không có backend. Nó không có cơ sở dữ liệu. Nó không tốn một đồng nào.

Hầu hết các nhà phát triển đều bỏ qua một tính năng trong Google Drive. Đó chính là lịch sử phiên bản (revision history).

Khi bạn tải lên một phiên bản mới của một tệp có cùng tên và ID, Drive sẽ giữ lại phiên bản cũ. Nó vẫn được lưu kèm mốc thời gian và có thể duyệt qua được.

Thay vì xây dựng một cơ sở dữ liệu phức tạp với các bảng và khóa ngoại (foreign keys), tôi chỉ đơn giản là ghi đè lên tệp đó. Drive sẽ xử lý việc quản lý phiên bản. Ứng dụng của tôi chỉ sử dụng hai lệnh gọi API để hiển thị lịch sử. Tôi không phải viết bất kỳ logic quản lý phiên bản nào.

Cấu trúc thư mục đóng vai trò như lược đồ cơ sở dữ liệu (database schema) của tôi:

• Mỗi bài hát có một thư mục riêng. • Các tệp sử dụng tiền tố như teacher-audio hoặc student-practice. • Tôi không sử dụng JSON để mô tả cấu trúc. • Việc thêm một thư mục mới sẽ tự động cập nhật ứng dụng.

Tôi cũng cần một cách để gắn thẻ (tag) các bài hát. Tôi không dùng tệp JSON cho việc này. Tôi sử dụng các thuộc tính metadata của Drive. Bạn có thể thêm các cặp khóa-giá trị (key-value pairs) trực tiếp vào một thư mục. Điều này giúp giữ mọi thứ gói gọn trong một lệnh gọi API duy nhất.

Thiết lập:

• Hosting: GitHub Pages (Miễn phí) • Auth: Google Identity Services (Chỉ phía client) • Storage: Google Drive • Database: Không có. Cấu trúc thư mục chính là mô hình (model). • Tổng chi phí: $0.

Một mẹo nhỏ: Drive sẽ xóa các phiên bản cũ sau 30 ngày. Bạn phải đặt cờ keepRevisionForever để lưu chúng lại.

Đây không phải là một sản phẩm dành cho công chúng. Nó là một công cụ cá nhân cho gia đình tôi.

Mục tiêu không chỉ là để tiết kiệm tiền. Mục tiêu là để đảm bảo rằng trong hai năm tới, tôi có thể nhấn một nút và nghe lại giọng hát của con gái mình ngày hôm nay. Kiến trúc này giúp điều đó trở nên khả thi mà không cần bảo trì thêm.

Bạn đã bao giờ sử dụng lịch sử phiên bản hoặc trường thuộc tính (properties field) của Drive để làm hạ tầng chưa?

Nguồn: https://dev.to/vankadn/replaced-my-apps-database-with-my-daughters-google-drive-folder-1455