| ||||||||
[Strona główna] [Artykuły] | ||||||||
Skąd się wzięło ograniczenie wielkości tabeli do 2GB Autor: X | ||||||||
Ok, będzie może trochę długie, ale postaram się wyjaśnić skąd
się bierze górna granica wielkosci dbf-a.
Otóż, w czasach DOSa 3.3 ktoś popełnił błąd, którego następstwa mamy
do dziś. Mianowicie funkcja systemowa, która blokowała określony
obszar pliku nie protestowała, gdy jako parametr dostała adresy nie
mieszczące się w pliku ! Natychmiast podchwycili to producenci baz danych. Zakładając, że plik nie jest większy niż 1GB, założyli, za zablokowanie adresu od 1GB+1 do 1GB+dlugosc_rekordu - po prostu na niby zablokuje pierwszy rekord (upraszczam nieco). Jeżeli inny user-proces chce pisać do tego rekordu, sprawdza istnienie blokady - jak jest to nie pisze. Jak nie ma to blokuje. Co przez to zyskujemy ? Blokujac rzeczywisty rekord nie pozwalamy innym go czytać. A tak czytać każdy może. Każdy program operujący na danych miał (ma) taka górną wartość. Niestety różne miały różną i współpraca w sieci różnych aplikacji z tymi samymi danymi może przynieść dziwne efekty. Później, ze wzgledu kompatybilności "błąd" ten musiano "wdrażać" w kolejnych systemach i produktach. Kto nie wierzy niech sprawdzi: w sieci Novell otworzyć plik np. foksem, zablokować rekord a na konsoli serwera podejrzeć jaki jest obszar blokowany w tym pliku. W foksie 2.6 było tak, że plik otwarty w trybie exclusive mógł mieć długość 2GB a w trybie shared 1GB :)
| ||||||||
[Strona główna] [Artykuły] |