[ Pobierz całość w formacie PDF ]
.Dla przetwarzania danych oznacza to, że należy spodziewać się przypad-ków, w których załadowanie danych do pamięci spowoduje jej przepełnie-nie.Roczna zawartość logów popularnego serwera WWW może zająć od10 do 15 gigabajtów miejsca na dysku.Jeśli komputer ma 1 lub 2 gigabajtypamięci operacyjnej (wraz z przestrzenią wymiany), w celu przetworzeniadanych o takich rozmiarach należy podzielić je na mniejsze kawałki. Rozdział 2." Tekst 57Jeśli mamy szczęście, dane możemy podzielić na części w ramach dwueta-powego procesu.W pierwszym dane są filtrowane w taki sposób, że toco pozostało mieści się już w pamięci, w drugim etapie wykonujemy naszeprzetwarzanie z tymi odfiltrowanymi danymi.Załóżmy na przykład, żefirma realizuje miliard transakcji rocznie i chcemy znalezć milion najwięk-szych z nich.Załóżmy, że w pamięci zmieści się najwyżej sto milionówrekordów.Problem możemy rozwiązać w następujący sposób:for (każdy blok złożony ze 100 milionów rekordów)wczytaj do pamięciposortujzapisz w pliku tymczasowym milion najwyższych wartościwczytaj plik tymczasowy (o rozmiarze 10 milionów rekordów)posortujwypisz milion najwyższych wartościCo zrobić jednak, gdy nie możemy podzielić danych na mniejsze kawałki?Na przykład: co zrobić z multispektralnymi zdjęciami satelitarnymi alboobrazami z tomografu komputerowego i  nie ma wyjścia  potrzebnesą od razu te 22 gigabajty danych? W tym przypadku jesteśmy skazani naniestandardowe algorytmy.Wiele z nich wywodzi się z czasów komputerówmainframe i pamięci taśmowych.Tego typu rozwiązania są z reguły o wielebardziej skomplikowane od wersji  całe dane w pamięci.Jeśli ktoś znajdziesię w takiej sytuacji, oznacza to, że czas zwykłego przetwarzania danychskończył się, nadszedł czas na odejście od klawiatury i wykonanie solidnejpracy analitycznej i projektowej.2.8.PodsumowanieTen rozdział zawierał wprowadzenie kilku podstawowych koncepcji i tech-nik.Niektóre z nich są specyficzne dla przetwarzania strumieni tekstu, innemają ogólne zastosowanie w technikach przetwarzania danych.Podsumujmynajważniejsze z nich:Należy rozpocząć od uogólnienia i dodawać do rozwiązaniakolejne szczegóły dopiero wówczas, gdy napotkamy przypadki,których uogólnienie nie obsługuje.Należy unikać rozwiązańprzekombinowanych, implementujących rozwiązania nieistniejącychproblemów.W strategii Extreme Programming tego typu rozwiązania 58 Przetwarzanie danych dla programistówStruktury danychPrzetwarzanie danych opiera się w większości przypadków nalistach i katalogach, lecz czasem rozwiązanie problemu wymagazastosowania technik opisanych w bardziej zaawansowanych algo-rytmach informatycznych.Na przykład problem wyszukania milionanajwyższych wartości z listy miliarda można rozwiązać za pomo-cą kolejki priorytetowej, to znaczy listy, w której q[k] ma zawszewiększą wartość od q[2"k+1] do q[2"k+2].Za każdym razem, gdydo tej listy jest dodawany element, kolejka porządkuje się auto-matycznie, zachowując tę zasadę.Jeśli ograniczymy jej rozmiar domiliona rekordów, można przetworzyć miliard rekordów po kolei(pojedynczo), a w efekcie otrzymamy milion największych wartości.Standardowa biblioteka Pythona zawiera obsługę kolejki priory-tetowej, służy do tego moduł heapq.Podobne moduły są dostępnedla większości języków programowania.Jeśli Czytelnik wykorzystujejęzyk, do którego nie ma odpowiedniej biblioteki, można same-mu zaimplementować odpowiednią strukturę zgodnie z opisemw [Sed97] lub wielu innych podręcznikach omawiających algoryt-my i struktury danych.określa się akronimem YAGNI: ang.You Ain t Gonna Need It,czyli  nie będziesz tego potrzebował.Należy oddzielić etap odczytu od etapów przetwarzania i zwracaniawyników.Dzięki temu każdy z etapów będzie łatwiej napisać,testować, użyć ponownie i rozwijać.Nie wolno się powtarzać.Nie należy szukać wymówki w fakcie, że rozwiązanie jestjednorazowe, można sobie więc pozwolić na nonszalanckie technikiprogramistyczne.Najczęściej okazuje się bowiem, że modularyzacjai testowanie kodu pozwalają szybciej uzyskać poprawne wyniki.Uczmy się swoich narzędzi.W szczególności warto poznaćstandardową bibliotekę swojego ulubionego języka programowaniai możliwości standardowych narzędzi Uniksa.Warto też jak najlepiejopanować możliwości używanego edytora tekstu.Taka nauka znacznieprocentuje w przyszłości [ Pobierz całość w formacie PDF ]

Archiwum