Pennybase จุดประกายการถอดถ้อย: การใช้ไฟล์ CSV เป็นที่เก็บฐานข้อมูลแบ่งแยกชุมชนนักพัฒนา

ทีมชุมชน BigGo
Pennybase จุดประกายการถอดถ้อย: การใช้ไฟล์ CSV เป็นที่เก็บฐานข้อมูลแบ่งแยกชุมชนนักพัฒนา

บริการแบ็กเอนด์มินิมอลใหม่ที่เรียกว่า Pennybase ได้จุดประกายการอฟองอย่างเร่าร้อนในชุมชนนักพัฒนา ไม่ใช่เพราะสิ่งที่มันรวมเอาไว้ แต่เพราะสิ่งที่มันตั้งใจทิ้งออกไป โปรเจกต์นี้ใช้งาน Backend-as-a-Service ที่สมบูรณ์ในโค้ด Go ไม่ถึง 1,000 บรรทัด แต่การตัดสินใจที่ถกเถียงกันมากที่สุดคือการใช้ไฟล์ CSV แทนฐานข้อมูลแบบดั้งเดิมสำหรับการจัดเก็บข้อมูล

คุณสมบัติหลักของ Pennybase :

  • โค้ด Go น้อยกว่า 1,000 บรรทัด
  • การจัดเก็บข้อมูลแบบ CSV พร้อมระบบเวอร์ชัน
  • REST API ที่ตอบกลับด้วย JSON
  • การยืนยันตัวตนผ่าน session cookies และ Basic Auth
  • การควบคุมการเข้าถึงตามบทบาท (RBAC)
  • การอัปเดตแบบเรียลไทม์ผ่าน Server-Sent Events
  • การแสดงผลเทมเพลตด้วย Go templates
  • ไม่มีการพึ่งพาภายนอก (ใช้เฉพาะ standard library )

ความขัดแย้งเรื่อง CSV แบ่งแยกความคิดเห็น

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

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

CSV (Comma-Separated Values): รูปแบบไฟล์ง่าย ๆ ที่ข้อมูลถูกจัดเก็บในข้อความธรรมดาโดยมีค่าที่คั่นด้วยเครื่องหมายจุลภาค ใช้กันทั่วไปในสเปรดชีต

การเปรียบเทียบ CSV กับ SQLite:

คุณสมบัติ ไฟล์ CSV SQLite
อ่านได้โดยมนุษย์ ✅ ได้ ❌ ไม่ได้
การจัดทำดัชนีในตัว ❌ ไม่มี ✅ มี
การปฏิบัติตาม ACID ❌ ไม่มี ✅ มี
ความต้านทานต่อการเสียหาย ❌ ต่ำ ✅ สูง
การพึ่งพาภายนอก ✅ ไม่มี ❌ ต้องใช้ไดรเวอร์
การคอมไพล์ข้ามแพลตฟอร์ม ✅ ง่าย ❌ ต้องใช้ CGO

คำถามเรื่องประสิทธิภาพและความสามารถในการขยายตัว

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

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

Append-only: วิธีการจัดเก็บที่ข้อมูลใหม่จะถูกเพิ่มที่ท้ายไฟล์เสมอ ไม่เคยแก้ไขรายการที่มีอยู่

ข้อกังวลด้านความปลอดภัยและตัวเลือกการใช้งาน

การใช้งานความปลอดภัยของโปรเจกต์ได้รับการวิจารณ์จากนักพัฒนาที่ใส่ใจเรื่องความปลอดภัย Pennybase ใช้การแฮช SHA-256 สำหรับรหัสผ่าน ซึ่งถือว่าไม่เพียงพอสำหรับการจัดเก็บรหัสผ่านสมัยใหม่เนื่องจากความเร็ว มาตรฐานอุตสาหกรรมแนะนำอัลกอริทึมการแฮชที่ช้ากว่าอย่าง bcrypt ที่ทำให้การโจมตีแบบ brute-force ยากขึ้น

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

ปรัชญามินิมอลิซึม

แม้จะมีการวิจารณ์ แต่ Pennybase แสดงให้เห็นการทดลองที่น่าสนใจในมินิมอลิซึมแบบสุดขั้ว ระบบทั้งหมดใช้โค้ดไม่ถึง 1,000 บรรทัดและสามารถจัดการได้โดยใช้เครื่องมือแก้ไขข้อความพื้นฐาน แนวทางนี้ดึงดูดนักพัฒนาที่ให้ความสำคัญกับความเรียบง่ายและต้องการเข้าใจทุกส่วนประกอบของสแต็กของพวกเขา

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

การถกเถียงรอบ ๆ Pennybase สะท้อนให้เห็นความตึงเครียดที่กว้างขึ้นในการพัฒนาซอฟต์แวร์ระหว่างมินิมอลิซึมและความแข็งแกร่ง แม้ว่าการจัดเก็บ CSV อาจดูดั้งเดิมสำหรับนักพัฒนาบางคน แต่มันแสดงให้เห็นว่าข้อจำกัดเชิงสร้างสรรค์สามารถนำไปสู่การทดลองทางสถาปัตยกรรมที่น่าสนใจได้อย่างไร แม้ว่าจะไม่เหมาะสำหรับทุกกรณีการใช้งาน

อ้างอิง: Pennybase