Подтвердить что ты не робот

Какой из них быстрее читает XML файл или запрашивает базу данных

Я разрабатываю CMS на С# и должен решить, где сохранить настройки конфигурации для сайта. Также рассмотрим определение базовых html-шаблонов, а затем обработку их на стороне сервера для создания страниц заблаговременно.

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Сначала измерьте, затем оптимизируйте.

Ответ 3

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

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

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

Ответ 4

Это зависит от стратегии, которую вы собираетесь использовать для доступа к данным.

Если вы идете по маршруту базы данных, собираетесь ли вы кэшировать свои результаты? Там может быть много разговоров в сети, если вы постоянно вытаскиваете детали из db.

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

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

http://www.red-gate.com/products/ants_performance_profiler/index.htm?utm_source=google&utm_medium=cpc&utm_content=brand_aware&utm_campaign=antsperformanceprofiler&gclid=CLXmzbLXnKMCFQs-lAodSXTGsQ

Ответ 5

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

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

Ответ 6

Я бы просто использовал базу данных по умолчанию здесь. Это быстрее и требует меньше кода.