สัปดาห์ลดราคาสุดพิเศษClaude Skills — ลด 20%
Glossary

อธิบายไฟล์ SQLite: โครงสร้าง, กรณีการใช้งาน และขีดจำกัดสำคัญ

Powerdrill Bloom·
อธิบายไฟล์ SQLite: โครงสร้าง, กรณีการใช้งาน และขีดจำกัดสำคัญ

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

หากคุณเคยได้รับไฟล์ .db, .sqlite หรือ .sqlite3 และสงสัยว่าคุณได้รับข้อมูลทั้งหมดครบถ้วนหรือไม่ นี่คือรูปแบบไฟล์ที่คุณควรทำความเข้าใจอย่างถูกต้อง

ไฟล์ SQLite คืออะไรกันแน่

SQLite อธิบายตัวเองว่าเป็น "ไลบรารีในกระบวนการทำงาน (in-process library) ที่ใช้เครื่องมือฐานข้อมูล SQL แบบทำธุรกรรม มีความเบ็ดเสร็จในตัว ไม่ต้องพึ่งพาเซิร์ฟเวอร์ และไม่ต้องตั้งค่าใดๆ" หน้าเดียวกันนี้ยังระบุอีกว่า SQLite "ไม่มีกระบวนการเซิร์ฟเวอร์แยกต่างหาก" แอปพลิเคชันจะเชื่อมโยงกับไลบรารีและอ่านไฟล์โดยตรง

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

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

มีอะไรอยู่ข้างในไฟล์

ส่วนหัวขนาด 100 ไบต์

ไบต์แรกๆ จะระบุรูปแบบไฟล์ ที่ออฟเซ็ต 0 ไฟล์จะมีสตริงส่วนหัวขนาด 16 ไบต์: SQLite format 3\000 ลายเซ็นดังกล่าวคือวิธีที่เครื่องมือต่างๆ ใช้จดจำไฟล์ ไม่ว่าไฟล์นั้นจะมีนามสกุลอะไรก็ตาม

ฟิลด์ถัดไปมีความสำคัญมากกว่าที่เห็น ที่ออฟเซ็ต 16 จะมีจำนวนเต็มขนาด 2 ไบต์ที่เก็บ "ขนาดหน้าฐานข้อมูลเป็นไบต์" เอกสารระบุว่า "ต้องเป็นเลขยกกำลังสองระหว่าง 512 ถึง 32768 หรือค่า 1 ซึ่งแสดงถึงขนาดหน้า 65536" ฟิลด์แบบหลายไบต์ทั้งหมดในส่วนหัวจะถูกจัดเก็บโดยเริ่มจากไบต์ที่มีนัยสำคัญที่สุดก่อน (most significant byte first)

อีกสองไบต์ถัดมาอยู่ที่ออฟเซ็ต 18 และ 19: เวอร์ชันการเขียนและเวอร์ชันการอ่านของรูปแบบไฟล์ เอกสารระบุว่าค่าคือ "1 สำหรับระบบเก่า; 2 สำหรับ WAL"

หน้า ไม่ใช่แถว

ภายใต้ส่วนหัว ไฟล์จะเป็นกองของหน้าที่มีขนาดคงที่ ข้อกำหนดระบุไว้อย่างชัดเจนว่า "ไฟล์ฐานข้อมูลหลักประกอบด้วยหน้าหนึ่งหน้าขึ้นไป ขนาดของหน้าจะเป็นเลขยกกำลังสองระหว่าง 512 ถึง 65536 ทุกหน้าภายในฐานข้อมูลเดียวกันจะมีขนาดเท่ากัน"

หน้าต่างๆ จะถูกจัดลำดับหมายเลขเริ่มจาก 1 และหมายเลขหน้าสูงสุดคือ 4,294,967,294 ตารางและดัชนีจะอาศัยอยู่ภายในหน้าเหล่านั้นในรูปแบบโครงสร้าง B-tree ซึ่งเป็นเหตุผลว่าทำไมโปรแกรมแก้ไขข้อความ (text editor) จึงแสดงข้อมูลให้คุณเห็นได้น้อยมาก

