Синхронизация с базой данных - PullRequest
2 голосов
/ 30 сентября 2008

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

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

Кажется, наш менеджер не против того, чтобы мы опрашивали базу данных. Количество данных невелико (менее 100 записей) и интервал велик (1 мин), но я кодер. Я делаю. Есть ли лучший способ выполнить задачу, чтобы данные в памяти были максимально синхронизированы с данными в базе данных? Система разработана с использованием C # 3.5.

Ответы [ 6 ]

2 голосов
/ 30 сентября 2008

Поскольку вы используете SQL2005, вы можете использовать SqlDependency , чтобы получать уведомления об изменениях. Обратите внимание, что вы можете использовать его довольно легко с System.Web.Caching.Cache , который, несмотря на то, что его пространство имен работает , прекрасно работает в приложении WinForms .

2 голосов
/ 30 сентября 2008

Первое, что пришло в голову, - это триггер в сочетании с очередью сообщений.

1 голос
/ 30 сентября 2008

Службы SQL Notification Services позволят вам осуществлять обратный вызов базы данных в приложение, основанное на нескольких протоколах. Один из способов реализации заключается в том, чтобы служба уведомлений создала (или изменила) файл в доступном сетевом ресурсе и чтобы ваше настольное приложение реагировало с помощью FileSystemWatcher.

Более подробную информацию об услугах оповещения можно найти по адресу: http://technet.microsoft.com/en-us/library/aa226909(SQL.80).aspx

Обратите внимание, что это может быть кувалдой подход к проблеме типа ореха.

1 голос
/ 30 сентября 2008

Возможно, это излишне для вашей ситуации, но может быть интересно взглянуть на Microsoft Sync Framework

0 голосов
/ 30 сентября 2008

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

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