crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Тема закрытаНачать новую тему
> Стратегия сетевого приложения., Помогите определиться, какой путь надежней.
dzyk
  опции профиля:
сообщение 15.9.2008, 0:48
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 13.4.2008
Пользователь №: 148

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 14.9.2008, 23:21) *
Нужно подумать как обойти класс QSQLTableModel


Если унаследовать QSQLTableModel и переопределить setData, в котором создать кэширование запросов.

Неужели нет другого способа?

Цитата(Litkevich Yuriy @ 14.9.2008, 20:08) *
Мой вариант такой - ставим на все тачки Git


Мне кажется, это очень сложно. Git очень серьезная вещь (хотя с ней не знаком, но судя по описаниям). В моем случае это кАщунство.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DmP
  опции профиля:
сообщение 15.9.2008, 3:48
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 61
Регистрация: 11.3.2008
Пользователь №: 116

Спасибо сказали: 15 раз(а)




Репутация:   2  


Цитата(ViGOur @ 14.9.2008, 23:21) *
Неужели нет другого способа?

SQLite поддерживает простые триггеры, поставте перехват на INSERT, DELETE и UPDATE:
http://sqlite.org/lang_createtrigger.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dzyk
  опции профиля:
сообщение 15.9.2008, 23:05
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 13.4.2008
Пользователь №: 148

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(DmP @ 15.9.2008, 4:48) *
SQLite поддерживает простые триггеры


Спасибо. Теоретически все срастается. Осталось реализовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.9.2008, 5:13
Сообщение #14


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(DmP @ 15.9.2008, 7:48) *
SQLite поддерживает простые триггеры, поставте перехват на INSERT, DELETE и UPDATE:
и что вам в этой децентрализованой среде дадут тригеры?
Давайте рассуждать над механизмом:
Вот пользователь № 1 (П1) вставил данные в свою копию БД (Б1), дальше что происходит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 16.9.2008, 8:09
Сообщение #15


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Litkevich Yuriy @ 16.9.2008, 6:13) *
Вот пользователь № 1 (П1) вставил данные в свою копию БД (Б1), дальше что происходит?
Дальше срабатывает тригер на добавление записи, в котором можно эту запись сохранить например в файл. Тоже самое при изменении и удалении записей.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.9.2008, 8:17
Сообщение #16


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 16.9.2008, 12:09) *
в котором можно эту запись сохранить например в файл
разве есть такая возможность в БД, в частности в SQLite?
Если есть, то пример тригера в студию!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.9.2008, 8:54
Сообщение #17


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 16.9.2008, 12:09) *
можно эту запись сохранить например в файл
тут тригер даже и не нужен, данные меняются с помощью программы она сохранит в файл.

Итак, П1 вставил данные в Б1, копия вставленых данных (Ин1.1) сохранилась в файл, дальше что происходит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dzyk
  опции профиля:
сообщение 16.9.2008, 21:40
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 13.4.2008
Пользователь №: 148

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 16.9.2008, 9:17) *
разве есть такая возможность в БД, в частности в SQLite?


Ну в файл то точно НЕТ.

Вот пример триггера SQLite ( при каждом инсерте в таблицу people поля id,fio сохраняются в таблицу Log_table)
CREATE TRIGGER LogRSChanges INSERT   ON people
  BEGIN
    INSERT INTO Log_table (id,fio) VALUES (new.id,new.fio);
  END;


Осталось только включить фанатазию и написать алгоритм синхронизации между программами.

Покритикуйте такой вариант:

Запускается 1П, обращается в сеть. Если не находит другой П2 или Пх. То открывает свою БД и работает с ней как с "верной" БД.

После этого запускается П2. видит П1 и запрашивает у нее "данные для синхронизации БД". Приводит свою БД2 в соответсвии с БД1. И спокойно работает. При этом все изменения в своей БД2 отсылаются в БД1. А изменения в БД1 (1П соотв) копируются в БД2.

С инсертами проблем не будет, а вот апдейты строк нужно обрабатывать с учетом системного времени, которое на всех машинах(приложениях) сети должно быть синхронизировано.

Это конечно самый ненадежный способ. А если кто-то работал в оффлайне и изменял свою БД? :) Алгоритм намного усложняется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 17.9.2008, 12:00
Сообщение #19


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Еще есть вариант того, что 1П и 2П работают в офлайне, оба изменяют одну и ту же запись, что ты будешь делать(значения записи разные)? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2008, 12:06
Сообщение #20


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата
Еще есть вариант того, что 1П и 2П работают в офлайне, оба изменяют одну и ту же запись, что ты будешь делать(значения записи разные)? :)

А есть у пользователей какие-нибудь приоритеты? Возможно, это бы немного облегчило жизнь. Сохранить обновление того пользователя, чей приоритет выше.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Тема закрытаНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 6:29