ไฟล์ไซด์คาร์ที่ไม่มีใครพูดถึง

นี่คือส่วนที่ทำให้หลายคนตกม้าตาย เอกสารระบุว่าสถานะที่สมบูรณ์ "มักจะ" อยู่ในไฟล์เดียว จากนั้นจึงระบุข้อยกเว้น ในระหว่างการทำธุรกรรม SQLite จะ "เก็บข้อมูลเพิ่มเติมไว้ในไฟล์ที่สองที่เรียกว่า 'rollback journal'" ในโหมด WAL ไฟล์ที่สองนั้นจะเป็นบันทึกการเขียนล่วงหน้า (write-ahead log)

ดังนั้น การคัดลอกไฟล์ในขณะที่แอปพลิเคชันกำลังเขียนข้อมูลอยู่อาจทำให้ข้อมูลที่คอมมิต (commit) แล้วขาดหายไป เนื่องจากข้อมูลนั้นยังคงอยู่ในไฟล์ไซด์คาร์ หากเพื่อนร่วมงานส่งไฟล์ .db มาให้คุณเพียงอย่างเดียว และตัวเลขดูเหมือนจะเก่าไปหน่อย นี่คือสิ่งแรกที่คุณควรตรวจสอบ

วิธีเปิดไฟล์ SQLite

มีสามวิธีหลักๆ และวิธีที่เหมาะสมจะขึ้นอยู่กับสิ่งที่คุณตั้งใจจะทำต่อไป

อ่านด้วยโปรแกรมดูไฟล์ (viewer) โปรแกรมดู SQLite บนเดสก์ท็อปและเบราว์เซอร์จะเปิดไฟล์ แสดงรายการตาราง และให้คุณคลิกดูแถวต่างๆ ได้ นี่เป็นวิธีที่เร็วที่สุดในการตอบคำถามว่า "มีอะไรอยู่ในนี้บ้าง" และมักจะเพียงพอสำหรับการดูข้อมูลในเบื้องต้น

สืบค้นด้วยบรรทัดคำสั่ง (command line) หรือไลบรารี เชลล์ sqlite3 และการเชื่อมโยงไลบรารีมาตรฐานใน Python, Node และภาษาอื่นๆ ส่วนใหญ่สามารถอ่านรูปแบบไฟล์นี้ได้โดยตรง นี่คือวิธีที่เหมาะสมเมื่อคุณทราบสกีมาอยู่แล้วและต้องการตัวเลขที่เฉพาะเจาะจง

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

ทำไมเครื่องมือจึงอาจแจ้งว่าไฟล์นี้ไม่ใช่ฐานข้อมูล

ข้อกำหนดได้อธิบายเรื่องนี้ไว้ ทุกไฟล์ที่ถูกต้องจะเริ่มต้นด้วยสตริงส่วนหัวขนาด 16 ไบต์ คือ SQLite format 3\000 หากโปรแกรมอ่านเปิดไฟล์แล้วไม่พบลายเซ็นดังกล่าวที่ออฟเซ็ต 0 แสดงว่าไฟล์ที่ได้รับไม่ใช่ฐานข้อมูล SQLite

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

ไฟล์ SQLite สามารถมีขนาดใหญ่ได้แค่ไหน

ใหญ่กว่าที่คำถามมักจะสื่อถึง หน้าข้อจำกัดของ SQLite ระบุว่าขนาดสูงสุดของไฟล์ฐานข้อมูลคือ 4,294,967,294 หน้า ที่ขนาดหน้าสูงสุด 65,536 ไบต์ นั่นหมายถึงขนาดฐานข้อมูลสูงสุดประมาณ 281 เทราไบต์

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

