2013-12-10 1 views
0

что вы считаете лучше? хранить XML-файлы в базе данных (sql) и на файловом сервере?хранить файлы xml в базе данных vs file system

некоторое внимание:

*there will be a great number of new files (> 800 per day) 
*much more reads than writes, let say 5-10 per every new file 
*and almost no updates or modification on the files once created 

Im заинтересован в зная плюсы и минусы каждого подхода, связанных с производительностью и безопасностью йоту и любой другой полезной информации, что и culd дать мне.

ТКС

ответ

2

Многое зависит от того, что вы хотите, база данных или файловая система делать с XML.

Звучит так, как будто вы просто хотите сохранить их по имени или номеру и вернуть их. То есть база данных или файловая система не должны искать в них, индексировать их несколькими различными свойствами, извлекать их части, а не целые файлы и т. Д.

Если это так, то это примерно то же самое компромисс, как и с чем-либо еще: «Должен ли я хранить файлы JPEG в базе данных или в файловой системе»? Несколько компромиссов:

  • Если вы используете около 1000 файлов в одном каталоге, многие файловые системы сильно замедляются. Конечно, вы можете организовать их в разных каталогах (Git и iPhoto делают это упрощенно, но эффективно).

  • Вам нужно беспокоиться о репликации, отказоустойчивых серверах и других проблемах с высокой нагрузкой?

  • Вам нужно беспокоиться о транзакциях (например, два человека, пытающихся добавить или заменить один и тот же файл одновременно), разрешения пользователя, ведение журнала транзакций, возможность отката назад, как система была на прошлой неделе, и тому подобное?

Сложности, подобные тем, которые, вероятно, утверждают, что используют базу данных, поскольку базы данных обычно имеют функции, специально разработанные для решения этих проблем. Если это просто сохранение и извлечение всего XML-файлов, файловые системы могут быть проще.

В любом случае, если вы можете сделать остальную часть вашей системы не заботясь, это лучше. То есть, изолируйте часть системы, которая фактически говорит с базой данных или файловой системой, поэтому вы можете подключить любой из них при необходимости изменения.

Надеюсь, что это поможет.