NoSQL и AppFabric с Azure - PullRequest
       21

NoSQL и AppFabric с Azure

0 голосов
/ 21 марта 2012

У меня есть приложение ASP.net, которое я перемещаю в Azure. В приложении есть запрос, который объединяет 9 таблиц для создания пользовательской записи. Каждая запись затем сериализуется в JSON и отправляется туда и обратно с клиентом. Чтобы повысить производительность запросов, при первом запуске 9 запросов и сериализации записи в json результирующая строка сохраняется в таблицу с именем JsonUserCache. Таблица имеет только 2 столбца: JsonUserRecordID (это уникально) и JsonRecord. Каждый раз, когда пользовательская запись запрашивается у клиента, сначала запрашивается таблица JsonUserCache, чтобы избежать необходимости выполнять запрос с 9 объединениями. Когда пользователь выходит из системы, записи, созданные им в JsonUserCache, удаляются.

Таблица JsonUserCache - это SQL Server. Я мог бы просто оставить все как есть, но мне интересно, есть ли лучший способ. Я думаю о создании простого словаря, который будет хранить ключ / значения и помещать этот словарь в AppFabric. Я также рассматриваю возможность использования провайдера NoSQL, и если есть возможность для Azure, или я должен просто придерживаться словаря в AppFabric. Или есть другая альтернатива?

Спасибо за ваши предложения.

1 Ответ

1 голос
/ 21 марта 2012

"В компьютерных науках есть только две серьезные проблемы: аннулирование кэша и присвоение имен."

Фил Карлтон

Вы явно говорите о кеше, и в качестве общего принципа не следует сохранять какие-либо кэшированные данные (в SQL или где-либо еще), поскольку у вас есть проблема с истечением срока действия кэша и необходимостью удаления (как в настоящее время). ). Если вы настаиваете на хранении своего результата где-то и не возражаете против его последующей очистки, тогда посмотрите, как поместить его в BLOB-объект Azure - он легко доступен из браузера и не требует обработки запроса вашим собственным приложением.

Чтобы реализовать его в качестве традиционного кэша, посмотрите на эти опции.

  1. Используйте готовое кеширование ASP.NET, где вы кэшируете в памяти веб-роль. Это означает, что ваше объединение будет повторяться при каждом посещении пользователем, но в зависимости от количества экземпляров и продолжительности среднего сеанса может быть проще всего реализовать.
  2. Используйте AppFabric Cache. Это дополнительный API для изучения и имеет дополнительные расходы, которые могут быть довольно высокими, если у вас много уникальных посетителей.
  3. Используйте специализированный распределенный кеш, такой как Memcached. Это приводит к дополнительным затратам / хлопотам необходимости запускать все это самостоятельно, но дает вам большую гибкость в долгосрочной перспективе.

Редактировать: Все на основе ОЗУ. Использование кэширования ASP.NET проще в реализации и позволяет быстрее извлекать данные из кэша, поскольку он находится на одном компьютере - НО требует, чтобы кэш заполнялся для каждого экземпляра веб-роли (т. Е. Он не распределен). Кэширование AppFabric распределено, но также немного медленнее (задержка в сети), и, в зависимости от того, что вы подразумеваете под масштабируемостью, кеширование AppFabric в настоящее время ведет себя несколько хаотично в масштабе - поэтому убедитесь, что вы запускаете тесты. Если вы хотите масштабируемое, многофункциональное распределенное кэширование, и оно является важной частью вашего приложения, перейдите и вставьте Memcached.

...