|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Сначала тезисно пройдусь по ТЗ: 1) ПО торгово-производственное, предполагается участие в репликации, в основном, не более 10-ти машин, за редким исключением - максимум нескольких десятков машин. Типичная конфигурация: две независимые точки, на одной 3-5 машин в локальной сети, на другой 3-5 машин операторов. 2) Базы все FB 2.5 (хотя возможен переход на тройку). 3) Репликация планируется асинхронная, через существенные промежутки времени (раз в 30-60 мин, например, в основном, обмен заказами). 4) Обмен через FTP-папку, xml-файлами, в которых содержатся "пакеты изменений". Выгружаются две сущности: справочники и заказы. 5) Все изменения записей будут отслеживаться в триггерах и вноситься в таблицу выгрузки. 5) Репликация Master-Master. 6) Дабы минимизировать конфликтные ситуации и обеспечить ссылочную целостность - физически данные не удаляются ни в одной таблице. Только скрытие, по boolean-полю DELETED. 7) Заказы, созданные на "другой" торговой точке не подлежат редактированию. Только "свои". Теперь подробнее. Схема Master-Master предполагает ряд тонких моментов, самый очевидный из которых - как быть с генераторами? Предполагаю так: в отношении справочников - генераторы должны быть разумеется идентичны на всех машинах, участвующих в репликации. Что же до заказов - то тут генераторы на каждой машине свои конечно, однако чтобы был порядок, и в плане визуального восприятия заказов, и в отчетах\анализе - используются уникальные для каждой торговой точки integer-идентификаторы. Далее, что сделать, чтобы одновременные изменения в справочниках на разных машинах не повлекли конфликты? Тут вижу такое решение - монопольный доступ. Причем, прежде чем редактировать любой справочник, ПО должно обратиться к серверу (лучше реализовать через HTTP-REST-запрос? или можно также по ftp?) на получение состояния некоего флажка блокировки редакции справочников. Если он (флаг) установлен и известно кем - значит всем остальных доступ на редакцию сейчас запрещен. Соответственно, тот кто этот флаг возвел, он же его и снимает после завершения редактирования справочников. Финализация этого процесса предполагает выгрузку файла с изменениями и снятие флажка. Решение выглядит негибким, однако для данной задачи, возможно, вполне подходит, поскольку попытка одновременной редакции справочников будет крайне редким явлением. Поскольку новичок в теме, прошу совета отцов. Что упустил, что посоветуете... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2017, 14:05 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
SoftologicСхема Master-Master предполагает ряд тонких моментов, самый очевидный из которых - как быть с генераторами? В свете п.7 все ключи делаются составными: локальный генератор + идентификатор точки. Для таблиц, не подпадающих под п.7, я рекомендую не мелочиться и использовать UUID в качестве PK. Softologic что сделать, чтобы одновременные изменения в справочниках на разных машинах не повлекли конфликты? Или тот же п.7, или просто забей: когда ситуация неоднозначна на уровне бизнесс-процесса, техническими средствами её решать бесполезно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2017, 14:14 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Softologicфизически данные не удаляются ни в одной таблице. Только скрытие, по boolean-полю DELETED. 7) Заказы, созданные на "другой" торговой точке не подлежат редактированию. Только "свои". Теперь подробнее. Схема Master-Master предполагает ряд тонких моментов, самый очевидный из которых - как быть с генераторами?Это мне не нравится. Менять ту же запись с обеих сторон. А коллизии другими, административными, логическими методами разруливать. С генераторами я лично поступаю так: ПК из 2-х полей: DB_ID+RECORD_ID. Для центральной базы. Если все базы одинаковые и центра не будет - другой подход нужен. Диапазоны генераторов нужны. "упрощенного" подхода не подучится в любом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2017, 14:15 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Softologicпопытка одновременной редакции справочников будет крайне редким явлением. А должна быть абсолютно невозможной. Но я поясню почему в реальном мире на неё можно забить: вот есть в справочнике "Иванов", на точке один решили "это не Иванов, а Петров" и отредактировали справочник, а на точке два в то же самое время решили "это не Иванов, а Сидоров" и тоже отредактировали. В результате после репликации обнаружится бардак в бизнесс-процессах и заинтересованные стороны созвонятся и договорятся - "Петров или Сидоров" и кто виноват в неправильном редактировании. Со стороны программы никаких специальных действий для этого не требуется, кроме ведения лога "когда, кто, что и на что поменял" чтобы можно было устроить разбор полётов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2017, 14:22 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Softologic4) Обмен через FTP-папку, xml-файлами, в которых содержатся "пакеты изменений". Выгружаются две сущности: справочники и заказы.Какая-то лишняя сущность. Диапазоны идентификаторов в ИНТ64, ГУИД по вкусу. Купи готовый репликатор, это заметно дешевле разработки своего. Там просто море сельхозинвентаря припрятано. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2017, 17:36 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Ivan_PisarevskySoftologic4) Обмен через FTP-папку, xml-файлами, в которых содержатся "пакеты изменений". Выгружаются две сущности: справочники и заказы.Какая-то лишняя сущность. Диапазоны идентификаторов в ИНТ64, ГУИД по вкусу. Купи готовый репликатор, это заметно дешевле разработки своего. Там просто море сельхозинвентаря припрятано. Не совсем понял почему лишняя... И где продают дешевые репликаторы для тиражируемого софта с неограниченным числом лицензий? IBReplicator что то совсем недешев: https://www.ibphoenix.com/shop/category/2 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2017, 19:24 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
ftp и xml лишние. ну по крайней мере мы не используем. парсить xml в поллямя строк то еще удовольствие. а вот если заготовить сразу пачку стейтметов ничего парсить не потребуется. у нас репликатор сам обменивается через сокеты запакованными пачками, фтп не нужен. насчет ибрепликатора спроси прямо у Сибирякова, он же тут, никуда не делся. насчет дорого дешево... как только сунешься писать всплывет много чего.... сгенерировать триггеры, написать мониторинг, то ли граф оболочку, то ли веб мордашку и тд. и тп. У нас репликатор свой, затачавали по себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 11:43 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyпарсить xml в поллямя строк то еще удовольствие. а вот если заготовить сразу пачку стейтметов ничего парсить не потребуетсяСтейтменты - тоже не самый быстрый вариант. У нас в бинарном формате список данных полей передается, которые в параметры хранимок присваиваются, которые вместе с триггерами создаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 13:41 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyftp и xml лишние. ну по крайней мере мы не используем. парсить xml в поллямя строк то еще удовольствие. а вот если заготовить сразу пачку стейтметов ничего парсить не потребуется. у нас репликатор сам обменивается через сокеты запакованными пачками, фтп не нужен. насчет ибрепликатора спроси прямо у Сибирякова, он же тут, никуда не делся. насчет дорого дешево... как только сунешься писать всплывет много чего.... сгенерировать триггеры, написать мониторинг, то ли граф оболочку, то ли веб мордашку и тд. и тп. У нас репликатор свой, затачавали по себя. Ну ок, понял как без xml, со стейтментами... даже в принципе, с бинарниками понимаю, как YuRock предлагает. Но не понял как без ftp обойтись? Базы же географически раскиданы, обмен то в любом случае через интернет делать. Писать в MySQL-базу на сайте через php-запросы чтоль? Или новомодные яндекс-диски, гугл-драйвы использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 14:01 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
SoftologicНо не понял как без ftp обойтись? VPN + прямое подключение, например. На ваших объёмах должно хватить. VPN + SMB тоже неплохой вариант. FTP имеет проблему с атомарностью передачи, её надо будет обеспечивать дополнительными средствами. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 14:12 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Softologic, ну вариантов много. Например написать на php мини-сервис который принимает json на входе и вносит изменения по этому json в нужные таблицы. В общем-то как именно забрасывать изменения в БД не так уж важно ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 14:12 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
SoftologicНо не понял как без ftp обойтисьКак физический уровень обмена организован будет - другая задача. Как хочешь - так и делай. Хочешь - фтп. Но и неплохо было бы, чтобы была возможность передачи пакетов "онлайн" - на свой сервер, который сразу же их и в базу обрабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 14:14 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Ок, спасибо большое всем за помощь! Тогда такой вопрос - вообще какой ценник у такого рода задачи? Понимаю, что вопрос риторический, все по разному себя оценивают, однако все же... быть может есть некая минимальная оценка? Кто за сколько бы взялся? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 15:33 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
SoftologicКто за сколько бы взялся?Уже говорил. Это не простая задача. Да еще и начать нужно с написания и согласования ТЗ. В итоге - будут месяцы работы (квалифицированного программиста, высокооплачиваемого), потом поддержка. Не знаю, сколько стоят готовые решения, но очень вероятно, что дешевле. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 15:39 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
YuRockУже говорил. Это не простая задача. Да еще и начать нужно с написания и согласования ТЗ. В итоге - будут месяцы работы (квалифицированного программиста, высокооплачиваемого), потом поддержка. Не знаю, сколько стоят готовые решения, но очень вероятно, что дешевле. Про непростоту задачи я понимал с самого начала, и что готовые решения дешевле тоже. Хотя, повторюсь - для тиражируемого ПО с неограниченным числом лицензий... Это большой вопрос. И готовое может потянуть тыщ на 5 евро в год, как HQBird в Enterprise-редакции со встроенным репликатором. Таки может кто минимальную планку назвал бы примерную, а? Для ориентиру... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 16:31 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSoftologicНо не понял как без ftp обойтись? VPN + прямое подключение, например. На ваших объёмах должно хватить. VPN + SMB тоже неплохой вариант. FTP имеет проблему с атомарностью передачи, её надо будет обеспечивать дополнительными средствами. Да, VPN + прямое подключение, вероятно, оптимальный вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 16:38 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
SoftologicYuRockУже говорил. Это не простая задача. Да еще и начать нужно с написания и согласования ТЗ. В итоге - будут месяцы работы (квалифицированного программиста, высокооплачиваемого), потом поддержка. Не знаю, сколько стоят готовые решения, но очень вероятно, что дешевле. Про непростоту задачи я понимал с самого начала, и что готовые решения дешевле тоже. Хотя, повторюсь - для тиражируемого ПО с неограниченным числом лицензий... Это большой вопрос. И готовое может потянуть тыщ на 5 евро в год, как HQBird в Enterprise-редакции со встроенным репликатором. Таки может кто минимальную планку назвал бы примерную, а? Для ориентиру... Готовое отлаженное решение гарантированно дешевле заказного. Я бы взялся за такую работу. На постоянной основе, сидел бы да пилил. Сперва бы ТЗ добили, потом модель построили, макет сети создали. Пакет тестов бы написали, исходя из требований... Отладили бы вопросы коллизий, сервисы вспомогательные создали. Написание документации, поддержка оной в актуальном состоянии. Прикладной API, сервиснный API, работа с серверами разных типов. Работа в разных версиях ОС и вообще в разных ОС. Поддержка линий связи низкого качества. По мере уточнения ТЗ запускали бы новые итерации... ... Красота. Как в оборонных НИИ времён СССР. Только без диссертаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 16:58 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
SoftologicТаки может кто минимальную планку назвал бы примерную, а? Для ориентиру...Ну, пожалуйста. Если какой-то нищеброд типа меня согласится сделать тебе репликатор (свой адаптировать к твоей системе), это будет пару десятков килобаксов стоить. Ориентировочно, а так будет ++. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 16:59 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
YuRockSoftologicТаки может кто минимальную планку назвал бы примерную, а? Для ориентиру...Ну, пожалуйста. Если какой-то нищеброд типа меня согласится сделать тебе репликатор (свой адаптировать к твоей системе), это будет пару десятков килобаксов стоить. Ориентировочно, а так будет ++. То есть от миллиона рублей так очень примерно. И это нищебродская оценка, я полагаю ?:) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 17:14 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
SoftologicYuRockпропущено... Ну, пожалуйста. Если какой-то нищеброд типа меня согласится сделать тебе репликатор (свой адаптировать к твоей системе), это будет пару десятков килобаксов стоить. Ориентировочно, а так будет ++. То есть от миллиона рублей так очень примерно. И это нищебродская оценка, я полагаю ?:)1. Я не в курсе курса рубля. 2. Это просто порядок. Сумма может возрасти в несколько раз. Все зависит от результатов работы над ТЗ. Которая тоже не бесплатна. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 17:24 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
У нас по сути все есть, только адаптировать под тираж, черкни письмо, перешлю автору нашего репликатора. Бюджет какой? SoftologicНо не понял как без ftp обойтись?участники обмена видят друг друга поверх ВПН и обмениваются через TCP сокет зипованными пакетами. SoftologicПисать в MySQL-базу на сайте через php-запросы чтоль? Или новомодные яндекс-диски, гугл-драйвы использовать?Мы ж не изверги какие. :) Только ФБ, сишные линуксовые программки и виндовая гуевая обертка с мониторингом, построителем триггеров. Да вот только виндовой серверной части нету, но скомпилить под винды при наличии исходников, пожалуй не является неразрешимой задачей, просто винда и сервер как-то у меня не стыкуются в кучу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 17:49 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Чую, нарисовывается тендер. Время, которое у нас есть, - это деньги, которых у нас нет. (c) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 17:56 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамЧую, нарисовывается тендер. Похоже обламаю всех сейчас :) Проект-долгострой. Делается по-дружески практически. Поэтому термин "бюджет" не совсем уместен. Собственно, поэтому и спрашивал советов, как бы самому научиться то полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 18:06 |
|
Упрощенная самодельная Firebird-репликация
|
|||
---|---|---|---|
#18+
Softologic> Проект-долгострой. Делается по-дружески практически. Ох и нахлебаешься потом "благодарности" да хлопот... > Собственно, поэтому и спрашивал советов, как бы самому научиться то полезно. Тут доморощенных репликато-делов хватает - появятся вопросы - спрашивай, тебе и про триггера, и про ГУИДы, и про транзакции и про всё остальное расскажут. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2017, 18:12 |
|
|
start [/forum/topic.php?fid=40&msg=39555726&tid=1561327]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 176ms |
0 / 0 |