-
01.04.2009, 22:50 #46
- Регистрация
- 12.03.2007
- Адрес
- Грац, Австрия - Санкт-Петербург, Россия
- Возраст
- 60
- Сообщений
- 1,749
- Поблагодарили
- 375
- Поблагодарил
- 160
Работать будет и такой способ синхронизации на lock identity в базе. Но с двумя оговорками: а) в случае потери соединения по сокету - rollback в базе и номер возвращается. Нужен механизм на триггерах, убирающий "дырки" в ней; б) резервирование номера в базе, не есть его commit. В любом случае сначала по insert создается новая пустая строка в базе. При этом identity не увеличена ещё. Когда будет произведена запись в таблицы, произойдет инкремент. И если пользователь нажал escape или ошибка записи - имеем inconsistence. Решаемо конечно всё.
73! Михаил (OE6MAF) :: HB9/OE6MAF, DL/OE6MAF
-
01.04.2009, 22:54 #47
- Регистрация
- 20.04.2005
- Адрес
- Оренбург, Россия
- Возраст
- 59
- Сообщений
- 3,390
- Поблагодарили
- 614
- Поблагодарил
- 119
Забыл добавить, N1MM таки делает бекапы лога во время теста, они кладутся в каталог программы но в каком-то другом формате, как с ними работать я не знаю, поскольку пользоваться этой функциональностью не приходилось. Но даже при полном падении базы лог можно оперативно восстановить. Опен-сорс рулит
73 ... R8TX :: Skype: rx9tx_ :: http://r8tx.qrz.ru
-
01.04.2009, 22:56 #48
- Регистрация
- 12.03.2007
- Адрес
- Грац, Австрия - Санкт-Петербург, Россия
- Возраст
- 60
- Сообщений
- 1,749
- Поблагодарили
- 375
- Поблагодарил
- 160
Асхат, в том-то и суть, что в случае P2P номер не повисает, так как каждый клиент связан также и другим клиентом. И мультовое место просто отдаст номер напрямую на рабочее место. А потом уже номер с commit transaction летит в базу. Но реализовать P2P на базе Линукса - дело тяжкое. На мелкомягких это решается, средства есть, мы тестировали в универе - работает.
73! Михаил (OE6MAF) :: HB9/OE6MAF, DL/OE6MAF
-
01.04.2009, 22:57 #49
- Регистрация
- 18.09.2007
- Адрес
- Нальчик, Кабардино-Балкария
- Возраст
- 44
- Сообщений
- 1,223
- Поблагодарили
- 209
- Поблагодарил
- 112
2 RX1AL
При чем тут блокировка записей, если их физически еще нет?
QSO не состоялось еще. Post не было.
А если делать резервирование но с транзакцией, то ваши изменения по оной не увидит другой клиент, пока вы не закоммитите транзакцию. И не увидев резерва подумает, что номер надо использовать старый. Тут не в ID дело, а в том, что человеку надо на экране уже видеть номер, который ему надо давать.
ИМХО, средствами базы данных вы это не решите.
Вариант Insert'а с последующим Post'ом и потом Delete в случае неудачи - это как-то через одно место.
Так что, опять же имхо, сторонний мини-сервачок, обеспечивающий ЛОГИЧЕСКОЕ распределение номеров это лучший вариант. Единственный у него минус - это если второй клиент со старшим номеров уже сохранил QSO, а второй завис или еще что-нибудь. Вот в этом случае возможна дырка и забив ее время проведения 2-й связи будет больше чем 1-й. Ну о чем и говорил RX9TX.
-
01.04.2009, 22:58 #50
-
01.04.2009, 23:00 #51
-
01.04.2009, 23:03 #52
- Регистрация
- 12.03.2007
- Адрес
- Грац, Австрия - Санкт-Петербург, Россия
- Возраст
- 60
- Сообщений
- 1,749
- Поблагодарили
- 375
- Поблагодарил
- 160
Теперь понял, о чем вы... При блокировке записи действительно второй клиент ничего не знает до момента коммит.
Ну похоже придется нам реализовывать демона для выдачи номеров и синхронизации их с учетом запросов от рабочих мест. Причем не на уровне транзакций, а транспарентно. Но вот ведь... в P2P вся синхронизация работает автоматически. Сбоев не было.73! Михаил (OE6MAF) :: HB9/OE6MAF, DL/OE6MAF
-
01.04.2009, 23:05 #53
- Регистрация
- 20.04.2005
- Адрес
- Оренбург, Россия
- Возраст
- 59
- Сообщений
- 3,390
- Поблагодарили
- 614
- Поблагодарил
- 119
73 ... R8TX :: Skype: rx9tx_ :: http://r8tx.qrz.ru
-
01.04.2009, 23:06 #54
- Регистрация
- 18.09.2007
- Адрес
- Нальчик, Кабардино-Балкария
- Возраст
- 44
- Сообщений
- 1,223
- Поблагодарили
- 209
- Поблагодарил
- 112
Нет, RX9TX прав.
Все равно идеального варианта когда связи в логе будут идти 1, 2, 3 и т.д. никогда не добиться. Т.к. как уже было в примере QSO с номером 3 уже сохранено, а QSO с номером 2 - еще нет. Вот уже разнобой и от него НИКУДА НЕ ДЕТЬСЯ.
Тут главное - чтобы не было ДУБЛЯЖА связей. Т.е. чтобы у двух клиентов, запустивших программу с пустым логом и нажавшим New QSO изначально на экране были разные номера.
Подсоединился третий, четвертый - и у них опять же другие номера...
Вот что главное.
-
01.04.2009, 23:08 #55
- Регистрация
- 20.04.2005
- Адрес
- Оренбург, Россия
- Возраст
- 59
- Сообщений
- 3,390
- Поблагодарили
- 614
- Поблагодарил
- 119
73 ... R8TX :: Skype: rx9tx_ :: http://r8tx.qrz.ru
-
01.04.2009, 23:09 #56
- Регистрация
- 25.08.2006
- Адрес
- Шадринск, Курганская обл., Россия
- Возраст
- 37
- Сообщений
- 1,866
- Поблагодарили
- 175
- Поблагодарил
- 278
на месте подбора выводим серый номер для самоуспокоения, после ввода позывного он не фиксируется, как только ответили и вписали ответный номер жмем энтер и тут же видим "красный" номер изменился он или нет - зависит от рана, его передаем, при этом задержки рана нет, а для подбора она не критична.
кесли ocj не прошло тут же отдаем номер рану
Добавлено через 2 минуты
Михаил Я все же думал про psp и моно эта такая тонкая шутка...
а сервер просто необходим и будет.Последний раз редактировалось RN9RQ; 01.04.2009 в 23:11. Причина: Добавлено сообщение
Для человека с молотком любая проблема кажется гвоздем.
Слава богу, теперь уже БЫВШИЙ член СРР, 73!
-
01.04.2009, 23:14 #57
- Регистрация
- 18.09.2007
- Адрес
- Нальчик, Кабардино-Балкария
- Возраст
- 44
- Сообщений
- 1,223
- Поблагодарили
- 209
- Поблагодарил
- 112
А насчет архитектуры хранения.
Какие тут могут быть альтернативы базе данных?
А экспортировать можно хоть в кабриллу, хоть в зебриллу - это уже дело десятое.
И Pearl тут каким местом я не пойму.
Тут всего 2 составляющие - база данных и взаимодействие между клиентами или клиентами и сервером по сети, т.е. сокеты. Всё.
-
01.04.2009, 23:14 #58
- Регистрация
- 12.03.2007
- Адрес
- Грац, Австрия - Санкт-Петербург, Россия
- Возраст
- 60
- Сообщений
- 1,749
- Поблагодарили
- 375
- Поблагодарил
- 160
RA6XTD:
А кто нам мешает завести две sequence или autoincrement? Мысль такая: одна контролирует последовательность номеров по логу, а вторая следит за выдачей и "дырками". Тогда проблема упорядочения решается гораздо проще, чем с одним id только для номера. Но в любом случае, пока - это частные вопросы. Нам надо основное решить.
RX9TX:
Асхат, ок, я понял... жду.73! Михаил (OE6MAF) :: HB9/OE6MAF, DL/OE6MAF
-
01.04.2009, 23:18 #59
- Регистрация
- 20.04.2005
- Адрес
- Оренбург, Россия
- Возраст
- 59
- Сообщений
- 3,390
- Поблагодарили
- 614
- Поблагодарил
- 119
Полного решения нет. Допустим у мультового места проблемы с ЩСО, нас плохо слышат и несколько раз переспрашивают номер. Если ран в это время будет лепить одно ЩСО за другим, мультовому месту при каждом переспросе придется отдавать каждый раз новый номер. Нефиг заморачиваться, надо сделать как в N1MM - там просто забили на пропуски и непоследовательность в номерах, за это не наказывают.
73 ... R8TX :: Skype: rx9tx_ :: http://r8tx.qrz.ru
-
01.04.2009, 23:21 #60
Социальные закладки