จำนวนแถวก็ถูกจำกัดด้วยกำแพงเดียวกัน ขีดจำกัดสูงสุดตามทฤษฎีคือ 2^64 แถวในหนึ่งตาราง เอกสารระบุว่าขีดจำกัดนี้ "ไม่สามารถไปถึงได้ เนื่องจากจะถึงขนาดฐานข้อมูลสูงสุดที่ 281 เทราไบต์ก่อน"

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

คุณจะพบไฟล์ SQLite ได้ที่ไหนบ้าง

  • การส่งออกข้อมูลของแอปพลิเคชัน แอปพลิเคชันบนเดสก์ท็อปและมือถือมักจะจัดเก็บประวัติการใช้งาน การตั้งค่า และบันทึกข้อความไว้ในไฟล์ SQLite ที่คุณสามารถคัดลอกออกมาได้
  • การส่งมอบข้อมูลเพื่อการวิเคราะห์ วิศวกรมักจะส่งสแนปชอตข้อมูลเป็นไฟล์เดียว แทนที่จะอนุญาตให้เข้าถึงฐานข้อมูลโดยตรง
  • อุปกรณ์และระบบโทรมาตร (telemetry) ระบบสมองกลฝังตัวจะเขียนข้อมูลลงในเครื่องโดยตรงเนื่องจากไม่มีเซิร์ฟเวอร์ให้เชื่อมต่อ
  • คลังข้อมูลเก่า (archives) ความเสถียรในระยะยาวของรูปแบบไฟล์นี้ทำให้มันเป็นตัวเลือกยอดนิยมสำหรับชุดข้อมูลที่ต้องคงสภาพให้อ่านได้เป็นเวลาหลายปี
  • ระบบภายในของเบราว์เซอร์และเครื่องมือต่างๆ เครื่องมือในเครื่องจำนวนมากจะเก็บสถานะด้วยวิธีนี้ ซึ่งเป็นเหตุผลว่าทำไมเราจึงมักพบนามสกุลไฟล์นี้ในตั๋วสนับสนุนปัญหา (support tickets)

ไฟล์ WAL และไฟล์ journal มีไว้เพื่ออะไร

คุณอาจเคยคัดลอกไฟล์ .db และพบไฟล์ -wal หรือ -journal อยู่ข้างๆ ไฟล์เหล่านั้นคือไฟล์ไซด์คาร์ที่ข้อกำหนดได้อธิบายไว้ และการลบไฟล์เหล่านั้นคือสาเหตุที่ทำให้ผู้คนสูญเสียข้อมูล

Rollback journal เป็นกลไกแบบเก่า ก่อนที่จะเปลี่ยนหน้าข้อมูล SQLite จะเขียนเวอร์ชันดั้งเดิมของหน้านั้นลงใน journal หากการเขียนถูกขัดจังหวะ เวอร์ชันดั้งเดิมจะสามารถนำกลับมาใส่ใหม่ได้ ซึ่งเป็นสิ่งที่ช่วยให้ธุรกรรมอยู่รอดจากการขัดข้อง (crash) ได้

Write-ahead log จะสลับกระบวนการดังกล่าว โดยการเปลี่ยนแปลงจะถูกบันทึกลงใน log ก่อน แล้วจึงอัปเดตไฟล์หลักในภายหลัง ส่วนหัวจะระบุว่าฐานข้อมูลอยู่ในโหมดใด เวอร์ชันการเขียนของรูปแบบไฟล์ที่ออฟเซ็ต 18 คือ "1 สำหรับระบบเก่า; 2 สำหรับ WAL"

กฎในทางปฏิบัติเป็นผลโดยตรงจากประโยคเกี่ยวกับสถานะที่สมบูรณ์ สมมติว่าฐานข้อมูลอยู่ในโหมด WAL และมีคนส่งเฉพาะไฟล์หลักให้คุณ การเปลี่ยนแปลงที่คอมมิตล่าสุดอาจยังคงอยู่ใน log ที่คุณไม่ได้รับ

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

ไฟล์ SQLite vs CSV vs Parquet

