จัดเก็บภาพในฐานข้อมูลหรือในไฟล์ที่มีลิงค์ฐานข้อมูลหรือไม่


22

การจัดเก็บไฟล์ภาพในฐานข้อมูลเหมาะสมหรือไม่? หรือมันจะดีกว่าที่จะเก็บเฉพาะเส้นทางของไฟล์ในฐานข้อมูลในขณะที่เก็บไฟล์ไว้บนเซิร์ฟเวอร์?

มีวิธีอื่นในการทำสิ่งนี้ใช่ไหม?

คำตอบ:


22

ผมแนะนำให้คุณเก็บภาพไว้ในระบบไฟล์ไม่ใช่ในฐานข้อมูล

การจัดเก็บภาพในฐานข้อมูลมีข้อเสียหลายประการ:

  • ฐานข้อมูลอาจมีขนาดใหญ่ขึ้นอย่างไม่คาดคิด บางครั้งพื้นที่ว่างเป็นปัญหา ตัวอย่างเช่นกับ SQLServer express คุณมีขีด จำกัด 4GB

  • การโยกย้ายข้อมูลอาจกลายเป็นความเจ็บปวดตัวอย่างเช่นหากคุณเปลี่ยนจาก SQLServer เป็น Oracle

  • ข้อความค้นหาอาจช้ามากและคุณจะมีฐานข้อมูลโหลดสูง

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

  • ประสิทธิภาพที่แย่ลงโดยทั่วไป

  • คุณอาจจะต้องสร้างไฟล์ชั่วคราวเมื่อดึงภาพจากฐานข้อมูลต่อไป นั่นไม่จำเป็น

ข้อเสียเหล่านี้มีมากกว่าค่าใช้จ่ายในการรักษาพา ธ ไปยังรูปภาพที่เก็บไว้ในฐานข้อมูลที่ซิงโครไนซ์กับระบบไฟล์ มีเพียงไม่กี่กรณีพิเศษที่จะเก็บรูปภาพไว้ในฐานข้อมูลได้ดีกว่า


11

งานวิจัยเกี่ยวกับ SQL Server 2005 และระบบแฟ้ม NTFS (Microsoft) เพื่อเปรียบเทียบประสิทธิภาพ CRUD: การหยดหรือไม่ที่จะหยด การศึกษานี้ทำในเว็บแอปพลิเคชันด้วย คุณแสดงรายการฐานข้อมูลอื่น (MySQL) และฉันจะสมมติว่าคุณไม่ได้ใช้ Windows Server สำหรับเว็บไซต์ PHP ของคุณดังนั้นมันจะน่าสนใจถ้ามีคนทำการศึกษาคล้ายกับเทคโนโลยีที่แตกต่างกัน

ปรากฎว่ามันขึ้นอยู่กับขนาดของไฟล์ SQL Server สนับสนุน blobs (ดีกว่า 2x) 256K หรือน้อยกว่าและระบบไฟล์รองรับไฟล์ 1MB + ระบบไฟล์ในการศึกษานี้จัดการกับการแตกแฟรกเมนต์ได้ดีกว่าฐานข้อมูลดังนั้นหากคุณอัปเดตไฟล์เหล่านี้อย่างต่อเนื่องหรือระบบนี้ขยายตัวตามกาลเวลาการแตกแฟรกเมนต์จะเป็นปัจจัยที่ใหญ่กว่าซึ่งระบบไฟล์จะทำงานได้ดีขึ้น

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

การจำลองแบบการสำรองข้อมูลการกู้คืนความเสียหายการกระจายตัวความจุดิสก์ที่เหลือและประสิทธิภาพเมื่อเวลาผ่านไปควรได้รับการพิจารณาระหว่างการออกแบบ นี่เป็นเพียงการศึกษาเกี่ยวกับ SQL Server รุ่นก่อนหน้านี้และเช่นเดียวกับผู้ผลิตฐานข้อมูลรายอื่นฉันคาดว่าการจัดการไฟล์และไบนารีขนาดใหญ่เป็นเวทีการแข่งขันที่สำคัญ


คุณอาจต้องการพิจารณาโซลูชันแบบรวม ตัวอย่างเช่นใน SQL Server มีFILESTREAMและระยะไกลร้านหยด
Fernando Correia

4

หากคุณกำลังจะมีรูปภาพจำนวนมากการจัดเก็บไว้ในฐานข้อมูลอาจลบปัญหาเกี่ยวกับการหมด inodes ที่ระดับระบบไฟล์

อย่างไรก็ตามปัญหานี้จะได้รับการแก้ไขที่ดีที่สุดโดยใช้ระบบไฟล์ที่เหมาะสมยิ่งขึ้นและใช้มาตรการใดก็ตามที่แนะนำกับระบบไฟล์นั้นในองค์กร

มิฉะนั้นการจัดเก็บภาพในฐานข้อมูลเป็นการสิ้นเปลืองทรัพยากรอย่างสมบูรณ์ เก็บเส้นทางตามที่คุณพูด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.