
Nowy format bazy danych JZK@2011Wiele czasu poświęciliśmy na opracowanie nowego, wydajnego formatu baz danych. Wykorzystaliśmy lata doświadczeń i wiele uwag, nadsyłanych przez użytkowników naszych aplikacji. Teraz praca z bazami danych Pakietu JZK jest prawdziwą przyjemnością. Jeśli interesują Cię informacje techniczne, zobacz opis struktury bazy danych.KwerendyPonieważ dane przechowywane są w pamięci RAM, a baza jest wczytywana w potrzebnym zakresie w całości, obrabianie danych jest błyskawiczne. Nie ma potrzeby tworzenia pośrednich rozwiązań typu kwerendy, ponieważ cała baza danych i wszystkie dane są wprost dostępne dla programu. Zatem operacje dyskowe ograniczone są do minimum, ograniczona jest także zajętość połączenia sieciowego.Przechowywanie danych w pamięciOdczytanie bazy danych wymaga odrobiny zajętości pamięci, daje natomiast bardzo dużą szybkość i wygodę pracy. Żaden inny system baz danych nie pozwala na tak błyskawiczne uzyskiwanie podsumowań czy raportów. Ceną za tę wygodę jest zajętość pamięci RAM na poziomie dwukrotności objętości pliku na dysku.Na przykład rozbudowana baza danych programu ISP, zawierająca informację o 2 tysiącach abonentów i dane za ostatnie dwa lata, zajmuje u jednego z naszych użytkowników 25 MB, do tego około 15 MB na bazę faktur i 10 MB na bazę kontrahentów, razem 50 MB, co oznacza konieczność zagwarantowania dla programu około 200 MB wolnej pamięci RAM dla podstawowej pracy. Biorąc pod uwagę, że Windows XP obsługuje pamięci do 3 GB RAM, a Windows 7 nawet więcej, nie jest to żaden problem. Prace edycyjneW przypadku programów JZK praca z każdą bazą danych sprowadza się do jednej z trzech operacji - dodawanie, usuwanie lub edycja obiektu. W przypadku obiektów zagnieżdżonych w innych obiektach (na przykład pozycje Towar w obiekcie Faktura) dodawanie, usuwanie lub edycja zagnieżdżonego obiektu odbywa się lokalnie, a od strony bazy danych oznacza to po prostu edycję obiektu nadrzędnego.Za każdym razem przyjęliśmy zasadę, że zmiany zapisywane są natychmiast na dysku, co pozwala na efektywną synchronizację danych między stanowiskami. Edycja obiektówZnacznik obiektu wraz z początkową tablicą alokacji ma fundamentalne znaczenie. Każdy obiekt wczytany do pamięci zna swój znacznik, a więc zna swoje początkowe położenie w pliku. Po edycji każdy obiekt umie zapisać sam siebie. Akceptacja edycji zaczyna się od odczytania oczekiwanego znacznika w pliku - jeśli nic nie uległo zmianie i obiekt nadal mieści się w przewidzianym dla niego miejscu, zostaje on zapisany w tym miejscu pliku.Jeśli w międzyczasie obiekt został zmieniony przez inną osobę na innym stanowisku, jest on odczytywany ponownie, a edycja jest przywracana do początkowego stadium, po czym użytkownik musi wprowadzić swoje zmiany jeszcze raz. Jeśli obecne miejsce w pliku jest dla nowej treści obiektu za małe, program przebudowuje bazę danych, robiąc odpowiednio więcej miejsca dla danego obiektu. Program na innych stanowiskach w sieci rozpozna, że baza została przebudowana. Jeśli przy próbie zapisania program rozpozna, że baza została przebudowana przez kogoś innego, tj. w oczekiwanym miejscu nie ma już obiektu, który wcześniej został odczytany, program sięga do początkowej tabeli alokacji i wyszukuje w niej aktualną informację o położeniu swojego obiektu, a następnie weryfikuje go z nowym położeniem. Jeśli nowa lokalizacja pozwala na zapisanie obiektu, jest on zapisywany. Jeśli w tym momencie wymagana byłaby przebudowa bazy, program dokonuje najpierw synchronizacji całej bazy danych. Usuwanie obiektówUsuwanie obiektów wymaga wyłącznie ustawienia pola Usunięty w znaczniku pliku, a następnie zapisania samego znacznika. Po usuniętym obiekcie nadal zostaje pełny zapis w bazie danych. Miejsce w pliku zostanie automatycznie odzyskane po pełnym przebudowaniu bazy danych.Dodawanie obiektówDodawanie obiektów jest operacją banalną - polega po prostu na dopisaniu nowego obiektu na końcu pliku. Cała struktura pliku pozostaje niezmieniona, program nie dotyka również tablicy alokacji.Prace hurtowe i seryjneW przypadku prac seryjnych wymagany jest pełny, nieograniczony i całkowity dostęp do danych. Program automatycznie spróbuje przełączyć się w tryb pracy na wyłączność - zadziała to tylko wtedy, gdy żadne inne stanowisko w sieci nie będzie korzystać z programu. Upewnij się zatem, że inne stanowiska w sieci są zamknięte.Prace hurtowe polegają na przykład na jednoczesnym wygerowaniu tysiąca faktur VAT. Cała operacja odbywa się w pamięci RAM, a po jej zakończeniu bazy danych są automatycznie przebudowywane i w całości zapisywane na dysku. Nie ma możliwości wykonania tego w inny sposób, niż podczas pracy na wyłączność. Przebudowa baz danychPrzebudowa bazy danych polega na całkowitym utworzeniu jej od zera w nowym formacie JZK@2011. Tworzona jest nowa, pełna tablica alokacji, a następnie zapisywane są wszystkie obiekty. W ten sposób dokonuje się też automatyczne kompaktowanie, ponieważ zostanie odzyskane wolne miejsce po poprzednio usuwanych obiektach. Usuwane są także wszystkie błędy, ponieważ błędne obiekty zostaną automatycznie pominięte.Przebudowa baz danych odbywa się automatycznie, jeśli program odczuje taką potrzebę - na przykład podczas pracy seryjnej albo po istotnych zmianach struktury bazy danych. Przebudowę można także wymusić samodzielnie za pomocą opcji Przebuduj w module Administrator. Synchronizacja baz danychSynchronizacja baz danych występuje w dwóch przypadkach. Synchronizacja może być wymuszona sytuacją (program próbował zapisać zmiany w obiekcie, ale od poprzedniego razu ktoś inny wykonał przebudowę bazy danych), może zostać też wywołana przez użytkownika klawiszem F5 (Plik » Synchronizuj dane w sieci).Procedura synchronizacjiSynchronizacja polega na odczytaniu tablicy alokacji i porównaniu zawartości tej tablicy z obiektami znajdującymi się w pamięci. Na podstawie tego porównania może się zdarzyć, że niektóre obiekty zostaną rozpoznane jako usunięte, dla innych zmieni się zawartość odczytanego 128-bajtowego znacznika obiektu, w tym offset w pliku. W tablicy alokacji mogą również pojawić się nowe obiekty, dodane w międzyczasie, program automatycznie doda je do listy. Dodatkowo na końcu synchronizowanego pliku mogą znajdować się dodatkowe obiekty, nie ujęte jeszcze w tablicy alokacji, zostaną one zatem dodane do listyPo stworzeniu nowej listy obiektów program odczytuje po kolei każdy z nich, aby upewnić się, że w pamięci zawarte są aktualne dane. Odczytanie zaczyna się od odczytania samego 128-bajtowego znacznika obiektu. Jeśli znacznik wersji i znacznik daty są bez zmian, nie ma potrzeby odczytywania zawartości obiektu. Jeśli znaczniki się różnią, w szczególności są większe, program odczytuje nowe dane. W tej sposob po przejściu całej listy mamy w pamięci wszystkie obiekty z aktualną treścią. Zajętość pamięciJeśli baza danych zawiera kilka tysięcy pozycji, odczytywanie ich jedna po drugiej z pliku dostępnego w sieci byłoby czasowym koszmarem. Zamiast tego program wczytuje plik do pamięci w trakcie jednej operacji dyskowej, a wszystkie operacje typu żabie skoki po liście odbywa już w pamięci RAM. Stąd synchronizacja danych, mimo swojej złożoności, jest operacją bardzo szybką, wymaga jednak zagwarantowania dla programu wolnego miejsca w pamięci RAM na poziomie dwukrotności objętości pliku. Czyli dodatkowe 50-100 MB pamięci RAM na czas synchronizacji danych. Przy dzisiejszych konfiguracjach komputerów nie jest to żadnym problemem.Wydajność i szybkość pracy programuChociaż szybkość pracy jest dla nas priorytetem, bardzo wiele możesz zrobić sam. Niewłaściwa konfiguracja programu może spowodować nieakceptowalnie powolną pracę.Jak mogę zwiększyć wydajność?Operacje dyskowe zostały ograniczone do minimum, program większość operacji wykonuje w pamięci RAM, zatem ważna jest szybkość dostępu do pamięci RAM i wydajność procesora. Upewnij się zatem, że program ma dużo wolnej pamięci RAM. Nie jest konieczne instalowanie 64-bitowego systemu Windows, standardowe 3GB widoczne w 32-bitowym Windows 7 są dla programu więcej niż wystarczające.
Sprawdź indeks wydajności systemu Windows, dostępny w Windows Vista i Windows 7. Poniżej prezentujemy indeks wydajności komputera, na którym testowaliśmy system: Indeks wydajności grafiki nie ma żadnego znaczenia w przypadku biznesowych programów Pakietu JZK. Upewnij się natomiast, że klasyfikacja wydajności procesora i pamięci RAM wynosi przynajmniej 5.0, a szybkość transferu danych dla dysku przynajmniej 7. Możesz przyspieszyć pracę, zmieniając komputer na taki z szybszym procesorem i większą ilością szybko dostępnej pamięci RAM (jak najmniejszy CLK), a przede wszystkim wymieniając standardowy mechaniczny dysk magnetyczny na elektroniczny dysk SSD. Zalecamy dyski X-25 firmy Intel dołączane przez szybkie łącze SATA II, można też rozważyć zakup karty SSD podłączanej bezpośrednio do magistrali płyty głównej. Wydajność podczas pracy w sieciPodczas pracy w sieci najczęściej to sama sieć jest wąskim gardłem. Upewnij się, że dane przechowywane są na serwerze na dysku SSD. Nie ma nic gorszego, niż powolny serwer, z opóźnieniem dostarczający dane. Wejście do edycji obiektu, a następnie jego akceptacja wymaga 4 niesekwencyjnych operacji dyskowych, z przesłaniem raptem kilku kB danych, zatem tu kluczowym parametrem jest prędkość dostępu do pliku. Zależnie od konfiguracji sieci, spowalniaczem może być każdorazowa weryfikacja uprawnień przez system zarządzania siecią.Z kolei odczyt i przebudowa bazy danych wymaga szybkiego przesłania kilkudziesięciu lub kilkuset megabajtów danych, stąd warto zadbać o szybkość transferu w sieci. Upewnij się, że wszystkie karty, kable, switche i routery działają w trybie gigabitowym, a dane przechowywane są na serwerze na szybkim dysku SSD. Zobacz więcej o pracy w sieci w specjalnym dokumencie PDF. Pożeracze wydajnościJeśli samodzielnie zainstalowałeś szpiega w rodzaju programu antywirusowego (lub posiadasz program szpiegujący ruch w sieci, o którym nie wiesz), każda operacja będzie zauważalnie wolniejsza. Upewnij się, że pracujesz na bezpiecznym systemie i ustaw program antywirusowy w taki sposób, aby nie powodował spowolnienia pracy w sieci. Możesz wyłączyć na przykład wybrane foldery spod skanowania, zwłaszcza gdy chodzi o foldery przechowywania danych na dysku.Bezpieczeństwo pracySzczególny nacisk położony został na bezpieczeństwo baz danych. Specjalny układ baz danych, zapewniający odpowiednią ilość nadmiarowych danych, pozwala na odtworzenie danych w razie potrzeby.Awarie bazy danychNie ma baz, które nie mogą ulec awarii. Zobacz koniecznie dział o awariach baz danych w najnowszym Przewodniku Użytkownika.Struktura baz danych nowego formatu JZK@2011 zawiera wiele nadmiarowych danych, pozwalających programowi odczytać dane nawet w przypadku częściowego uszkodzenia bazy danych. Program zaczyna zawsze od tabeli alokacji i na jej podstawie odczytuje wszyskie obiekty niesekwencyjnie, operując na offsetach zapisanych w tablicy alokacji. W ten sposób jeśli awaria dotyczy tylko zakresu pliku, na przykład jeden klaster na dysku jest nieczytelny, nie zostaną odczytane obiekty z tego klastra, ale pozostałe dane zostaną odczytane prawidłowo - zarówno te przed, jak i za miejscem uszkodzenia. Jeśli w pliku nie ma jeszcze tablicy alokacji albo okazuje się ona uszkodzona, program czyta plik sekwencyjnie, odczytując obiekty jeden po drugim. Ten sposób, stosowany we wcześniejszych wersjach naszych programów, ma tę wadę, że w razie uszkodzenia w pliku wszystkie dane od tego miejsca stają się utraconymi. Ponieważ najnowsze dane zapisywane są na końcu pliku, może w ten sposób dojść do utraty nowych danych - a przecież jeśli już mamy wybierać, w razie awarii wolelibyśmy stracić stare dane. Dlatego w programach Pakietu JZK wprowadzono teraz nową funkcję ratowania baz danych, dzięki której użytkownik samodzielnie może odtworzyć dane w razie problemów. Ratowanie bazy danychW module Administrator przygotowaliśmy funkcję ratowania danych. Działa bardzo prosto i wydajnie - skanuje plik wskazany i dokonuje pełnej synchronizacji danych, tj. odczytuje obiekty, których nie ma w aktualnej bazie danych. Odczytywanie jest dość powolne, bo wymaga skanowania zawartości całego pliku. Program nie bierze pod uwagę offsetów ani tablicy alokacji wychodząc z założenia, że mogły zostać uszkodzone.Tego narzędzia można użyć także do scalania kilku baz danych, na przykład importu danych z oddziałów firmy. Uwaga: import odbywa się na bazie unikalnego znacznika GUID. W przypadku wcześniejszego importu ze starego formatu, GUID jest nadawany każdorazowo na lokalnym komputerze, zatem mogą powstać dwa obiety o podobnej treści, ale o różnych znacznikach. W przypadku ratowania z bazy nowego formatu, ten problem nie wystąpi. Zresztą zawsze lepiej mieć dwa obiekty z ważnymi danymi, niż nie mieć żadnego. Ratowanie, jak i wszystkie funkcje modułu Administrator, wymaga pracy na wyłączność. Po zakończonej procedurze ratowania otrzymujemy nową, przebudowaną bazę danych, nie zawierającą już żadnych błędów, bowiem dane powodujące błąd zostały odrzucone. Kopie zapasoweKoniecznie wykonuj regularnie kopie zapasowe - najrzadziej codziennie i zawsze przed ważnymi operacjami hurtowymi, takimi jak import wpłat z rachunków kontrahenckich, seryjne fakturowanie, przyjmowanie dużych dostaw itp. Zobacz koniecznie rozdział o bezpieczeństwie baz danych w najnowszym Przewodniku Użytkownika. |
W skrócie: Nowy format bazy danych JZK@2011 daje nowe możliwości.
© Studio JZK programy komputerowe, Gdańsk 1992-2012 | Wszelkie prawa zastrzeżone. | Mapa strony
Programy | Cennik | Dealerzy | Sklepy | Prasa | Opinie | Moje Faktury™