Я работаю над приложением, и мне нужно отслеживать количество просмотров страницы. Почти так же, как это делает SO. Это значение, используемое для определения популярности данной страницы.
Я обеспокоен тем, что запись в БД каждый раз, когда необходимо записать новое представление, повлияет на производительность. Я знаю эту пограничную предварительную оптимизацию, но я уже сталкивался с этой проблемой. В любом случае, значение не обязательно должно быть в реальном времени; это нормально, если он задерживается на 10 минут или около того. Я думал, что кэширование данных и выполнение одной большой записи каждые X минут должно помочь.
Я работаю в Windows Azure, поэтому кэш Appfabric мне доступен. Мой первоначальный план состоял в том, чтобы создать какой-то составной ключ (PostID:UserID) и пометить ключ как «просмотр страницы». Appfabric позволяет получить все ключи по тегу. Таким образом, я мог позволить им накапливаться и выполнять одну массовую вставку в мою таблицу вместо множества мелких операций записи. Таблица выглядит так, но открыта для изменений.
int PageID | guid userID | DateTime ViewTimeStamp
Веб-сайт все равно получит значение из базы данных, запись просто будет отложена, есть ли смысл?
Я только что прочитал, что кэш Windows Azure Appfabric не поддерживает поиск по тегам. , так что это в значительной степени опровергает мою идею.
Мой вопрос в том, как бы вы этого добились? Я новичок в Azure, поэтому я не уверен, какие у меня есть варианты. Есть ли способ использовать кеш без поиска по тегам? Я просто ищу совета о том, как отложить эти записи в SQL.