Здравствуйте, corpse56, Вы писали:
C>Здравствуйте!
C>Задача стоит следующая. Есть порядка 50 толстых клиентов, которые работают с одной и той же базой. Клиенты тормозят из-за того, что каждый объект заново запрашивается из БД.
Нормально спроектированная база выдерживает сотни и тысячи запросов в секунду. Тем более если это одни и те же объекты, то они просто лежат в памяти сервера БД и не запрашиваются с диска.
C>Объекты изменяются, а клиенты должны непременно получать свежую версию. Но так как сейчас кэш у каждого клиента свой, то происходят всякие нежелательные последствия. Нужен как бы единый кэш для всех клиентов. Когда какой-то клиент обновляет объект, то и в кэше его тоже следует обновить, чтобы другие клиенты получали обновлённую версию этого же объекта.
Если вам нужно оповещать клиентов об изменении объектов — возьмите redis, не мучайте базу лишними запросами. А если вам лень этим заниматься, то просто сделайте индекс по дате последнего изменения и получайте из небольшого индекса идентификаторы изменившихся записей.
C>Может быть есть какой-то способ самому это реализовать? Я так понимаю здесь нужно будет веб-приложение, или всё же использовать TCP-протокол для таких задач? C>Наверняка уже существует что-то для такой задачи типа Memcached но под виндоус
Может и есть, но вам он недоступен.