การจัดเก็บไฟล์ภาพในฐานข้อมูลเหมาะสมหรือไม่? หรือมันจะดีกว่าที่จะเก็บเฉพาะเส้นทางของไฟล์ในฐานข้อมูลในขณะที่เก็บไฟล์ไว้บนเซิร์ฟเวอร์?
มีวิธีอื่นในการทำสิ่งนี้ใช่ไหม?
การจัดเก็บไฟล์ภาพในฐานข้อมูลเหมาะสมหรือไม่? หรือมันจะดีกว่าที่จะเก็บเฉพาะเส้นทางของไฟล์ในฐานข้อมูลในขณะที่เก็บไฟล์ไว้บนเซิร์ฟเวอร์?
มีวิธีอื่นในการทำสิ่งนี้ใช่ไหม?
คำตอบ:
ผมแนะนำให้คุณเก็บภาพไว้ในระบบไฟล์ไม่ใช่ในฐานข้อมูล
การจัดเก็บภาพในฐานข้อมูลมีข้อเสียหลายประการ:
ฐานข้อมูลอาจมีขนาดใหญ่ขึ้นอย่างไม่คาดคิด บางครั้งพื้นที่ว่างเป็นปัญหา ตัวอย่างเช่นกับ SQLServer express คุณมีขีด จำกัด 4GB
การโยกย้ายข้อมูลอาจกลายเป็นความเจ็บปวดตัวอย่างเช่นหากคุณเปลี่ยนจาก SQLServer เป็น Oracle
ข้อความค้นหาอาจช้ามากและคุณจะมีฐานข้อมูลโหลดสูง
ความสามารถในการทำงานร่วมกันกับแอพพลิเคชั่นอื่นจะดีกว่าหากรูปภาพอยู่ในระบบไฟล์และแอพพลิเคชั่นอื่นจะใช้ฐานข้อมูลอื่น คุณยังสามารถเข้าถึงได้โดยตรงและไม่ต้องการเครื่องมือฐานข้อมูล
ประสิทธิภาพที่แย่ลงโดยทั่วไป
คุณอาจจะต้องสร้างไฟล์ชั่วคราวเมื่อดึงภาพจากฐานข้อมูลต่อไป นั่นไม่จำเป็น
ข้อเสียเหล่านี้มีมากกว่าค่าใช้จ่ายในการรักษาพา ธ ไปยังรูปภาพที่เก็บไว้ในฐานข้อมูลที่ซิงโครไนซ์กับระบบไฟล์ มีเพียงไม่กี่กรณีพิเศษที่จะเก็บรูปภาพไว้ในฐานข้อมูลได้ดีกว่า
งานวิจัยเกี่ยวกับ SQL Server 2005 และระบบแฟ้ม NTFS (Microsoft) เพื่อเปรียบเทียบประสิทธิภาพ CRUD: การหยดหรือไม่ที่จะหยด การศึกษานี้ทำในเว็บแอปพลิเคชันด้วย คุณแสดงรายการฐานข้อมูลอื่น (MySQL) และฉันจะสมมติว่าคุณไม่ได้ใช้ Windows Server สำหรับเว็บไซต์ PHP ของคุณดังนั้นมันจะน่าสนใจถ้ามีคนทำการศึกษาคล้ายกับเทคโนโลยีที่แตกต่างกัน
ปรากฎว่ามันขึ้นอยู่กับขนาดของไฟล์ SQL Server สนับสนุน blobs (ดีกว่า 2x) 256K หรือน้อยกว่าและระบบไฟล์รองรับไฟล์ 1MB + ระบบไฟล์ในการศึกษานี้จัดการกับการแตกแฟรกเมนต์ได้ดีกว่าฐานข้อมูลดังนั้นหากคุณอัปเดตไฟล์เหล่านี้อย่างต่อเนื่องหรือระบบนี้ขยายตัวตามกาลเวลาการแตกแฟรกเมนต์จะเป็นปัจจัยที่ใหญ่กว่าซึ่งระบบไฟล์จะทำงานได้ดีขึ้น
คุณต้องพิจารณาว่าเว็บไซต์ของคุณรับผิดชอบต่อการดูแลรักษาไฟล์เหล่านี้อย่างไร หากคุณกำลังสร้างเว็บไซต์เพื่อให้ตัวแทนเรียกร้องค่าสินไหมทดแทนเพื่ออัพโหลดภาพถ่ายของอุบัติเหตุคุณควรควบคุมการทำธุรกรรมและตรวจสอบให้แน่ใจว่าไฟล์เหล่านั้นอยู่บนเซิร์ฟเวอร์ ฐานข้อมูลที่ดีทำสิ่งนี้ให้คุณดังนั้นในฐานะนักพัฒนาคุณได้เพิ่มแรงกดดัน
การจำลองแบบการสำรองข้อมูลการกู้คืนความเสียหายการกระจายตัวความจุดิสก์ที่เหลือและประสิทธิภาพเมื่อเวลาผ่านไปควรได้รับการพิจารณาระหว่างการออกแบบ นี่เป็นเพียงการศึกษาเกี่ยวกับ SQL Server รุ่นก่อนหน้านี้และเช่นเดียวกับผู้ผลิตฐานข้อมูลรายอื่นฉันคาดว่าการจัดการไฟล์และไบนารีขนาดใหญ่เป็นเวทีการแข่งขันที่สำคัญ
หากคุณกำลังจะมีรูปภาพจำนวนมากการจัดเก็บไว้ในฐานข้อมูลอาจลบปัญหาเกี่ยวกับการหมด inodes ที่ระดับระบบไฟล์
อย่างไรก็ตามปัญหานี้จะได้รับการแก้ไขที่ดีที่สุดโดยใช้ระบบไฟล์ที่เหมาะสมยิ่งขึ้นและใช้มาตรการใดก็ตามที่แนะนำกับระบบไฟล์นั้นในองค์กร
มิฉะนั้นการจัดเก็บภาพในฐานข้อมูลเป็นการสิ้นเปลืองทรัพยากรอย่างสมบูรณ์ เก็บเส้นทางตามที่คุณพูด