У меня есть код написан на golang, на другом языке функционал не может быть написан, мне нужно обновлять данные, которые были измененные в бд, но не хочу обращаться данными к бд, я хотел сделать это через socket.io. Но тут проблемы к подключения socket.io, так в golang нету другой библиотеки для этого дела а самому делать это время.
Сам код, в golang парсить транзакции и где надо он обновляет данные, мне нужно получать, потому что в другой части не на golang, они обновлять данные нужно если появился новый клиент и второе если баланс поменялся.
У меня было логика в golang один раз при запуске достает запись, о остальное получает через socket.io.
Вопрос может все таки доставать данные через бд и делать скрипт, обновлять данные из бд каждые 5 секунд или лучше использовать просто websocket без socket.io?
Или может есть другие варианты, как лучше сделать?
Что вообще будет больше накладывать обращение к базе данных или использования сокетов, я думаю обращение к бд более наглядно, тем более можно пропустить данные?
Обыно системы для бизнеса проектируются так чтобы single source of truth (единый источник правды) лежал всегда в базе. Короче должна быть консистентнсоть. Если у вас есть желание где-то срезать поворот или просто придержать данные - то это делать тоже можно. Единственно.. нужно обсудить с бизнесом тот случай когда данные ДОЛЖНЫ были попасть в базу но не попали по причине вашей умной буферизации или оптимизации.
Обновлять каждые 5 секунд одну строчку в базе можно. Базы выдерживают и большее число транзакций в секунуду. Но тут мне кажется важна не частота а скорее полезный эффект. Будет ли полезно такое обновление. И откуда в систме число 5 секунд появилось?
mayton2019, В базе и так лежат данные, но нужно понимать что и эти данные обновляется, данные здесь не придерживается скорее, как вы написали, а идут в память. Здесь говорится не обновления, а получения, мне нужно узнать изменненые данные в бд, а на golang там используется, для других целей
Но смотри есть база данных юзеров, у них может поменяться значения или добавиться новый, я по сути 5 секунд проверяю, а в самом golang там прослущиваю транзакций в блокчейне, и вот ловлю нужные верные мне транзакции и алгоритм там дальше выполняет свою работу
Не до конца понятно из вашего вопроса, что вы ходите сделать и в чем заключается проблема.
1) Насколько я понял есть бекенд на Go и фронт на js, верно?
2) Как писали выше должен быть один источник правды и это БД, кто пишет данные в БД? Бекнед на Go, верно?
3) Если все так как я написал в 1 и 2 пункте то в таком случае напрашивается следующее решение: когда бекенд на Go записывает данные в БД после успешной записи уведомляет каким то образом фронтенд на js
Каким именно образом уведомлять, тут есть варианты, это может быть long polling, websocket или на крайний случай push уведомления в браузер. Лично для себя я бы выбрал websocket
мне нужно обновлять данные, которые были измененные в бд, но не хочу обращаться данными к бд
не хочешь не обращайся дело хозяйское. Все эти базы данных для слабаков, раньше их вообще не было и нормально в космос летали. Даже на Луну слетали на ПО без всякиз баз данных. Храни и обрабатывай прямо в своём приложении. Я почему так говорю, сталкивался с такими решениями.
Ты походу тоже не понял, что я написал. Написал, что изменения бд происходит в одной части кода на js. Но нужно с этими данными измененными в другом коде. А так да, ты написал в принципе тоже решения.