ขีด จำกัด ที่เหมือนจริง (ขนาดของฐานข้อมูล Sqlite บางตัว) จะเหมือนกับขีด จำกัด ที่สมจริงสำหรับไฟล์ข้อมูล และข้อ จำกัด นั้นขึ้นอยู่กับคอมพิวเตอร์และระบบของคุณเป็นจำนวนมาก บนเดสก์ท็อป Linux ปัจจุบันของฉันฉันไม่สามารถซื้อไฟล์ที่มีขนาดใหญ่กว่า 350Gbyte (เพราะกฎทั่วไปฉันหลีกเลี่ยงการมีไฟล์เดียวกินมากกว่าครึ่งพาร์ติชันดิสก์) BTW ข้อ จำกัด เชิงปฏิบัตินั้นยังส่งผลต่อ SQL RDBMS อื่น ๆ เช่น PostGreSQL หรือ MariaDB (แต่ส่วนใหญ่จะเก็บข้อมูลไว้ในไฟล์หลาย ๆไฟล์ซึ่งคุณอาจเก็บไว้ในระบบไฟล์ที่แตกต่างกันและบางส่วนสามารถจัดการข้อมูลกระจายบนเครื่องระยะไกล .. .)
หลังจากอ่านบทความนี้ฉันยังไม่เชื่อที่จะพิจารณา SQLite สำหรับสิ่งที่อาจต้องใช้หลายร้อยกิกะไบต์
คุณถูกและผิด
คุณพูดถูกเพราะในคอมพิวเตอร์ทุกวันนี้ (แล็ปท็อปและเดสก์ท็อปไม่ใช่ซูเปอร์คอมพิวเตอร์หรือเซิร์ฟเวอร์ดาต้าเซ็นเตอร์) หนึ่งร้อยกิกะไบต์ยังคงมีพื้นที่ดิสก์ที่ค่อนข้างใหญ่ ดังนั้นในทางปฏิบัติหากคุณนึกถึงฐานข้อมูลขนาดใหญ่คุณจะนึกภาพเซิร์ฟเวอร์ SQL จริง ๆ (โดยเฉพาะ PostGreSQL) โดยเฉพาะอย่างยิ่งเพราะคุณอาจต้องการการเข้าถึงจากระยะไกลการเข้าถึงพร้อมกันอย่างมีประสิทธิภาพและกระจายข้อมูลและตาราง
คุณ (โดยทั่วไปฉันไม่เคยลอง) ผิดเพราะ SQLite อาจมีความสามารถ (และบางครั้งทดสอบ) เพื่อจัดการกับฐานข้อมูลหลายร้อยกิกะไบต์สมมติว่าคุณมีระบบไฟล์ที่สามารถจัดการกับไฟล์ขนาดใหญ่ (และอาจเป็นสอง อย่างน้อยพวกเขา)
แน่นอนฉันจะ (บางครั้ง) พิจารณา SQLite สำหรับฐานข้อมูลหลายสิบกิกะไบต์ (และฉันได้ลองอีกครั้งเช่น.sqlite
ไฟล์ขนาดใหญ่IIRC ของ 40Gbytes) ในเครื่องปัจจุบัน (ไม่ใช่ซุปเปอร์คอมพิวเตอร์) ฉันลังเลที่มีฐานข้อมูล SQLite หลายร้อยกิกะไบต์เนื่องจากไฟล์ดังกล่าวค่อนข้างใหญ่ตามแนวปฏิบัติของวันนี้
IIRC ผู้ขายฮาร์ดแวร์บางรายที่ขายเครื่องจักรระบบแฟ้มพิเศษพูดกับฉันสักครั้งหนึ่งว่ามีแอปพลิเคชัน terabyte sqlite (แต่ฉันอาจผิด)
แน่นอนประสิทธิภาพของ SQLite ขึ้นอยู่กับ (เช่นฐานข้อมูล SQL ทั้งหมด) จำนวนมากและความกว้างของตาราง, ดัชนี, แบบสอบถาม SQL ที่เกี่ยวข้อง และคุณไม่ต้องการมีการเข้าถึงพร้อมกัน (โดยกระบวนการที่แตกต่างกัน) และคุณควรใช้ทรานแซคชัน (ตามประสบการณ์แม้ในฐานข้อมูล SQLITE ขนาดเล็กเพียงไม่กี่เมกะไบต์คุณต้องการห่อคำขอแทรกพันของคุณด้วยBEGIN TRANSACTION
& END TRANSACTION
การไม่ทำเช่นนั้นทำให้ SQLlite ช้าลงด้วยปัจจัยใหญ่ - มากกว่า 10x-)
และจากประสบการณ์ส่วนตัวด้วยการกำหนดค่าและองค์กรที่เหมาะสม SQLite สามารถจัดการฐานข้อมูลที่ใหญ่กว่า RAM ที่มีอยู่ (ดังนั้น 30Gbytes ไม่ใช่ปัญหา) - แต่คุณอาจต้องการให้ดัชนีพอดีกับ RAM!
หากคุณเกิดรหัสบางอย่างสำหรับ "ซูเปอร์คอมพิวเตอร์" หรือเวิร์กสเตชันราคาแพง (เช่น 512Gbytes ของ RAM และ 8Tbytes ของดิสก์และ 512Gbyte ของ SSD) แน่นอนคุณสามารถมีฐานข้อมูลเทราไบต์ของเทราไบต์ แต่คุณจะต้องทำอย่างนั้นก็ต่อเมื่อกระบวนการหนึ่ง (หรือน้อยมาก) กำลังเข้าถึงฐานข้อมูลนั้น หากคุณมีกระบวนการมากมายที่เข้าถึงฐานข้อมูลเดียวกันพร้อมกันให้ติดตั้ง SQL RDBMS จริง (ดีกว่า MariaDB หรือ PostGreSQL)
โปรดทราบว่าในขณะที่รูปแบบ (ไบนารี) ของ.sqlite
ไฟล์ฐานข้อมูลถูกบันทึกว่าเป็น "พกพา" ฉันชอบที่จะสำรองฐานข้อมูลในรูปแบบข้อความ SQL (โดยใช้sqlite3 mydb.sqlite .dump > mydb.sql
) จากนั้นฉันยังต้องการพื้นที่ดิสก์เพิ่มเติมสำหรับการถ่ายโอนข้อความ (และลดขีด จำกัด ที่เหมือนจริง)
โดยปกติ Sqlite ไม่ใช่คอขวด แต่ดิสก์อาจจะ
PS เหตุผลเดียวกันอาจจะนำไปใช้ในการจัดทำดัชนีไฟล์ขนาดใหญ่โดยใช้GDBM
PPS ในสาขาexpjsของฉัน(sept.2016) ของซอฟต์แวร์ MELT ของฉัน (GPLv3 ฟรีบน github) ฉันยังคงใช้งานแอพพลิเคชั่นทั้งหมดใน JSON ภายในฐานข้อมูล Sqlite ใหม่ ฉันใช้การทดลองเล็ก ๆ กับวัตถุหลายล้านชิ้น (ค่อนข้าง "ใหญ่") โดยที่ไม่น่าประหลาดใจ YMMV