MySQL Из базы данных клиенту дать сигнал на выборку16.08.2017, 21:39. Показов 3034. Ответов 23
Метки нет (Все метки)
Добрый вечер!
Интересует вопрос! Собственно пишу некий софт для работы с базой данных. Программа не имеет GUI ни console следовательно нет кнопки Refrach Возможно ли реализовать, что допустим при инсерте в базу данных на другом конце города, произошло некое событие, и база данных обратилась к конкретному клиенту, или может даже ко всем, количество клиентов может достигнуть более 100 000. Примерно рисую картину.
Delphi. компоненты FireDac Есть компонент FDEventAlerter
0
|
|
| 16.08.2017, 21:39 | |
|
Ответы с готовыми решениями:
23
Организовать выборку из базы данных Функция не возвращает выборку из базы данных |
| 16.08.2017, 23:18 [ТС] | ||
|
Здесь подразумевается что, существует таблица ,а в ней около 100 000 тыс. записей (потенциальных клиентов) с некой информацией
0
|
||
|
|
|
| 16.08.2017, 23:22 | |
|
100000 клиентов - это 100000 подключений к БД
а то что вы имеете в виду, это просто количество записей в таблице там и несколько миллионов вполне терпимо... программа ни UI ни console это сервис? что бы сразу не озвучить это? что означает "база обратилась к клиенту"? клиент это тоже ваша программа? Она все время запущена?
0
|
|
| 16.08.2017, 23:43 [ТС] | ||||||||||||||
|
Каждая запись, один клиент и каждый клиент должен прочитать свою строку в базе данных
Добавлено через 9 минут Это чистая
Она обращается в базу данных уже зная точно куда ей обращаться. И тут я подумал что если каждый из клиентов каждые допустим 10 сек будут лезть за своей информацией это даст костылем по жопе мне. Будет некая админка, тоже клиент но только с GUI. Я выбираю любого клиента и ставлю флаг ("1" читать) в базе данных срабатывает триггер на изменение и отсылает оповещение конкретному клиенту или даже всем что бы они выполнили селекты. Что бы не молотить трафик зря (каждые 10 сек проверять флаг ) Добавлено через 1 минуту Добавлено через 1 минуту Цифра 100 000 абстрактно Добавлено через 5 минут В программе вечный цикл
Но если 100 000 селектов хаотично с разных компьютеров не нагрузка то скорее все пока это решение оптимально, интервал можно даже увеличить, это не критично. Хотя как на это будет смотреть сторонний сервер. Добавлено через 3 минуты Да, только не подумайте, это не какой не хакерский софт, как может показаться. Это вполне легально. Я бы рассказал для чего софт, но заказчик против афиширования.
0
|
||||||||||||||
|
|
|
| 16.08.2017, 23:59 | |
|
то-есть все-таки консоль )
если 100000 каждый лезет раз в 10 сек то это 10000 в секунду какой сервер выдержит такую нагрузку, интересно? при этом он должен обратиться к БД, что-то там выбрать и отдать клиенту. количество подключений к компьютеру не бесконечно количество подключений к БД еще того меньше все по очереди - это даже если 50 мсек на клиента, то в секунду смогут получить данные только 200 клиентов. вот собсно и предел вашей мегаустановки именно поэтому большие системы требуют большой архитектуры и тут будет важен каждый нюанс в данном случае гораздо выигрышнее выглядит вариант с long-poll http запросами. В гугле довольно понятно. Архитектура клиент сервер ну никак не подходит для нормальной работы с сотнями юзеров через интернет.
0
|
|
| 17.08.2017, 00:39 [ТС] | |
|
krapotkin, а возможно такое что каждый из клиентов будет выступать в роли сервера? (то есть в какую строну рыть что бы клиент стал сервером и слушал порт)
Допустим при запуске программа единожды добавляет в базу данных Внешний IP, а админка в свою очередь видит эти ip и оператор сам решает кому послать сигнал для выполнения селекта.
0
|
|
|
|
|
| 17.08.2017, 07:25 | |
|
для произведения любой работы нужен механизм
механизм 24/7 подключения к базе в вашем случае явно не подходит и как вы представляете флуд с одного компьютера на 10000 клиентов, если они сервера? попробуйте сделать 10000 вызовов Get из своего приложения на 10000 адресов по сути это будет то же самое, что вы хотите сделать вспомните, в каких программах вы видели мгновенные оповещения? только в мессенджерах и в браузере и они все используют большие распределенные архитектуры для этого иначе бы вы точно слышали о примерах, выполненных на делфи))) еще раз. ваше решение - это веб сервер. вот его вы можете писать даже на делфи но чаще берут готовые Apache или NGINX и прикручивают к ним скрипты Клиент-сервер это решение для исключительно локальных сетей и макс 50-100 клиентов Есть замечательные решения готовых back-end серверов типа Microsoft Azure, Amazon AWS, Google Firebase есть куча местных типа Scorocode.ru вам остается только сохранять/считывать данные оттуда через API и у вас в комплекте будет и управление пользователями и пуш уведомления и много всего.
0
|
|
| 18.08.2017, 07:29 | |||||||||||||||||||||||||||||
|
да не будет ТС заморачиваться с вебсервером пока не увидит проблем
с кодом нужно подчистить
1. обработки ошибок нет 2. транзакций нет 3. запросы написаны в делфи индексы хоть в БД есть?
0
|
|||||||||||||||||||||||||||||
| 18.08.2017, 10:03 [ТС] | |||||||
|
Добавлено через 3 минуты 10 полей и я буду оптимизировать что бы в место 10 итераций была одна? А если поля в базе данный переставить то что тогда?
0
|
|||||||
| 18.08.2017, 10:25 | ||||||
|
как поля в базе располагаются значения не имеет, ты обрабатываешь SELECT - не меняй в нем поля и все. ты видно не понимаешь что будет когда 1000 пользователей скажет твоей базе выполнить один и тот же запрос ))тут тебе и транзакции понадобятся и обработка ошибок и индексы в бд
0
|
||||||
| 18.08.2017, 10:31 [ТС] | |||
|
Вы хотите сказать что это экономичней чем стандартный запрос? Добавлено через 2 минуты Я так понимаю что нужно блокировать таблицу во время запрос?
0
|
|||
|
|
|
| 18.08.2017, 11:01 | |
|
нет, но в двух словах тут нет смысла объяснять. нужно читать документацию по конкретному серверу
транзакции они просто есть а если вы их не назначаете явно, они не очень эффективно, но назначаются вам сами то же про индексы про запросы и ХП не согласен. всегда нужно смотреть конкретику
0
|
|
| 18.08.2017, 12:50 [ТС] | ||
|
Мы по моему отдаляемся от темы. На вкладке есть компонент FDEventAlerter в виде "конверта" . Интересно его предназначение. Интуитивно похож на некий информирующий, событийный компонент. Может он приоткроет занавес?
0
|
||
| 18.08.2017, 12:54 [ТС] | |
|
0
|
|
| 18.08.2017, 12:56 | |
|
0
|
|
| 18.08.2017, 13:06 [ТС] | |||||||||||
|
qwertehok, круть несусветная?
Добавлено через 23 секунды Это то про что я подумал? Добавлено через 3 минуты Кликните здесь для просмотра всего текста
СУБД оповещения ссылается на уведомление, базы данных или уведомления, отправленные триггером базы данных или хранимой процедуры с целью уведомления клиента в базе данных о каких-то событиях на стороне базы данных.
Предупреждение идентифицируется по имени и может содержать дополнительные аргументы. Клиенты регистрируются с предупреждениями. Несколько клиентов могут зарегистрироваться с одного оповещения, и один клиент может зарегистрировать несколько предупреждений. Когда тревога сигнализируется в базе данных, все зарегистрированные клиенты будут уведомлены об этом. Когда тревога не используется, приложение нерегистрирует от этого оповещения. Классические примеры оповещения: Таблица изменений данных. В данном случае, приложение обновляет набор данных возвращать таблицу данных. Уведомление о какое-либо условие данных выполняются. Уведомление для других приложений, что конкретной приложений будет выполнить некоторые специальные задачи, такие как архивирование данных или резервного копирования. Каждая СУБД реализует СУБД оповещения о своих собственных. Нет стандартных механизмов для предупреждения. Добавлено через 1 минуту Теперь ВНИМАНИЕ! Вопрос. Триггер для послыки уведомления? Как? Добавлено через 1 минуту
Наверное это ответ? Добавлено через 1 минуту В интернете об этом мало пишут. Это может быть как допустим, для обмена сообщениями межу мессенджерами?
0
|
|||||||||||
| 18.08.2017, 14:08 [ТС] | ||
Добавлено через 12 минут Вот только про MySQL не слова в примерах про триггеры, с событиями (( Добавлено через 30 минут В общем, нашел ответ Я MySQL capability Is not supported!
0
|
||
| 18.08.2017, 14:08 | |
|
Помогаю со студенческими работами здесь
20
Необходимо сделать выборку из базы данных Запрос на выборку из модуля базы данных Создание базы данных со связями и запросы на выборку БД и sql - составить запрос на выборку данных из базы Как сделать правильно выборку из базы данных? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит:
токи, напряжения и их 1 и 2 производные при t = 0;. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|