ไฟล์ SQLite CSV Parquet
รูปทรง หลายตาราง ในหนึ่งไฟล์ หนึ่งตาราง ในหนึ่งไฟล์ หนึ่งตาราง ในหนึ่งไฟล์หรือโฟลเดอร์
ประเภทข้อมูล จัดเก็บพร้อมกับข้อมูล คาดเดาโดยโปรแกรมอ่าน จัดเก็บพร้อมกับข้อมูล
ความสัมพันธ์ คงอยู่ ผ่านคีย์และดัชนี สูญหาย สูญหาย
มนุษย์สามารถอ่านได้ ไม่ ใช่ ไม่
เขียนขึ้นเพื่อใช้สืบค้น ใช่ ด้วย SQL ไม่ ใช่ โดยเครื่องมือวิเคราะห์
ข้อผิดพลาดที่พบบ่อย ไฟล์ไซด์คาร์ journal หรือ WAL ขาดหายไป การคาดเดาประเภทข้อมูลและตัวคั่น การสนับสนุนของชุดเครื่องมือ (toolchain)

หากคุณทำงานกับรูปแบบไฟล์เหล่านี้เป็นประจำ บทความอธิบายของเราเกี่ยวกับ ไฟล์ Parquet และ ไฟล์ TSV จะครอบคลุมเนื้อหาในลักษณะเดียวกันสำหรับทั้งสองรูปแบบนั้น

ทำไมทีมต่างๆ จึงเลือกใช้รูปแบบไฟล์นี้

ไม่ต้องรันระบบใดๆ เนื่องจาก SQLite "ไม่มีกระบวนการเซิร์ฟเวอร์แยกต่างหาก" การส่งมอบงานจึงเป็นเพียงการคัดลอกไฟล์ แทนที่จะต้องเปิดตั๋วขอจัดสรรทรัพยากรระบบ (provisioning ticket)

ประเภทข้อมูลไม่สูญหายระหว่างทาง คอลัมน์วันที่ก็ยังคงเป็นวันที่เมื่อถึงปลายทาง ใครก็ตามที่เคยเห็นโปรแกรมอ่าน CSV เปลี่ยนรหัสประจำตัว (identifier) ให้กลายเป็นสัญลักษณ์ทางวิทยาศาสตร์ (scientific notation) จะเข้าใจถึงคุณค่าของสิ่งนี้เป็นอย่างดี

ความสัมพันธ์ก็ยังคงอยู่เช่นกัน ตารางที่เกี่ยวข้องกันหลายตารางจะอยู่ร่วมกันในอาร์ติแฟกต์เดียว ดังนั้นการเชื่อมโยงตาราง (join) ที่ทำให้ข้อมูลมีความหมายจึงยังคงใช้งานได้

ความทนทานถูกออกแบบมาในตัว SQLite ระบุว่าธุรกรรม "แม้หลังจากไฟฟ้าดับ" เป็นหนึ่งในคุณสมบัติหลัก ซึ่งเป็นเหตุผลว่าทำไมซอฟต์แวร์ฝังตัวจำนวนมากจึงพึ่งพามัน

ข้อจำกัดที่ควรทราบ

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

ขนาดหน้าจะถูกกำหนดตายตัวเมื่อสร้าง ทุกหน้าในฐานข้อมูลจะมีขนาดเท่ากัน และขนาดนั้นจะถูกบันทึกไว้ในส่วนหัว คุณเลือกมันเพียงครั้งเดียว

กฎของไฟล์ไซด์คาร์อีกครั้ง ขั้นตอนการคัดลอก สำรองข้อมูล หรืออัปโหลดใดๆ ที่ดึงไปเฉพาะไฟล์หลัก อาจทำให้พลาดข้อมูลใดก็ตามที่อยู่ใน journal หรือ write-ahead log ได้

ความทึบแสง (Opacity) ไฟล์ SQLite ไม่สามารถเปิดดูผ่านๆ ได้เหมือนกับ CSV การอ่านไฟล์จำเป็นต้องใช้เครื่องมือ ซึ่งเป็นอุปสรรคสำคัญที่ทำให้การวิเคราะห์หลายอย่างต้องหยุดชะงัก

วิธีหาคำตอบจากไฟล์ SQLite

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

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

หน้าเว็บที่เกี่ยวข้องสองหน้าเป็นสิ่งที่ควรทราบหากนี่คือเวิร์กโฟลว์ปกติของคุณ Chat with Database จะครอบคลุมวิธีการสนทนาเพื่อเข้าถึงข้อมูลที่มีโครงสร้าง และ Text to SQL จะครอบคลุมกรณีที่คุณต้องการตัวคิวรีเอง หากการส่งมอบงานของคุณมาในรูปแบบไฟล์ส่งออกแบนๆ (flat export) แทน หน้า CSV AI assistant จะครอบคลุมเส้นทางนั้น

อีกหนึ่งสิ่งที่ส่วนหัวบอกคุณ

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

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

บทสรุป

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

โปรดจำข้อควรระวังข้อหนึ่งที่ข้อกำหนดระบุไว้อย่างรอบคอบ สถานะที่สมบูรณ์มักจะอยู่ในไฟล์นั้น ในระหว่างการทำธุรกรรม ส่วนหนึ่งของมันจะอยู่ใน rollback journal หรือ write-ahead log ที่อยู่เคียงข้างกัน ตรวจสอบไฟล์ไซด์คาร์ก่อนที่คุณจะเชื่อถือไฟล์ที่คัดลอกมา

เมื่อคุณมีไฟล์และต้องการคำตอบมากกว่าสกีมา ลองใช้ Powerdrill Bloom และถามคำถามของคุณกับข้อมูลโดยตรงได้เลย

คำถามที่พบบ่อย

ความแตกต่างระหว่าง .db, .sqlite และ .sqlite3 คืออะไร

ไม่มีความแตกต่างในเชิงโครงสร้าง ทั้งสามเป็นนามสกุลไฟล์ทั่วไปสำหรับรูปแบบเดียวกัน และตัวระบุที่แท้จริงคือสตริงส่วนหัวขนาด 16 ไบต์ SQLite format 3\000 ที่จุดเริ่มต้นของไฟล์

ฉันจะทราบได้อย่างไรว่าไฟล์ SQLite ใช้ขนาดหน้าเท่าใด

มันถูกบันทึกไว้ในส่วนหัว จำนวนเต็มขนาด 2 ไบต์ที่ออฟเซ็ต 16 จะเก็บขนาดหน้าเป็นไบต์ ซึ่งต้องเป็นเลขยกกำลังสองระหว่าง 512 ถึง 32768 หรือค่า 1 ซึ่งแสดงถึง 65536

ไฟล์ SQLite คือฐานข้อมูลที่สมบูรณ์หรือไม่

โดยปกติแล้วใช่ แต่ไม่เสมอไป เอกสารระบุว่าในระหว่างการทำธุรกรรม SQLite จะเก็บข้อมูลเพิ่มเติมไว้ใน rollback journal ส่วนในโหมด WAL ข้อมูลนั้นจะไปอยู่ที่ write-ahead log แทน

ฉันสามารถเปิดไฟล์ SQLite ใน Excel ได้หรือไม่

ไม่สามารถเปิดได้โดยตรง เนื่องจากไฟล์จัดเก็บหน้าข้อมูลแบบ B-tree แทนที่จะเป็นแถวของข้อความ วิธีการทั่วไปคือการส่งออกตารางเป็น CSV ก่อน หรือใช้เครื่องมือที่อ่านรูปแบบฐานข้อมูลและส่งคืนผลลัพธ์

SQLite สามารถใช้งานในเชิงพาณิชย์ได้ฟรีหรือไม่

ใช่ SQLite ระบุว่าโค้ดของตนเป็นสาธารณสมบัติ และ "ใช้งานได้ฟรีเพื่อวัตถุประสงค์ใดๆ ไม่ว่าจะในเชิงพาณิชย์หรือส่วนตัว"