🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #717

Re: Pytanie o prace z ADO.Net

#717
From: Marek Janaszewski USUNTO. z adre...
Date: Fri, 02 Apr 2004 23:07
59 lines
4326 bytes
Jacek Wołoszka wrote:
[...]
>> Chodzi o prace z warstwa ADO.Net i duzymi bazami danych. Dotychczas
>> pracowalem poprzez DataSet i wszystkie zmiany wykonywalem na nich.
>> Ale od momentu jak zaczalem pracowac z tabelami o milionie rekordow
>> taka praca stala sie porazka. Zreszta moze cos zle robie?
[...]

Witam!

Mój najnowszy pomysł co prawa dotyczy zwykłe ADO bez .NET-u, ale myślę że ma
także odniesie tutaj. To, że nie wolno w takim przypadku sprawdzać
wszystkich rekordów to na pewno jest prawa. Z tego co się orientuje samo ADO
(bez .NET) działa podobnie przy kursorze ustawionym na ClientSide. Jeszcze
muszę sprawdzić w informacje o providerze Accessa, ale na pewno tak się
dzieje w przypadku MS SQL. Odchodzi się o tego, że aplikacja jeździ kursorem
po serwerze. Używane są kursory jednokierunkowe, a najlepiej przesłanie
rekordów przez sieć w trybie "węża strażackiego" aby zmniejszyć ruch tła w
sieci. Kiedy aplikacja tak podchodzi do pracy z serwerem będzie mogła
pracować z wieloma serwerami i sama staje się skalowana. Będzie właśnie
mogła działać w większej skali :-) Podobnie wpływa optymistyczny model
lokowania, pesymistyczny jest do przyjęcia tylko w małej skali.
Tyle podłoża teoretycznego.

Zatem jak sobie poradzi skoro aplikacja musi przyjąć odpowiedź na zadane
pytania i to jak najlepiej nie powodując niepotrzebnego ruchu w sieci. Musi
pobrać co jest w danym momencie potrzebne pod dwoma względami. Zarówno pod
względem ilości wierszy i kolumn. Przy założeniu, że średnio każde pole
zajmuje tyle samo miejsca, obcięcie o połowę ilości wierszy i kolumn obniża
czterokrotnie ilość potrzebnej pamięci i transfer przez sieć.

Zatem po pierwsze przygotowujemy zapytanie do widoku listy czy grida,
zawierające tylko niezbędne kolumny, które użytkownik będzie widział oraz
oczywiście wiesze. W najgorszym wypadku pobierzemy tylko x-rekordów. Być
może było by celów dać możliwości ustawiania tego x-a w opcja i ostrzeganie
użytkownika, że przekroczony został ten limit.
Natomiast w przypadku edycji danych pobieramy z bazy do edycji tylko
edytowany rekord i umieszczamy w osobnej tabeli. W tym przypadku zwykle
pobiera się wszystkie kolumny, choć to raczej nie ma pamięciowo znaczenia.
Problem pojawia się jak wyślemy taki rekord z powrotem. Najprawdopodobniej i
tak najrozsądniej będzie posiada dostęp do wszystkich pól. Zależy od modelu
radzenia sobie z sytuacja, że jak użytkownik edytuje dane coś ulega zmianie.

Tak więc do edycji i poglądu mamy dane w osobnych tabela. Jeśli dopuścimy
taką sytuacje to najprawdopodobniej powstanie problem synchronizacji. Po
zmianie trzeba przeładować dane do poglądu. Ma to o tyle sens, że
przekonujemy się jak dane wyglądają na serwerze po zatwierdzeniu zmian.
Powoduje niestety ciągnięcie wszystkiego od nowa przez sieć. Chyba można
temu zaradzić zatwierdzając rekordy paczkami. Jest i problem w drugą stronę.
Użytkownik wybierając edycje może dostać rekord trochę nowszy niż widział go
w poglądzie rekordów.

Szczerze mówiąc nie testowałem tych pomysłów w jakieś wielkiej skali. Ale
wyda, że mają one ręce i nogi.

-- 
Pozdrawiam,
Marek Janaszewski
[ j_m...@gazeta.pl ]
Technical Details
Message-ID: <c4m9gr$23f$1@news.atman.pl>
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.wirehub.nl!newsfeed.tpinternet.pl!news.atman.pl!not-for-mail
References: <c49ept$fbg$1@news.onet.pl> <c4h5rd$753$1@nemesis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.wirehub.nl!newsfeed.tpinternet.pl!news.atman.pl!not-for-mail
From: "Marek Janaszewski \(USUN_TO. z adresu!\)" <USUN_TO...@gazeta.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: Pytanie o prace z ADO.Net
Date: Sat, 3 Apr 2004 01:07:06 +0200
Organization: ATMAN
Lines: 60
Message-ID: <c4m9gr$23f$1@news.atman.pl>
References: <c49ept$fbg$1@news.onet.pl> <c4h5rd$753$1@nemesis.news.tpi.pl>
NNTP-Posting-Host: staticline702.toya.net.pl
Mime-Version: 1.0
X-Trace: news.atman.pl 1080994139 2159 217.113.228.127 (3 Apr 2004 12:08:59 GMT)
X-Complaints-To: use...@atman.pl
NNTP-Posting-Date: Sat, 3 Apr 2004 12:08:59 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit