
Struktura formatu JZK@2011Poniżej opisujemy strukturę plików bazy danych nowego formatu. Informacje te mogą być przydatne do stworzenia narzędzia importującego dane z plików formatu JZK@2011.Nagłówek plikuKażdy plik zaczyna się od 13-bajtowego znacznika wersji, który w wersji 2011 wygląda tak: JZKLIST@2011. Od rodzaju odczytanego znacznika zależy dalszy sposób postępowania z bazą danych. Istnieje kilka rodzajów znaczników oznaczających różne wersje systemu baz danych, może być także zawarty dodatkowy znacznik, oznaczający bazę spakowaną wg algorytmu Lempel-Ziv lub zaszyfrowaną.Tablica alokacjiBezpośrednio po tym w pliku zawarta jest tablica alokacji. Tablica zaczyna się od 4-bajtowej liczby całkowitej, oznaczającej ilość pozycji, a następnie wykazane są po kolei wszystkie pozycje tablicy alokacji. Pozycja tablicy alokacji zawiera kolejno 16-bajtowy znacznik GUID, 4-bajtowy offset w pliku i dwa bajty rezerwowe.Ciągi znakówNastępnie w pliku zawarte są 4 ciągi znaków. Ciągi znaków zapisywane są zawsze w następującej postaci: 2-bajtowa liczba całkowita ze znakiem, oznaczająca długość ciągu, następnie owe n znaków. Jeśli długość ciągu przekracza 30 tys. znaków, najpierw zapisywana jest wartość -1, następnie 4-bajtowa liczba całkowita oznaczająca długość ciągu, następnie cały ciąg. Zatem każde pole tekstowe może mieć maksymalnie 4-bajtową pojemnośc, czyli 2.147.483.647 znaków, czyli niecałe 2 GB! To bardzo dużo. Każdy ciąg znaków może być dodatkowo zaszyfrowany, co ma miejsce w tej sytuacji.Nagłówek bazy danychNastępnie zapisywany jest nagłówek bazy danych - 4-bajtowy numer wersji, 8-bajtowy znacznik czasu ostatniej edycji bazy danych oraz 501 bajtów rezerwy, aktualnie nie wykorzystanych. Następnie w bazie danych zapisywana jest tablica uprawnień, aktualnie nie wykorzystywana, zatem będą zapisane 4 bajty zerowe.Lista obiektów plikuNastępnie w pliku zapisywana jest już właściwa lista obiektów. Lista zaczyna się od znacznika ilości. Zależnie od rodzaju bazy danych (duża czy mała), może to być albo 2 bajty ilości i 4 bajty rezerwy (wtedy baza pomieści maksymalnie 32767 obiektów), albo 4 bajty ilości i 2x4 bajty rezerwy (wtedy baza pomieści 2.147.483.647 obiektów).Obiekty na liścieNastępnie występują po kolei obiekty z danej listy. Każdy obiekt zaczyna się od 128-bajtowego znacznika, po czym następują właściwe dane obiektu. Po odczytaniu n obiektów powinien wystąpić koniec pliku - jeśli nie wystąpi, oznacza to obiekty dopisane po ostatnim przebudowaniu bazy danych. W tej sytuacji obiekty te doczytywane są sekwencyjnie.128-bajtowy znacznik obiektuPrzed każdym 128-bajtowym znacznikiem występują dwa bajty bajty xFF i xFF. 128-bajtowy znacznik obiektu ma następującą strukturę: 1 bajt x26, 38-bajtowy GUID obiektu w standardowej postaci tekstowej w celu zapewnienia widoczności obiektów w dowolnej formie podglądu, 16-bajtowy GUID w postaci cyfrowej, 2-bajtowy identyfikator rodzaju obiektu, 4-bajtowy numer wersji, 4-bajtowy offset w pliku, 4-bajtowa długość obiektu w pliku, 4-bajtowa długość zarezerwowanego pustego miejsca za obiektem (tzw. górka), 8-bajtowy znacznik czasu ostatniej edycji, 1-bajtowy znacznik obiektu, 8-bajtowy znacznik czasu treści obiektu (np. data wystawienia faktury), 8-bajtowa kwota treści obiektu w stałoprzecinkowym formacie walutowym (np. wartość brutto faktury), 4 bajty rezerwy + 12 bajtów rezerwy, 11-bajtowy ciąg znaków zawierający skrót numeru dokumentu (np. cyfry z numeru faktury) oraz bajty rezerwy. |
W skrócie: Wszystko o bazach danych formatu JZK@2011. Zobacz, dlaczego wybraliśmy własny format danych.
© Studio JZK programy komputerowe, Gdańsk 1992-2012 | Wszelkie prawa zastrzeżone. | Mapa strony
Programy | Cennik | Dealerzy | Sklepy | Prasa | Opinie | Moje Faktury™