ďťż
 
[MSSQL 2000 / MSDE] Select na podstawie TimeStampa ďťż
 
[MSSQL 2000 / MSDE] Select na podstawie TimeStampa
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MSSQL 2000 / MSDE] Select na podstawie TimeStampa



Grzegorz Danowski - 26-01-2006 11:01
[MSSQL 2000 / MSDE] Select na podstawie TimeStampa
  Witam!

Projektuję w tej chwili mały system dla przedstawicieli handlowych. Z uwagi
na specyfikę pracy handlowca będzie on umożliwiał prace w trybie offline.
Chciałbym też, by aktualizacja danych w trakcie połączenia z serwerem
centralnym była jak najkrótsza. Aby to zrealizować planuję wykorzystać w
selektach wartości pola timestamp, czyli chciałbym, by aplikacja pobierała z
serwera tylko te rekordy, których timestamp jest większy od maksymalnej
wartości timestamp w DataTable aplikacji klienckiej.
Czy takie podejście wiążę się z jakimkolwiek ryzykiem?
Na razie nie chciałbym rozważać usuwania rekordów (być może zamiast
usuwania, będzie pole z informacją o unieważnieniu rekordu).

Pozdrawiam
Grzegorz





=?iso-8859-2?Q?Pawe=B3_Filipiak?= - 26-01-2006 11:01

  "Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> wrote in message
news:dr8gg4$cka$1@inews.gazeta.pl...
[...]
> selektach wartości pola timestamp, czyli chciałbym, by aplikacja pobierała
> z
> serwera tylko te rekordy, których timestamp jest większy od maksymalnej
> wartości timestamp w DataTable aplikacji klienckiej.
> Czy takie podejście wiążę się z jakimkolwiek ryzykiem?
Raczej nie ma ryzyka, timestamp, ze względu na swoją "systemowość" jest
pewny. Jedyne sam zapewnić to pobieranie timestampu referencyjnego, czyli
"bieżącego" w chwili pobrania danych. Albo max(...) z timestamp każdej
tabeli albo @@dbts

> Na razie nie chciałbym rozważać usuwania rekordów (być może zamiast
> usuwania, będzie pole z informacją o unieważnieniu rekordu).
Na usuwanie niestety nie ma łatwego rozwiązania, tak jak dla insert/update.
Unieważnianie poniekąd obchodzi problem, ale pamiętaj, że wówczas liczba
wierszy będzie ciągle przyrastać - oszacuj, kiedy przekroczy rozsądne
wartości.

--
pozdrawiam,
Paweł Filipiak




Grzegorz Danowski - 26-01-2006 11:01

  Użytkownik "Paweł Filipiak" <pfilipiak@poczta.fm> napisał w wiadomości
news:dr8q2j$nam$1@atena.e-wro.net...
(...)
>> chciałbym, by aplikacja pobierała z
>> serwera tylko te rekordy, których timestamp jest większy od maksymalnej
>> wartości timestamp w DataTable aplikacji klienckiej.
>> Czy takie podejście wiążę się z jakimkolwiek ryzykiem?

> Raczej nie ma ryzyka, timestamp, ze względu na swoją "systemowość" jest
> pewny. Jedyne sam zapewnić to pobieranie timestampu referencyjnego, czyli
> "bieżącego" w chwili pobrania danych.

Aplikacja kliencka będzie miała w pobranych danych także kolumnę z
timestampem, więc z pobraniem timestampa referencyjnego nie powinno być
problemu.

>> Na razie nie chciałbym rozważać usuwania rekordów (być może zamiast
>> usuwania, będzie pole z informacją o unieważnieniu rekordu).

> Na usuwanie niestety nie ma łatwego rozwiązania, tak jak dla
> insert/update. Unieważnianie poniekąd obchodzi problem, ale pamiętaj, że
> wówczas liczba wierszy będzie ciągle przyrastać - oszacuj, kiedy
> przekroczy rozsądne wartości.

Usuwanie rekordów powinno być sporadyczne (baza potencjalnych klientów), gdy
jednak liczba takich przypadków stanie się problemem, to rekordy te zostaną
fizycznie usunięte, a handlowcy skasują wszystkie pliki offline i ponownie
zaimportują wszystkie swoje dane (już bez unieważnionych rekordów).

Pozdrawiam
Grzegorz




=?iso-8859-2?Q?Pawe=B3_Filipiak?= - 26-01-2006 11:01

  Użytkownik "Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> napisał w
wiadomości news:dr8v6n$si5$1@inews.gazeta.pl...
[...]
> Aplikacja kliencka będzie miała w pobranych danych także kolumnę z
> timestampem, więc z pobraniem timestampa referencyjnego nie powinno być
> problemu.

timestamp ma 8 bajtów, więc jeżeli chcesz maksymalnie ograniczyć przepływ
danych staraj się nie pobierać go z każdym rekordem. Oczywiście to już w
ramach skrajnej optymalizacji, ale jeżeli napiszesz kilkadziesiąt zapytań
postaci
select *... ich późniejsze przerabianie na niezbędną listę kolumn może być
mało przyjemnie - warto pomysleć o tym wcześniej. Chyba, że takie
oszczędności są pomijalne w Twoim rozwiązaniu.
No i w takiej sytuacji aplikacja kliencka musi wyliczyc max timestampa, tak,
aby następne zapytanie wybrało tylko nowo dodane/zmodyfikowane rekordy -
może warto zrzucić to liczenie na bazę.

Generalnie rozwiązanie z timestamp-em może bardzo przyspieszyć ładowanie
danych, uzywałem z powodzeniem dla list "wolnozmiennych" - kontrahenci,
indeksy materiałowe. Liczba rekordów była rzędu kliku tysięcy, ale dzienne
zmiany stosunkowo niewielkie - kilka, kilkanaście góra. Klienci podłączali
się do bazy przez najróżniesze łącza, czasami każdy bajt był na wagę
policzalnych sekund.

--
pozdrawiam,
Paweł Filipiak, gg 2791867





Grzegorz Danowski - 26-01-2006 11:01

  Użytkownik "Paweł Filipiak" <pfilipiak@poczta.fm> napisał w wiadomości
news:43d87d8a$1@news.home.net.pl...
> [...]
>> Aplikacja kliencka będzie miała w pobranych danych także kolumnę z
>> timestampem, więc z pobraniem timestampa referencyjnego nie powinno być
>> problemu.
>
>
> timestamp ma 8 bajtów, więc jeżeli chcesz maksymalnie ograniczyć przepływ
> danych staraj się nie pobierać go z każdym rekordem. Oczywiście to już w
> ramach skrajnej optymalizacji, ale jeżeli napiszesz kilkadziesiąt zapytań
> postaci
> select *... ich późniejsze przerabianie na niezbędną listę kolumn może być
> mało przyjemnie - warto pomysleć o tym wcześniej. Chyba, że takie
> oszczędności są pomijalne w Twoim rozwiązaniu.

Dzięki za radę, zastanowię się nad tym pomysłem.
Pozdrawiam
Grzegorz
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= [MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?= MSSQL Express czy Oracle Express MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= [MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?= Pobierananie danych z innej bazy danych w MSSQL Migracja MSSQL 2005 CTP na 2005 Express MSSQL , funkcja pobierajaca sama date (bez czasu) w funkcji
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • melooonka.opx.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com