Litestream เครื่องมือสำรองข้อมูลและจำลองข้อมูล SQLite ยอดนิยม ได้ปล่อย version 0.5.0 พร้อมการปรับปรุงประสิทธิภาพที่สำคัญและฟีเจอร์ใหม่ๆ การอัปเดตครั้งนี้เปิดตัวรูปแบบไฟล์ใหม่ที่เรียกว่า LTX และความสามารถในการกู้คืนข้อมูล point-in-time ที่มีประสิทธิภาพ เพื่อแก้ไขปัญหาความเร็วในการกู้คืนข้อมูลที่ทำให้ผู้ใช้หงุดหงิดมานาน
รูปแบบไฟล์ LTX ใหม่แก้ปัญหาความเร็วในการกู้คืนข้อมูล
การเปลี่ยนแปลงที่ใหญ่ที่สุดใน v0.5.0 คือการเปิดตัวรูปแบบไฟล์ LTX ซึ่งมาแทนที่แนวทางแบบ WAL เดิม การเปลี่ยนแปลงนี้ตอบสนองต่อข้อร้องเรียนของชุมชนเกี่ยวกับเวลาการกู้คืนข้อมูลที่ช้า ก่อนหน้านี้ผู้ใช้รายงานว่าการกู้คืนข้อมูลใช้เวลาถึง 20 นาทีสำหรับฐานข้อมูลขนาดเล็กที่มีเพียง 1,000 แถว ทำให้เครื่องมือนี้ไม่เหมาะสำหรับการใช้งานจริงในสถานการณ์ฉุกเฉิน
ระบบใหม่ใช้แนวทางการบีบอัดแบบลำดับชั้นด้วยสามระดับ: หน้าต่าง 30 วินาทีที่ Level 1, หน้าต่าง 5 นาทีที่ Level 2 และหน้าต่างรายชั่วโมงที่ Level 3 ซึ่งหมายความว่าการกู้คืนฐานข้อมูลตอนนี้ต้องใช้เพียงประมาณโหลไฟล์เท่านั้น ลดเวลาที่ต้องใช้ในการนำระบบกลับมาออนไลน์ระหว่างการขัดข้องอย่างมาก
ลำดับชั้นการบีบอัดของ LTX :
- ระดับ 1: ช่วงเวลา 30 วินาที
- ระดับ 2: ช่วงเวลา 5 นาที
- ระดับ 3: ช่วงเวลา 1 ชั่วโมง
- ผลลัพธ์: ไฟล์เฉลี่ยประมาณ 12 ไฟล์สำหรับการกู้คืนฐานข้อมูล
สถาปัตยกรรมที่เรียบง่ายขึ้นด้วยการยกเลิกแนวคิด Generations
Version 0.5.0 ยกเลิกระบบ generations ที่ซับซ้อนซึ่งก่อนหน้านี้ทำให้เกิดความสับสนเมื่อ Litestream หลายอินสแตนซ์สำรองข้อมูลไปยังปลายทางเดียวกัน แนวทางใหม่ใช้ transaction ID ที่เพิ่มขึ้นแบบ monotonic ทำให้การกู้คืนฐานข้อมูลไปยังจุดเวลาใดเวลาหนึ่งเป็นเรื่องง่ายมากโดยไม่ต้องค้นหาข้ามหลาย backup generations
อย่างไรก็ตาม การทำให้เรียบง่ายนี้มาพร้อมกับการแลกเปลี่ยน version ใหม่จำกัดผู้ใช้ให้มีปลายทาง replica เพียงแห่งเดียวต่อฐานข้อมูล ซึ่งอาจส่งผลต่อการ deployment ที่มีอยู่บางส่วน ทีมพัฒนาอธิบายการตัดสินใจนี้โดยอธิบายว่า replica หลายตัวสามารถแยกออกจากกันและสร้างสถานการณ์การแก้ไขความขัดแย้งที่ซับซ้อน
การเปลี่ยนแปลงสำคัญใน Version 0.5.0:
- รูปแบบไฟล์ LTX ใหม่เข้ามาแทนที่ WAL segments
- รองรับการกู้คืนข้อมูล ณ จุดเวลาใดเวลาหนึ่ง ( PITR )
- ยกเลิกแนวคิด "generations"
- ข้อจำกัดการมี replica ปลายทางเพียงหนึ่งเดียวต่อฐานข้อมูล
- ลบการพึ่งพา CGO ออกไป
- เพิ่มการรองรับ replica แบบ NATS JetStream
การตอบสนองของชุมชนและการใช้งานจริง
การตอบสนองของชุมชนเป็นไปในทางบวกอย่างล้นหลาม โดยนักพัฒนาหลายคนแบ่งปันประสบการณ์การใช้งานจริงของพวกเขา ผู้ใช้รายงานต้นทุนที่ต่ำมากสำหรับการจำลองข้อมูล S3 โดยนักพัฒนาคนหนึ่งระบุว่าแอปพลิเคชันจริงของพวกเขาใช้ค่าใช้จ่ายเพียง 0.02-0.03 ดอลลาร์สหรัฐฯ ต่อเดือนสำหรับการสำรองข้อมูล Litestream
ตื่นเต้นมากที่เห็น Fly เริ่มพัฒนา Litestream ใหม่หลังจากหยุดไปประมาณ 2 ปี! ผมรัก Litestream และใช้มันในทุกแอปที่สร้างตอนนี้
การอัปเดตยังลบการพึ่งพา CGO โดยเปลี่ยนไปใช้ modernc.org/sqlite ทำให้การ cross-compilation ง่ายขึ้นมากสำหรับนักพัฒนาที่สร้างบนแพลตฟอร์มที่แตกต่างจากเป้าหมายการ deployment
ตัวอย่างต้นทุนการใช้งานจริง:
- การ replication แอปจริงบน S3 : $0.02-$0.03 USD ต่อเดือน
- ถูกอธิบายว่า "เพียงไม่กี่เพนนีต่อวัน" แต่ต้นทุนจริงยังต่ำกว่านั้น
- แตกต่างกันไปตามความต้องการพื้นที่จัดเก็บและความถี่ในการเขียนข้อมูล
ความท้าทายและแนวทางแก้ไขในการ Deployment
แม้ว่า Litestream เองจะปรับปรุงอย่างมีนัยสำคัญ แต่การอภิปรายในชุมชนเผยให้เห็นความท้าทายที่ยังคงมีอยู่กับแพลตฟอร์ม deployment นักพัฒนาหลายคนรายงานความยากลำบากในการ deploy แอป SQLite บนบริการ hosting ต่างๆ โดยเฉพาะเรื่องการเริ่มต้นฐานข้อมูลและการจัดการ volume
ผู้ใช้บางคนประสบความสำเร็จกับการ deployment แบบ self-hosted VPS ซึ่งความเรียบง่ายของ Litestream เปล่งประกาย เครื่องมือนี้ต้องการการตั้งค่าขั้นต่ำ - เพียงแค่ storage bucket ที่เข้ากันได้กับ S3 และไฟล์การตั้งค่าง่ายๆ - ทำให้น่าสนใจสำหรับนักพัฒนาที่ต้องการความยืดหยุ่นของฐานข้อมูลโดยไม่ต้องจัดการ database cluster ที่ซับซ้อน
มองไปข้างหน้า
ทีมพัฒนากำลังทำงานกับฟีเจอร์หลักถัดไป: Litestream VFS สำหรับ read replicas ซึ่งจะช่วยให้นักพัฒนาสามารถสร้างสำเนาฐานข้อมูลได้ทันทีที่สามารถให้บริการ read queries จาก S3 ได้ทันทีในขณะที่ฐานข้อมูลเต็มกำลังโหลดในพื้นหลัง proof of concept ทำงานได้แล้ว บ่งชี้ว่าฟีเจอร์นี้อาจมาถึงใน release ในอนาคต
การอัปเดต v0.5.0 แสดงถึงการพัฒนาที่สำคัญของ Litestream โดยแก้ไขข้อร้องเรียนของผู้ใช้ที่พบบ่อยที่สุดในขณะที่ยังคงความเรียบง่ายหลักของเครื่องมือไว้ สำหรับนักพัฒนาที่สร้างแอปพลิเคชันที่ใช้ SQLite การปรับปรุงเหล่านี้ทำให้ Litestream เป็นตัวเลือกที่เป็นไปได้มากขึ้นสำหรับการ deployment จริง
อ้างอิง: Litestream v0.5.0 is Here