Самый эффективный способ хранить и просматривать эти данные? - PullRequest
2 голосов
/ 11 января 2011

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

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

Файл XML имеет размер 350 КБ, который я загружал в PHP с помощью simplexml_load_file. Я думал, что это было немного большим, поэтому я преобразовал его в файл PHP, содержащий индексированный (по строке) массив слов, который уменьшает размер файла примерно до 60 КБ.

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

Ответы [ 4 ]

3 голосов
/ 11 января 2011

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

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

0 голосов
/ 11 января 2011

Без сомнения, наиболее расширяемым решением для этого является использование базы данных.Это может обрабатывать огромные объемы данных без значительного снижения производительности, поэтому, если у вас будет больше данных в будущем, добавить их будет тривиально.В этом случае вы могли бы использовать sqlite, что требует довольно мало усилий с точки зрения установки и настройки, но при этом достаточно быстрое и мощное.

Ваше решение с использованием массива PHP (предположительно с использованиемinclude / require) довольно неплохо, и я бы не стал сильно беспокоиться о его изменении.Вы абсолютно правы, однако, потерять файл XML.Это будет как чрезмерно трудоемким, так и медленным.

0 голосов
/ 11 января 2011

Индексирование на основе массива слов, хранящихся в файле, занимает больше времени, чем поиск в XML.

0 голосов
/ 11 января 2011

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

Возможно, возникло возражение, поскольку массив будетвам нужно прочитать все данные сразу, но при весе 60K это не проблема.

Что касается поиска данных, поскольку массивы PHP ассоциативны, они предлагают довольно хорошую производительность в этом сценарии.

В целом, я бы сказал, что ваш подход правильный.

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