Зберігати зображення в базі даних або у файлах із посиланням на базу даних?


22

Чи доцільно зберігати файли зображень у базі даних? Або було б краще зберігати лише шлях до файлу в базі даних, зберігаючи сам файл на сервері?

Чи є якісь інші методи для цього правильно?

Відповіді:


22

Настійно раджу зберігати зображення у файловій системі, а не в базі даних.

Зберігання зображень у базі даних має ряд недоліків:

  • База даних може зрости несподівано великою. Іноді простір - це проблема. Наприклад, у SQLServer express у вас є обмеження в 4 Гб.

  • Міграція даних може стати болем, наприклад, якщо ви переходите з SQLServer на Oracle

  • Запити можуть стати дуже повільними, і у вас буде велике завантаження бази даних

  • Взаємодія з іншими програмами краща, якщо зображення є у файловій системі, а інші програми використовують іншу базу даних. Ви також можете отримати доступ до них безпосередньо та не потребувати інструментів бази даних.

  • Гірші показники в цілому

  • Можливо, вам доведеться створити тимчасові файли, коли ви все одно завантажуєте зображення з бази даних. Це зайве.

Ці недоліки значно перевищують витрати на збереження шляхів до зображень, що зберігаються в базі даних, синхронізованої з файловою системою. Є лише кілька спеціальних випадків, коли краще зберігати зображення в базі даних.


11

Дослідження на SQL Server 2005 та файловій системі NTFS (Microsoft) для порівняння продуктивності CRUD: BLOB чи не BLOB . Це дослідження також проводилось у веб-додатку. Ви перерахували ще одну базу даних (MySQL), і я вважаю, що ви не використовуєте сервер Windows для вашого PHP-сайту, тому було б цікаво, якби хтось провів подібне дослідження з різних технологій.

Виявляється, це залежить від розміру файлів. SQL Server надає перевагу (в 2 рази кращі) краплі 256 Кб або менше, а файлова система надає перевагу файлам розміром 1 Мб +. Файлові системи в цьому дослідженні обробляють фрагментацію краще, ніж база даних, тому якщо ви постійно оновлюєте ці файли або ця система з часом зростає, фрагментація стане більшим фактором, який допоможе файловій системі краще виконати роботу.

Вам потрібно визначити, наскільки відповідальний ваш сайт за підтримку цих файлів. Якщо ви створюєте сайт для страхових претендентів для завантаження фотографій нещасного випадку, вам краще контролювати транзакції та переконайтесь, що ці файли знаходяться на сервері. Хороші бази даних роблять це для вас, так що як розробник, ви додали тиску.

Під час проектування слід враховувати реплікацію, резервне копіювання, відновлення після аварій, фрагментацію, залишкову ємність диска та продуктивність. Це лише одне дослідження попередньої версії SQL Server, і, як і інші виробники баз даних, я здогадуюсь, що обробка великих файлів і бінарних файлів є головною конкурентною ареною.


Ви також можете розглянути інтегровані рішення. Наприклад, на SQL Server є FILESTREAM та віддалене зберігання Blob .
Фернандо Коррея

4

Якщо у вас буде величезна кількість зображень, зберігання їх у базі даних може усунути проблеми із нестачею входів на рівні файлової системи.

Однак цю проблему найкраще вирішити за допомогою більш відповідної файлової системи та будь-яких заходів, що рекомендуються з цією файловою системою в організації.

В іншому випадку зберігання зображень у базі даних - це повна витрата ресурсів. Зберігайте шлях, як ви сказали.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.