synchronizacja danych wielu klientow?
=?ISO-8859-2?Q?Pawe=B3?= - 17-05-2006 00:40
synchronizacja danych wielu klientow?
Witam! Podczas pisania aplikacji nasunal mi sie pewnien problem. Jesli ktos zna rozwiazanie lub wie gdzie mozna poczytac o tym prosze o odpowiedz. Sprawa dotyczy wielu klientow korzystajacych z jednej bazy danych. Jak sprawic by na kazdym kliencie byly widoczne te same dane tuz po modyfikacji przez innego klienta? Ja stworzylem sobie tabele odswiezania i w niej zaisuje znaczniki czasu modyfikacji pozostalych tabel w bazie i pozniej klienci odpytuja baze i sprawdzaja czy dane ktore maja sa juz nieaktualne. Jednak takie rozwiazanie ma wady: - odpytywanie nie moze byc za czeste zwlaszcza przy duzej liczbie klientow poniewaz baza bedzie ciagle obslugiwac zapytania o odswiezanie przez co wlasciwe zapytania beda wykonywac sie duzej - istnieje mozliwosc ze pomiedzy jednym odswiezeniem a drugim ktos odczyta nieaktualne dane
Jak to sie rozwiazuje profesjonalnie? Moze sa jakies mechanizmy baz danych ktore to wspomagaja? Chodzi mi raczej o ogolne rozwiazania niezalezne od DBMS. Czy sa jakies ksiazki ktore mowia o tym zagadnieniu?
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 17-05-2006 00:41
Paweł wrote: > Sprawa dotyczy wielu klientow korzystajacych z jednej bazy danych. > Jak sprawic by na kazdym kliencie byly widoczne te same dane tuz po > modyfikacji przez innego klienta? Albo ja nie rozumiem w czym problem, albo relacyjne bazy danych z założenia do tego między innymi służą. Po to są transakcje, żeby poszczególni użytkownicy we właściwym momencie widzieli modyfikacje wykonane przez innych użytkowników (nie wcześniej i nie później). Zarządzanie transakcjami jest zrealizowane w różny sposób w różnych bazach, więc trzeba wiedzieć na jakiej bazie się pracuje i jak ona działa, żeby sobie krzywdy nie zrobić.
Reasumując, niczego nie implementuj, tylko przeczytaj dokumentację swojej bazy.
-- Michał Kuratczyk
=?iso-8859-2?Q?Andrzej_Str=F3=BFy=F1ski?= - 17-05-2006 00:41
Użytkownik "Michał Kuratczyk" napisał: > Paweł wrote: >> Sprawa dotyczy wielu klientow korzystajacych z jednej bazy danych. >> Jak sprawic by na kazdym kliencie byly widoczne te same dane tuz po >> modyfikacji przez innego klienta? > Albo ja nie rozumiem w czym problem, albo relacyjne bazy danych z > założenia > do tego między innymi służą. Po to są transakcje, żeby poszczególni > użytkownicy we właściwym momencie widzieli modyfikacje wykonane przez > innych użytkowników (nie wcześniej i nie później). Zarządzanie > transakcjami > jest zrealizowane w różny sposób w różnych bazach, więc trzeba wiedzieć > na > jakiej bazie się pracuje i jak ona działa, żeby sobie krzywdy nie zrobić. > > Reasumując, niczego nie implementuj, tylko przeczytaj dokumentację swojej > bazy.
Podejrzewam, że chodzi tu o aktualizację np. jakiegoś browse'a na kliencie jeśli ktoś inny zmodyfikuje przeglądaną tabelę. Czy tak? (to oczywiście pytanie do Pawła)
pozdrawiam A.S.
zarafiq@poczta.onet.pl - 17-05-2006 00:41
> Witam! > Podczas pisania aplikacji nasunal mi sie pewnien problem. Jesli ktos zna [...]
Firebird ma 'events'.
Pozdrawiam zarafiq
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Pawe=B3?= - 17-05-2006 00:41
Andrzej Stróżyński napisał(a): > > Użytkownik "Michał Kuratczyk" napisał: >> Paweł wrote: >>> Sprawa dotyczy wielu klientow korzystajacych z jednej bazy danych. >>> Jak sprawic by na kazdym kliencie byly widoczne te same dane tuz po >>> modyfikacji przez innego klienta? >> Albo ja nie rozumiem w czym problem, albo relacyjne bazy danych z >> założenia >> do tego między innymi służą. Po to są transakcje, żeby poszczególni >> użytkownicy we właściwym momencie widzieli modyfikacje wykonane przez >> innych użytkowników (nie wcześniej i nie później). Zarządzanie >> transakcjami >> jest zrealizowane w różny sposób w różnych bazach, więc trzeba >> wiedzieć na >> jakiej bazie się pracuje i jak ona działa, żeby sobie krzywdy nie zrobić. >> >> Reasumując, niczego nie implementuj, tylko przeczytaj dokumentację swojej >> bazy. > > Podejrzewam, że chodzi tu o aktualizację np. jakiegoś browse'a na > kliencie jeśli ktoś inny zmodyfikuje przeglądaną tabelę. Czy tak? (to > oczywiście pytanie do Pawła) > > pozdrawiam > A.S. > Tak! Chodzi o to ze powiedzmy jest wyswietlana lista produktow. I w tym czasie w innym kliencie ktos zmieni ta liste np usunie produkt. To jaki jest mechanizm zeby ta lista sie zaktualizowala?
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 17-05-2006 00:41
Paweł wrote: > Tak! Chodzi o to ze powiedzmy jest wyswietlana lista produktow. I w tym > czasie w innym kliencie ktos zmieni ta liste np usunie produkt. To jaki > jest mechanizm zeby ta lista sie zaktualizowala? Wykorzystaj to co daje Twoja baza tym zakresie. Np. w OraclE: http://download-uk.oracle.com/docs/c...n.htm#ADFNS018
-- Michał Kuratczyk
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 17-05-2006 00:41
Paweł wrote: > Witam! > Podczas pisania aplikacji nasunal mi sie pewnien problem. Jesli ktos zna > rozwiazanie lub wie gdzie mozna poczytac o tym prosze o odpowiedz. > Sprawa dotyczy wielu klientow korzystajacych z jednej bazy danych. > Jak sprawic by na kazdym kliencie byly widoczne te same dane tuz po > modyfikacji przez innego klienta? > Ja stworzylem sobie tabele odswiezania i w niej zaisuje znaczniki > czasu modyfikacji pozostalych tabel w bazie i pozniej klienci odpytuja > baze i sprawdzaja czy dane ktore maja sa juz nieaktualne. > Jednak takie rozwiazanie ma wady: > - odpytywanie nie moze byc za czeste zwlaszcza przy duzej liczbie > klientow poniewaz baza bedzie ciagle obslugiwac zapytania o odswiezanie > przez co wlasciwe zapytania beda wykonywac sie duzej > - istnieje mozliwosc ze pomiedzy jednym odswiezeniem a drugim ktos > odczyta nieaktualne dane > > Jak to sie rozwiazuje profesjonalnie? Moze sa jakies mechanizmy baz > danych ktore to wspomagaja? Chodzi mi raczej o ogolne rozwiazania > niezalezne od DBMS. > Czy sa jakies ksiazki ktore mowia o tym zagadnieniu?
No to właśnie zrobiłeś najlepsze uniwersalne rozwiązani! Co wy sie czepiliście tej uniwersalności? Uniwersalność i wydajność w większości przypadków się wykluczają!
-- P.M.
=?ISO-8859-2?Q?Pawe=B3?= - 18-05-2006 00:16
Paweł Matejski napisał(a): > Paweł wrote: >> Witam! >> Podczas pisania aplikacji nasunal mi sie pewnien problem. Jesli ktos zna >> rozwiazanie lub wie gdzie mozna poczytac o tym prosze o odpowiedz. >> Sprawa dotyczy wielu klientow korzystajacych z jednej bazy danych. >> >> Jak to sie rozwiazuje profesjonalnie? Moze sa jakies mechanizmy baz >> danych ktore to wspomagaja? Chodzi mi raczej o ogolne rozwiazania >> niezalezne od DBMS. >> Czy sa jakies ksiazki ktore mowia o tym zagadnieniu? > > No to właśnie zrobiłeś najlepsze uniwersalne rozwiązani! Co wy sie > czepiliście tej uniwersalności? Uniwersalność i wydajność w większości > przypadków się wykluczają! > > >
To poprosze o napisanie jak to sie robi w konkretnych DBMS w takim razie.
Artur Muszynski - 18-05-2006 00:16
> Tak! Chodzi o to ze powiedzmy jest wyswietlana lista produktow. I w tym > czasie w innym kliencie ktos zmieni ta liste np usunie produkt. To jaki > jest mechanizm zeby ta lista sie zaktualizowala?
W SQL serverze jest notification services. Jednak aplikacje zwykle nie korzystają z takich mechanizmów, bo wiążą się z nimi ograniczenia i problemy (często serwer nie może się łatwo dostać do klienta). Zamiast tego robi się przycisk Odśwież. Odświeża się listę po operacjach (można to w miarę inteligentnie zrobić, żeby nie generować zbędnego ruchu). Natomiast przy aktualizacjach stosuje się podejście zwane po angielsku optimistic concurrency. Jeśli bardzo potrzeba, to się stosuje po prostu próbowanie zmian co jakiś okres (ale z tym trzeba bardzo uważać, bo bardzo łatwo zarżnąć serwer).
artur
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
=?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?=
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
[laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?=
Połączenie bazy danych z wykonaniem polaczenia telefonicznego
[mssql] insert do tabeli na podstawie danych z innej tabeli
[oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
zanotowane.pldoc.pisz.plpdf.pisz.plponland.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|