@immelnikoff
Изучаю БД

Как организовать передачу данных с сетевого интерфейса приложению на C++ максимально быстро?

Сейчас данные льются по ODBC в БД, а уже оттуда приложение их читает. Наверняка это не самый быстрый путь доставки данных от сетевого интерфейса приложению.
Насколько приемлема такая схема доставки данных: от сетевого интерфейса приложению, а уже потом, во время простоя, приложение складывает данные в БД? Пользователь этих данных и БД только один - это приложение.
Сколько миллисекунд (интересует оценка порядка) можно таким подходом выиграть?
Насколько распространен такой подход и имеет ли он какое-то свое название?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 4
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Я утверждаю что это самый быстрый способ, но это только гипотеза. Твёрдо может ответить только профайлер. И да! Не занимайтесь предварительной оптимизацией (с)
Ответ написан
А кто льет данные по odbc в БД? Если ваш сервис, и вы можете его изменить, то варианты более быстрого взаимодействия есть. Например, можно использовать разделяемую память (shared memory) или каналы (pipes) для межпроцессного взаимодействия.
Разделяемая память, имхо, будет самым быстрым способом взаимодействия.
Ответ написан
OCTAGRAM
@OCTAGRAM
Redis как раз база данных, умеющая выгружать на диск во время простоя. И вроде бы разделяемую память поддерживает.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Вопрос поставлен неправильно.
Чтоб оптимизировать odbc - надо 100% знать что именно он является узким местом. Я бы начал с анализа исполнения и извлечения данных локально на сервере. ДБА здесь поможет. И если ваша задаче связана с ETL - почитайте про техники. Может экспорт в csv файл с загрузкой в с++ приложение будет быстрее. Может репликация бд или миграция.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы