eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingreplikacja prostej bazy - czy da się lepiej?
Ilość wypowiedzi w tym wątku: 3

  • 1. Data: 2011-07-25 13:21:20
    Temat: replikacja prostej bazy - czy da się lepiej?
    Od: Szyk <s...@o...pl>

    Witam

    Mam zamiar zrobić prostą aplikację opartą na bazie Sqlite z 4 tabelami
    do replikacji. Aplikacja ma być dostępna na PC i smartfony . Replikacja
    ma się odbywać między PC i smartfonami (standardowo z jednym) w pełni
    automatycznie. Rekordów będzie gdzieś 10k na dzień dobry, standardowo
    dziennie przyrastać będzie do 500 rekordów.

    Mam 2 przypadki replikacji:
    1) replikacja z nową wersją bazy (instalka nowej wersji programu)
    2) replikacja z bazami mobilnymi (na PC i smartfonach można dodawać nie
    zależnie dane do bazy które później muszą być synchronizowane)

    Mam taki pomysł:
    1) każda zainstalowana baza ma mieć ID 64bit generowane (nie
    sekwencyjne). Baza instalacyjna ma ID = 0
    2) ID rekordów we wszystkich tabelach bazi: unikalne, 64bit, generowane
    (nie sekwencyjne), ID Bazy i TimeStamp ostatniej modyfikacji (ID Bazy
    jest konieczne przy pierwszej replikacji, kiedy trzeba brać pod uwagę
    wszystko co nie wjechało z bazą instalacyjną)
    3) w bazie jest tabela "replikacja" z ID Bazy i datą ostatniej
    replikacji z tą bazą
    4) standardowo przy replikacji wybieram rekordy dodane, zmienione i
    usunięte po dacie ostatniej replikacji z daną bazą
    5) przy pierwszej replikacji pobieram tabelę "replikacja" bazy na
    smartfonie, sprawdzam czy się data zgadza z wersją na PC (baza musi mieć
    tą samą wersję) i pobieram wszystkie rekordy o ID bazy różne od 0.
    Podgrywam nowe rekordy na smartfon. Na koniec wrzucam odpowiednie
    rekordy z ID Bazy i datą do tablic "replikacja" na PC i smartfonie.


    Oczywistą wadą jest to, że każdy rekord w bazie będzie miał IDBazy z
    której pochodzi i będzie to wykorzystane tylko przy pierwszej
    replikacji. Jednak jest to konieczne bo ktoś może mieć pierwszą wersję
    bazy, dodać sobie jakieś rekordy ręcznie i aktualizować do drugiej
    wersji i dopiero potem replikować dane z PC. Gdyby nie było IDBazy i
    gdybym oparł się jedynie na dacie replikacji bazy 0 (instalacyjnej) to
    rekordy dodane ręcznie nie zostałyby replikowane.


    Pytanie:
    Czy macie lepszy pomysł jak zrobić replikację tej bazy?


    dzięki
    Szyk


  • 2. Data: 2011-07-25 15:47:54
    Temat: Re: replikacja prostej bazy - czy da się lepiej?
    Od: Mariusz Marszałkowski <m...@g...com>

    On Jul 25, 3:21 pm, Szyk <s...@o...pl> wrote:
    > Witam
    >
    > Mam zamiar zrobić prostą aplikację opartą na bazie Sqlite z 4 tabelami
    > do replikacji. Aplikacja ma być dostępna na PC i smartfony . Replikacja
    > ma się odbywać między PC i smartfonami (standardowo z jednym) w pełni
    > automatycznie. Rekordów będzie gdzieś 10k na dzień dobry, standardowo
    > dziennie przyrastać będzie do 500 rekordów.
    >
    > Mam 2 przypadki replikacji:
    > 1) replikacja z nową wersją bazy (instalka nowej wersji programu)
    > 2) replikacja z bazami mobilnymi (na PC i smartfonach można dodawać nie
    > zależnie dane do bazy które później muszą być synchronizowane)
    >
    > Mam taki pomysł:
    > 1) każda zainstalowana baza ma mieć ID 64bit generowane (nie
    > sekwencyjne). Baza instalacyjna ma ID = 0
    > 2) ID rekordów we wszystkich tabelach bazi: unikalne, 64bit, generowane
    > (nie sekwencyjne), ID Bazy i TimeStamp ostatniej modyfikacji (ID Bazy
    > jest konieczne przy pierwszej replikacji, kiedy trzeba brać pod uwagę
    > wszystko co nie wjechało z bazą instalacyjną)
    > 3) w bazie jest tabela "replikacja" z ID Bazy i datą ostatniej
    > replikacji z tą bazą
    > 4) standardowo przy replikacji wybieram rekordy dodane, zmienione i
    > usunięte po dacie ostatniej replikacji z daną bazą
    > 5) przy pierwszej replikacji pobieram tabelę "replikacja" bazy na
    > smartfonie, sprawdzam czy się data zgadza z wersją na PC (baza musi mieć
    > tą samą wersję) i pobieram wszystkie rekordy o ID bazy różne od 0.
    > Podgrywam nowe rekordy na smartfon. Na koniec wrzucam odpowiednie
    > rekordy z ID Bazy i datą do tablic "replikacja" na PC i smartfonie.
    >
    > Oczywistą wadą jest to, że każdy rekord w bazie będzie miał IDBazy z
    > której pochodzi i będzie to wykorzystane tylko przy pierwszej
    > replikacji. Jednak jest to konieczne bo ktoś może mieć pierwszą wersję
    > bazy, dodać sobie jakieś rekordy ręcznie i aktualizować do drugiej
    > wersji i dopiero potem replikować dane z PC. Gdyby nie było IDBazy i
    > gdybym oparł się jedynie na dacie replikacji bazy 0 (instalacyjnej) to
    > rekordy dodane ręcznie nie zostałyby replikowane.
    >
    > Pytanie:
    > Czy macie lepszy pomysł jak zrobić replikację tej bazy?
    Chyba nie zrozumialem co jest istota problemu.
    Pozdrawiam


  • 3. Data: 2011-07-25 18:49:27
    Temat: Re: replikacja prostej bazy - czy da się lepiej?
    Od: Michoo <m...@v...pl>

    1. Tobie chyba chodzi o synchronizację a nie replikację...
    2. Możesz opisać jeszcze raz co z czym, w jakiej ilości i kiedy się
    synchronizuje? I jakie dane (czy np te wprowadzone przez usera też?). Bo
    opisałeś to trochę chaotycznie...

    Anyway - wygląda na to, że wystarczy w każdej bazie trzymać jej uuid
    (choćby połączenie macadresu hosta i timestampu), tabelkę mapującą
    uuid->id_wewnętrzny_bazy a klucze postaci
    (id_wewnętrzny_bazy,nr_sekwencyjny_w_obrębie_bazy), albo po prostu
    klucze postaci (uuid,nr_sekwencyjny_wg_tego_uuid) i tabelę
    uuid->timestamp ostatniej synchronizacji.
    Wtedy synchronizacja może być przechodnia, w różnej kolejności, etc -
    jak w rozzproszonych systemach kontroli wersji.

    --
    Pozdrawiam
    Michoo

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: