Подход хранилища файлов данных на веб-серверах - PullRequest
0 голосов
/ 27 августа 2009

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

Итак, допустим, у меня будет 20 000 продуктов, это будет означать, что в каталоге будет 20 000 XML-файлов. Я не знаком с инфраструктурой дискового хранилища веб-сервера, может ли такое количество файлов вызвать такие проблемы, как значительное снижение скорости доступа и / или чрезмерная фрагментация диска? Являются ли серверы хранения даже фрагментарными, является ли фрагментация проблемой, о которой мне нужно беспокоиться на серверах?

Я бы предпочел сохранить свои XML-файлы индивидуальными, потому что я могу получать к ним доступ напрямую как к статическому контенту через http, что значительно ускоряет доступ и кэширование. Альтернативой может быть создание большого файла двоичных данных и сохранение каждого XML-файла данных продукта в этом файле в двоичном режиме, а затем использование сценария на стороне сервера для извлечения XML-файлов из этого файла больших данных. (Да, я знаю, что могу просто сохранить их в базе данных, но это не тот случай, который меня интересует.)

Ответы [ 5 ]

0 голосов
/ 28 августа 2009

База данных - это путь. Если вам не нужны внешние зависимости, вы можете использовать sqlite. Он встроен в php и включен по умолчанию в текущих версиях php.

Базовое хранилище данных обычно представляет собой один файл.

0 голосов
/ 27 августа 2009

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

0 голосов
/ 27 августа 2009

Взгляните на систему баз данных Berkeley DB XML. Вы можете сохранить свой родной XML, одновременно получая все преимущества ACID БД.

Имейте в виду, что дисковый ввод-вывод будет одним из самых дорогих операций.

Ссылка: http://www.oracle.com/database/berkeley-db/xml/index.html

0 голосов
/ 27 августа 2009

Хорошая идея ограничить количество файлов или каталогов в любом конкретном каталоге.

Одна из стратегий, если у вас есть уникальные идентификаторы для каждого файла XML, создайте структуру папок, в которой используется этот идентификатор.

, например

Продукт 000123 хранится в:

продукты \ 00 \ 01 \ 23 \ product.xml

и продукт 019384 хранится в:

товары \ 01 \ 93 \ 84 \ product.xml

Это уменьшит количество элементов в любой конкретной папке до 100, что вполне разумно.

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

0 голосов
/ 27 августа 2009

Какого размера файлы? Сколько хитов в секунду? Какова относительная популярность каждого файла? Сколько дисков? Сколько оперативки? Вы используете RAID?

В основном - это зависит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...