![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Не знал, в какой раздел задать вопрос. Пусть будет в этом.
Пишу программу, которая будет удалённо управлять сайтом (т.е. посылать к БД сайта запросы, тем самым, управляя содержимым страничек сайта). Суть в том, что надобно постоянно следить за изменениями БД. Например, когда в некой таблице БД появляется новая строка, приложение должно отреагировать на это сообщением. Есть ли какой-нибудь эвент или как можно реализовать такой мониторинг? Не посылать же каждые пять секунд запросы к БД с целью сканирования всего и вся? ЗЫ. Для коннекта использую ByteFX -------------------- 3 ГОДА НА |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
VisualProgrammerNET, только по таймеру проверять БД. Других путей для MySql нет.
|
|||
|
||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Кошмар...
-------------------- 3 ГОДА НА |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 2 Всего: 87 |
да. придётся сканить. нету, по-моему таких механизьмов.
ну добавь в таблицы поле updated или new будевское - типа флаг. выставь по дефолту его в true и делай выборки каждый раз по нему, затем ставь флаг в false. не надо будет перебирать всё и вся. |
|||
|
||||
| Evghenii |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 25.6.2006 Где: Молдова, Кишинёв Репутация: нет Всего: нет |
А есть какие-нибудь БД где этот механизм реализован? |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 2 Всего: 87 |
Evghenii, не знаю таких...
|
|||
|
||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Ну я и собирался сделать с true/false. Просто я думаю, если по 10 раз в минуту запросы делать, нагрузка на БД большая получится... хотя хз...
-------------------- 3 ГОДА НА |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Evghenii, Sql Server 2005.
Да это фигня для нормальной СУБД. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Есть. В MS SQL Server есть такая штука как trigger - это хранимая процедура, которая автоматически выполняется при обновлении (или создании, или удалении) записи в указанной таблице. -------------------- ![]() |
|||
|
||||
| Evghenii |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 25.6.2006 Где: Молдова, Кишинёв Репутация: нет Всего: нет |
А разве триггер может вызвать событие в программе? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Нет, триггер действует как обычная хранимая процедура. То есть, всю логику обработки события нужно реализовать в виде SQL-операторов. Добавлено @ 21:27 З.Ы. но можно копнуть в сторону Notification Services, встроенных в SQL Server. -------------------- ![]() |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Evghenii, mr.DUDA, цитирую сам себя
Добавлено @ 21:36 В 2000 Notification Services хромые - они внутри себя сами по таймеру проверяют, нет ли изменений |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Значит 2005-й SQL Server, и всё.
-------------------- ![]() |
|||
|
||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Это MS. А я юзаю мускул.
И ещё вопрос почти по теме. Где лучше хранить переменные, содержащие имя сервера, имя юзера, пароль и прочее? В виде локальных переменных? Или где-то отдельно? Просто программа, в перспективе, будет распространяться среди множества пользователей, и не дай бог кто выведает пароль от сервера =) Конечно... можно создать нового пользователя БД... но всё равно, где лучше хранить такие "важные" данные, чтобы люди не прознали? -------------------- 3 ГОДА НА |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Вопрос, конечно, интересный © Обычно эти данные хранятся в конфиге на сервере. Для IIS это web.config, для PHP это обычный заголовочный файл. Так как к этому файлу юзер не имеет доступа, проблема безопасности снимается. Но в данном конкретном случае, когда есть множество приложений, работающих с БД, я бы например добавил прослойку между базой данных и клиентскими приложениями - в виде веб-сервисов. Тогда аутентификация между БД и приложениями напрямую производиться не будет, а только через business layer. И у каждого юзера будет свой логин и пароль, под которыми он будет обращаться к веб-сервису (можно, например, добавить данные аутентификации в каждый веб-метод, или даже написать своё расширение). Логин и пароль можно будет хранить в отдельной таблице БД - логин будет ключом, а пароль будет храниться в захешированном поле (в MySQL даже отдельный тип полей на это есть). -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |