Кэширование и сохранение часто обновляемых данных - PullRequest
0 голосов
/ 23 июня 2010

Я работаю над приложением регистрации данных .NET, которое должно принимать данные от большого числа клиентов и сохранять их в базе данных.

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

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

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

Поэтому мне нужна подходящая структура данных и стратегия для:

  • Создание объекта сеанса при отправке клиентом события запуска
  • Эффективное обновление объектов при получении событий сердцебиения
  • Идентификация сеансов с истекшим временем ожидания и сохранение их в базе данных

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

Имеет ли это смысл или есть лучший подход к проблеме такого рода?

1 Ответ

0 голосов
/ 23 июня 2010

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

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

Конечно, ваш вариант использованиябыть другим.

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