wtorek, 10 kwietnia 2012

AFIN.NET.ServerCalculation

AFIN.NET.ServerCalculation jest gotowe.

Ponieważ prędkość przeliczeń, a do tego sprowadza się istota    
tej nowej opcji, trudno jest pokazać na filmie, skupię się na    
krótkim objaśnieniu tematu.

Załóżmy, że przychodzimy rano do pracy i chcemy zrobić raport -    
skomplikowany, załóżmy 1.000 funkcji do bazy danych. Mamy wybór:    

1. tworzymy go, wypełniając funkcjami i przeliczając za każdą    
poprawką w arkuszu (przeliczanie automatyczne) i czekając za    
każdym razem po kilkadziesiąt sekund na przeliczenie 1.000 funkcji
2. Przełączamy się na przeliczanie ręczne - wpisujemy funkcje,    
ale przeliczamy tylko co jakiś czas, bo to chwilę trwa
3. Włączamy "przeliczanie hurtowe" wtedy czas jest o wiele    
krótszy, ale też zajmuje kilkanaście sekund (1.000 funkcji to    
1.000 odwołań do zewnętrznej bazy danych, tu nawet 10-krotnie
przyspieszone musi chwilę trwać)


A my chcemy przeliczać szybko! I to po każdym dodaniu nowej    
funkcji, bo chcemy sprawdzać jej wartość przy nowych parametrach.    
(Użytkownicy Excela/AFINA zawsze tak robią, jakby nie wierzyli,    
że przeliczanie całego arkusza/skoroszytu zrobi im za chwilę to samo... ale cóż -    
przyzwyczajenie naszą drugą naturą, więc niech tak zostanie!)

I co? Czy musimy rezygnować z naszych przyzwyczajeń, dotyczących    
pracy w Excelu, gdzie ten natychmiast "reaguje" na zmiany w arkuszu?


Otóż, nie, nie musimy czekać - włączamy    
AFIN.NET.ServerCalculation.

Wyjaśnienie - dla kogo to:
Opcja ta niestety, a może stety, nie jest dostępna dla każdego    
użytkownika AFINA. Wymaga, żeby dane przechowywane były na    
serwerze bazodanowym, np. SQL Server, może być w wersji Express    
(darmowy) - dalej będę posługiwał się skrótem "SQLS".    
Postawienie takiego serwera, tzn. jego instalacja na końcówce, to,    
w zasadzie, chwila - jest to więc opcja do rozważenia nawet dla    
pojedynczych użytkowników. Ale klienci "grupowi", tj. działy    
analiz, w których wszyscy analitycy korzystają z AFINA, są tu    
użytkownikiem modelowym. To dla nich!


No to przychodzimy do tej pracy i zaczynamy tworzyć raport -    
wpisujemy jakieś etykiety wierszy, wpisujemy kilka funkcji -    
powiedzmy 12 (przez przeciągnięcie w prawo formuły    
sparametryzowanej miesiącem - normalna praca w AFINIE)
AFIN liczy owe 12 funkcji. 12 - to niewiele, więc bardzo szybko -    
nie zauważamy, że liczy detalicznie. Super. Wpisujemy kolejne...    
ale, zanim wpiszemy te kolejne, objaśnię, co się dzieje w tle, bo    
użytkownik tego NIE WIDZI, a tam dopiero jest ciekawie.

Ano, w tle, dzieje się dużo. Przy przeliczeniu tych 12 funkcji,    
AFIN nie tylko je przeliczył - zapisał w, niewidocznej dla    
użytkownika, tabeli zapytania, które te funkcje wykonały. Funkcje    
zwróciły wartości, więc użytkownik jest szczęśliwy, ale zapytania i    
tak się zapisały. Po co?
Zapisały się po to, że w tle, co jakiś czas (ustawiany przez    
owego użytkownika - co 5 minut, co godzinę, co kilka godzin - jak    
chcemy) uruchamia się niezależna od Excela procedura-program,    
który robi następujące czynności:
1. Zasysa ową tablicę zapytań z AFINA do tabeli SQLS, wpisując    
je do kolumny SqlText
2. Uruchamia "Job" SQLS, który może być standardowym "Job-em"    
onego, ale, ponieważ SQLS Express nie obsługuje "Job-ów", jest to    
specjalna procedura, tworzona administracyjnie jeden raz przy    
instalacji tego rozwiązania. Procedura ta uruchamia się ,    
odczytuje komendy SqlText, oblicza wartości tych zapytań i tworzy    
(uzupełnia) kolumnę Values.
3.Gotowa tabela jest, z kolei, znów zdalnie i znów    
niepostrzeżenie dla użytkownika, przekazywana do pliku Accessa,    
który jest w folderze AFINA (dalej zwanego bazą podręczną).
Po co? Bo tu AFIN ma blisko, czytaj: szybko ciągnie dane.
Koniec działania owej procedury.

Ale użytkownik wpisuje funkcje dalej. Wpisuje kolejne 12 funkcji i    
chce je przeliczyć.
Więc arkusz przelicza...

Pierwsze 12 funkcji tłumaczy na zapytania i sprawdza, czy ma je w    
bazie podręcznej - ma! Więc bierze je stamtąd - bardzo szybko
Kolejne 12 funkcji tłumaczy na zapytania - nie znajduje ich w owej    
bazie - więc przelicza normalnie - detalicznie. Pierwsze 12 -    
momentalnie (bo z bazy podręcznej), kolejne 12 normalnie, trochę dłużej, ale i tak    
szybko, bo tylko 12. I tak dalej, i dalej, i dalej.

Sumaryczny czas całkowitego przeliczenia raportu (koszt czasu), nie dość, że jest
ponoszony tylko raz, a nie wielokrotnie (jak byłoby przy normalnym
przeliczaniu automatycznym), to jeszcze jest rozłożony na setki naszych operacji
i nie zauważamy tego.

Tworząc raport, zawsze tworzymy go krok po kroku. Nie zauważamy,    
jak AFIN, niepostrzeżenie dla nas, UCZY SIĘ NASZYCH POTRZEB!!!

I, jak już stworzymy raport, pomimo, że wszystkie zapytania są    
strasznie skomplikowane i tak dalej, one wszystkie są już w bazie    
liczonej "pod spodem" - raport przelicza się momentalnie, czyli    
średnio 3 razy szybciej.

Fajne?
Na pewno użyteczne. Zapraszam do używania. Usługa instalacji -    
dla pierwszego Klienta GRATIS!

Brak komentarzy:

Prześlij komentarz