Litestream v0.5.0 เปิดตัวการปรับปรุงประสิทธิภาพครั้งใหญ่และฟีเจอร์ Point-in-Time Recovery

ทีมชุมชน BigGo
Litestream v0.5.0 เปิดตัวการปรับปรุงประสิทธิภาพครั้งใหญ่และฟีเจอร์ Point-in-Time Recovery

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