เปลี่ยนฐานข้อมูลของแอปผมให้เป็นโฟลเดอร์ใน Google Drive แทน

ผมอยากติดตามความคืบหน้าในการเรียนดนตรีของลูกสาว ทุกสัปดาห์เธอจะได้ไฟล์เสียงและโน้ตเพลงจากคุณครู ผมอยากจะฟังการซ้อมของเธอในแต่ละช่วงเวลา และผมไม่อยากให้ไฟล์บันทึกเสียงใหม่ไปเขียนทับไฟล์เก่า

ผมจึงสร้างแอปขึ้นมาเพื่อแก้ปัญหานี้ มันไม่มี backend ไม่มี database และไม่มีค่าใช้จ่ายเลยแม้แต่ดอลลาร์เดียว

นักพัฒนาส่วนใหญ่มักมองข้ามฟีเจอร์หนึ่งใน Google Drive นั่นคือ revision history

เมื่อคุณอัปโหลดไฟล์เวอร์ชันใหม่ที่มีชื่อและ ID เดียวกัน Drive จะเก็บเวอร์ชันเก่าเอาไว้ โดยจะมีการบันทึก timestamp และสามารถเรียกดูได้

แทนที่จะต้องสร้าง database ที่ซับซ้อนด้วย tables และ foreign keys ผมแค่เขียนทับไฟล์เดิมลงไป แล้ว Drive จะจัดการเรื่อง versioning ให้เอง แอปของผมใช้เพียงแค่การเรียก API สองครั้งเพื่อแสดงประวัติการแก้ไข โดยที่ผมไม่ต้องเขียน logic สำหรับจัดการเวอร์ชันเลย

โครงสร้างโฟลเดอร์ทำหน้าที่เป็น database schema ของผม:

• แต่ละเพลงจะมีโฟลเดอร์เป็นของตัวเอง • ไฟล์จะใช้ prefix เช่น teacher-audio หรือ student-practice • ผมไม่ได้ใช้ JSON ในการอธิบายโครงสร้าง • การเพิ่มโฟลเดอร์ใหม่จะช่วยอัปเดตแอปโดยอัตโนมัติ

ผมยังต้องการวิธีสำหรับติดแท็กเพลงด้วย ซึ่งผมไม่ได้ใช้ไฟล์ JSON สำหรับเรื่องนี้ แต่ผมใช้ Drive metadata properties แทน คุณสามารถเพิ่ม key-value pairs ลงในโฟลเดอร์ได้โดยตรง ซึ่งช่วยให้ทุกอย่างจบได้ในการเรียก API เพียงครั้งเดียว

การตั้งค่า:

• Hosting: GitHub Pages (ฟรี) • Auth: Google Identity Services (เฉพาะฝั่ง Client เท่านั้น) • Storage: Google Drive • Database: ไม่มี โครงสร้างโฟลเดอร์คือ model • ค่าใช้จ่ายทั้งหมด: $0

คำแนะนำหนึ่งอย่าง: Drive จะลบ revision เก่าทิ้งหลังจากผ่านไป 30 วัน คุณต้องตั้งค่า flag keepRevisionForever เพื่อบันทึกพวกมันไว้

นี่ไม่ใช่ผลิตภัณฑ์สำหรับสาธารณะ แต่มันเป็นเครื่องมือส่วนตัวสำหรับครอบครัวของผม

เป้าหมายไม่ใช่แค่การประหยัดเงิน แต่เป้าหมายคือการทำให้มั่นใจว่าในอีกสองปีข้างหน้า ผมสามารถกดปุ่มเพียงปุ่มเดียวเพื่อฟังเสียงของลูกสาวในวันนี้ได้ และสถาปัตยกรรมแบบนี้ทำให้สิ่งนี้เป็นไปได้โดยไม่ต้องมีการบำรุงรักษาเพิ่มเติม

คุณเคยใช้ revision history หรือ properties field ของ Drive มาทำเป็น infrastructure บ้างไหม?

ที่มา: https://dev.to/vankadn/replaced-my-apps-database-with-my-daughters-google-drive-folder-1455