Russian Qt Forum
Ноябрь 23, 2024, 00:22
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Синхронизация баз данных
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Синхронизация баз данных (Прочитано 15143 раз)
Karl-Philipp
Гость
Синхронизация баз данных
«
:
Сентябрь 03, 2009, 21:44 »
Изменения в БД магазина доложны анализироваться на удалённом компьютере. Для этого на удалённом компьютере создаётся аналогичная база, куда будут передаваться изменения (в виде запросов) каждые 2-10 минут для синхронизации и последующего анализа.
Основная цель темы - обеспечить самую быструю и надёжную передачу данных (запросов) на удалённый компьютер.
Вопросы:
1) как лучше передавать запросы между БД магазина и удалённым компьютером? Ответ: Почитал про сокеты, потом про
QNetworkAccessManager
, вроде бы подходят, а что лучше (быстрее, надёжнее)?
2) как передавать данные? Нашёл такую вещь как
QByteArray
, тоже вроде бы подходит.
upd: удалённый компьютер, на котором анализируются данные находится от магазина (ов) на расстоянии от нескольких километров до двух тысяч километров.
«
Последнее редактирование: Сентябрь 03, 2009, 22:30 от terlan
»
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: Синхронизация баз данных
«
Ответ #1 :
Сентябрь 04, 2009, 07:53 »
Недавно занимался похожей темой, посмотри в сторону SOAP довольно токи удобная весчь. и у КуТе классы для работы с ним есть
http://doc.trolltech.com/solutions/3/qtsoap/qtsoap-overview.html
.
Записан
Karl-Philipp
Гость
Re: Синхронизация баз данных
«
Ответ #2 :
Сентябрь 04, 2009, 08:15 »
ecspertiza!
похоже, то, что надо. Спасибо большое
Записан
UVV
Гость
Re: Синхронизация баз данных
«
Ответ #3 :
Сентябрь 04, 2009, 08:38 »
Ice ?
Записан
Karl-Philipp
Гость
Re: Синхронизация баз данных
«
Ответ #4 :
Сентябрь 04, 2009, 09:25 »
Ice использует бинарный протокол передачи данный, и это действительно айс(уж куда пошустрее будет XML в SOAP).
Но не айс то, что технология распространяется под двойной лицензией: GNU GPL или коммерческой. Покупать возможности нет, а вот закрыть код надо.
Хотя программа будет использоваться фактически внутри фирмы. Вот тут то возникают вопросы... по поводу закрытия кода. Можно ли?
Записан
Karl-Philipp
Гость
Re: Синхронизация баз данных
«
Ответ #5 :
Сентябрь 04, 2009, 09:58 »
только вот незадача то:
мне же надо передать всего ничего - одну строчку(запрос). Правда в случае разрыва соединения, когда оно восстановится придется передавать десятки, возможно тысячи строчек. Хотя это не меняет сути темы.
Может все-таки QTcpSocket + QDataStream
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: Синхронизация баз данных
«
Ответ #6 :
Сентябрь 04, 2009, 11:16 »
Если чесно я пока не знаю что ты выбрал SOAP или Ice или что то ещё, но могу сказать про SOAP то что ты в неё можешь передавать не строчку запроса а данные из таблицы которые необходимо синхронизировать и генерить запрос на лету при приёме данных, Soap имеет замечательную особенность у него данные либо дошли либо нет. А в клиентской части пишешь грамотный парсинг и в общем то всё, там уже будет всё равно сколько строчек пришло.
Записан
UVV
Гость
Re: Синхронизация баз данных
«
Ответ #7 :
Сентябрь 04, 2009, 12:34 »
Цитата: terlan от Сентябрь 04, 2009, 09:25
Вот тут то возникают вопросы... по поводу закрытия кода. Можно ли?
Небольшое непонимание лицензии GPL. Если ты пишешь для своей организации и не собираешься продавать приложение кому-либо другому, то ты ничего не нарушаешь. Правда в случае Ice, у тебя структура системы должна измениться =)
Насчёт гарантии доставки, я пока не понял, как Ice себя ведёт в случае разрыва связи... т.е. как её грамотно восстановить =)
http://www.zeroc.com/faq/connectionClosureCallback.html
Записан
Karl-Philipp
Гость
Re: Синхронизация баз данных
«
Ответ #8 :
Сентябрь 04, 2009, 14:12 »
>>Правда в случае Ice, у тебя структура системы должна измениться =)
а можно по-подробнее, пожалуйста. Как это она должна измениться?
Записан
MrLink
Гость
Re: Синхронизация баз данных
«
Ответ #9 :
Май 21, 2010, 11:52 »
Я конечно не спец по синхронизациям БД. Но этот вопрос изучал, и кое-что делал. У меня возникли вопросы: как Вы намереваетесь обрабатывать ошибочные ситуации? Например, обрыв связи во время передачи или отключение интернета на длительное время, а также, возможное, дублирование записей (насколько я помню, это называется коллизией) и т.д. и т.п. Вообщем как будет обеспечиваться надёжность?
Записан
crossly
Гость
Re: Синхронизация баз данных
«
Ответ #10 :
Май 21, 2010, 14:07 »
какая БД используется??
Записан
Karl-Philipp
Гость
Re: Синхронизация баз данных
«
Ответ #11 :
Май 21, 2010, 14:25 »
Цитата: MrLink от Май 21, 2010, 11:52
Я конечно не спец по синхронизациям БД. Но этот вопрос изучал, и кое-что делал. У меня возникли вопросы: как Вы намереваетесь обрабатывать ошибочные ситуации? Например, обрыв связи во время передачи или отключение интернета на длительное время, а также, возможное, дублирование записей (насколько я помню, это называется коллизией) и т.д. и т.п. Вообщем как будет обеспечиваться надёжность?
Подобные вопросы возникали и у меня. Только вот проект заморозился.
Планировалось использовать Mysql.
Записан
crossly
Гость
Re: Синхронизация баз данных
«
Ответ #12 :
Май 21, 2010, 15:08 »
может стоит задуматся о нормальной СУБД с поддержкой репликаций...
Записан
ритт
Гость
Re: Синхронизация баз данных
«
Ответ #13 :
Май 21, 2010, 15:48 »
сомневаюсь, что заказчик согласится на переход на другую субд...
посмотри google protobuf. оно, конечно, далеко от совершенства, но по возможностям сильно обходит soap
Записан
Karl-Philipp
Гость
Re: Синхронизация баз данных
«
Ответ #14 :
Май 21, 2010, 15:51 »
да,да, мы уже говорили об protobuf, тогда они еще назывались, вроде бы google protocols
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...