Мы являемся счастливыми пользователями платформы ASP.NET MVC и SQL Server, которые в настоящее время используют LINQ-to-SQL.Он хорошо отвечает нашим потребностям благодаря приложению, ориентированному на потребителя, с 1,4 миллионами пользователей и более 2 миллионами активных пользователей в месяц.
Нам давно пора начать регистрировать все действия пользователя (просмотры статей, поиски на нашем сайте и т. Д.), И мы пытаемся найти подходящую архитектуру для этого.
Мы бы хотели, чтобы система архивации была собственной сущностью, а не частью основного кластера SQL, в котором хранятся статьи и поисковая система.Нам бы хотелось, чтобы это был собственный кластер SQL, изначально начинающийся с одного поля.
Чтобы упростить задачу, скажем, мы просто хотим регистрировать поисковые запросы, которые эти миллионы пользователей вводят на наш сайт.в течение месяца, и мы хотим сделать это как можно менее интенсивным циклом.
Мои вопросы: (1) Существует ли асинхронный способ выгрузки условий поиска в удаленное поле?Поддерживает ли LINQ асинхронность для этого?
(2). Вы бы порекомендовали создать кэш, состоящий, скажем, из 1000 элементов (userId, searchTerm, date), регистрирующих в кэш-памяти RAM, и затем периодически сбрасывать их в базу данных?Я предполагаю, что этот метод уменьшит количество открытых / закрытых соединений.
Или я думаю об этом совершенно неправильно?Мы хотели бы найти баланс между простотой реализации и надежностью.