Загрузка XML "Кеша" по сравнению с запросом БД.Недостатки? - PullRequest
0 голосов
/ 30 декабря 2010

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

Конечно, данных не так много - XML ​​представляет менее 1000 объектов.

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

Операции записи не требуются - единственная функция приложения - поиск и отображение.

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

Я считаю, что, например, Полнотекстовый поиск (как таковой) осуществляется мгновенно и т. д. с использованием загруженного XML-подхода.

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

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 30 декабря 2010

Это звучит справедливо для меня.

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

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

Вы говорите, что они хранятся в формате XML, но я предполагаю, что вы читаете файл один раз в день, анализируете и сохраняете его в памятиDOM объект и запросить его с помощью XPath.Соответствует ли производительность XPath вашим потребностям?Это было бы моей единственной заботой.

0 голосов
/ 30 декабря 2010

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

0 голосов
/ 30 декабря 2010

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

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

Какой метод вам больше всего подходит, зависит от характера ваших запросов.

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

...