что лучше ... поиск в памяти или доступ к базе данных? - PullRequest
5 голосов
/ 05 декабря 2011

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

Ответы [ 3 ]

4 голосов
/ 05 декабря 2011

Одним из факторов является то, что если вам нужно повторять одни и те же результаты снова и снова, обязательно кешируйте их в памяти. Это становится проблемой, когда вы используете linq-to-sql или Entity Framework - ORM, которые поддерживают отложенное выполнение.

Так что, если у вас есть IQueryable<SomeType>, который вам нужно пройти несколько раз, убедитесь, что вы материализовали его с ToList(), прежде чем запускать несколько циклов foreach.

2 голосов
/ 05 декабря 2011

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

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

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

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

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

Абсолютный ответ на ваш вопрос невозможен, он относителен в вашем контексте ...

2 голосов
/ 05 декабря 2011

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

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

В основном это зависит от того, сколько памяти у вас на сервере ...

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