Category Archives: Konkursy

Wyniki konkursu urodzinowego

Właśnie skończyłem sprawdzać nadesłane rozwiązania i przyszedł czas na publikację wyników konkursu. Zanim to jednak zrobię chciałbym zakomunikować pewną zmianę w jego przebiegu:

Z uwagi na to, że aktywny udział w konkursie wzięły jedynie trzy osoby, to postanowiłem wyróżnić je wszystkie.

Mam nadzieję, że taka zmiana wam nie przeszkadza i jesteście w stanie przyjąć nowe reguły bez większych zastrzeżeń. Tym bardziej, że przygotowanie rozwiązań wymagało pewnej ilości czasu i (przede wszystkim) chęci 🙂

W przypadku gdyby powstały w waszych głowach jakieś  „ale”, to pamiętajcie o punkcie 10 regulaminu:

„10. Decydujący głos w przypadku kwestii spornych i interpretacji regulaminu ma organizator konkursu”

Jeżeli braliście udział w konkursie, to nie myślcie, że możecie odetchnąć spokojnie. O ile nagrody za pierwsze trzy miejsca są takie same, to pomysł nagrodzenia wszystkich zrodził się zaledwie kilka godzin temu. Oznacza to, że:

Trzeci egzemplarz książki Beginning Microsoft SQL Server 2012 Programming zmówię dopiero dzisiaj.

W wolnym tłumaczeniu można przyjąć, że osoba, która zajęła 3 miejsce będzie musiała trochę poczekać z odbiorem nagrody. Generalnie przesyłki z amazon-u dochodzą do mnie w około 3 tygodnie, tak więc dodając do tego czas wysyłki pocztą otrzymujemy około miesiąca. Sądzę, że biorąc pod uwagę naszą „drobną zmianę regulaminu”, to czas oczekiwania jest jak najbardziej do przyjęcia 🙂 Pozostałe osoby oczywiście otrzymają książki na czas.

Przejdźmy więc do wyników

Jak wspomniałem wcześniej w konkursie aktywnie wzięły udział trzy osoby. Tabela z wynikami zawiera więcej wpisów, gdyż jedna z nich przesłała kilka rozwiązań:

LP Imię i nazwisko uczestnika Nazwa rozwiązania* Logical Reads CPU Time Elapsed Time
1 Arkadiusz Ćwiek MD5 2610 361 396
2 Arkadiusz Ćwiek SHA2_256 3566 343 378
3 Piotr Trychta Tradycyjny indeks 4452 344 492
4 Arkadiusz Ćwiek SHA2_512 5523 546 392
5 Arkadiusz Ćwiek Binary 5605 621 428
6 Arkadiusz Hahn SHA1 12288 203 376

Podczas oceny rozwiązań brałem pod uwagę zarówno czas procesora jak i ilość odczytanych stron z danymi. Każde zapytanie odpalałem 3 razy zapisując najlepszy wynik.

Analizując tabelę można zobaczyć, że najbardziej optymalnym rozwiązaniem było wyliczenie sumy MD5 w celu jej użycia do podrównania wartości w obu zbiorach. Arek Ćwiek ograniczył w ten sposób ilość operacji dyskowych związanych z odczytem danych, tym samym skrócił czas oczekiwania na wynik.

Z drugiej strony tabeli znalazł się Arek Hahn, którego rozwiązanie polegało na wyliczeniu sumy SHA1. W tabeli powyżej widać, że jest one najszybsze pod kątem zużycia czasu procesora. Niestety ilość odczytów w tym wypadku jest dosyć spora.  Sam czas wykonania może się zmieniać z zależności od tego czy czytamy z dysku, czy z pamięci RAM. Ponieważ zapytanie było odpalane trzykrotnie, to dwa ostatnie SELECT-y użyły puli buforów i były szybkie. Z uwagi na spore IO musiałem go jednak sklasyfikować na dole zestawienia. Szkoda, bo pomysł był na miarę pierwszego miejsca …

W środku zestawienia znalazł się Piotr Trychta, który posłużył się tradycyjnym indeksem niegrupującym położonym na wszystkich kolumnach tabeli.

Jeżeli chcielibyście poznać szczegóły rozwiązań, to skrypty wszystkich zawodników można pobrać pod tym linkiem.

Podsumowanie

Pierwszy konkurs urodzinowy już za nami. Tym z was, którzy odważyli się przedstawić swoje pomysły na rozwiązanie gratuluję i jednocześnie informuję, że postaram się dzisiaj z wami skontaktować w celu ustalenia adresu do wysyłki książek.

Czy będzie podobny konkurs za rok?

Prawdopodobnie TAK. Ciekawe, czy duże prawdopodobieństwo wygranej podziała na was mobilizujaco? 🙂

 

Reklamy

Konkurs urodzinowy – ostatnie dni na oddanie rozwiązań :)

Jeszcze tylko kilka dni pozostało na oddanie rozwiązań konkursowych. Zgodnie z regułami do 26 października 2012 można przesyłać skrypty z kodem, a do 28 października 2012 ja mam czas na sprawdzenie waszych odpowiedzi.

Przyznam się, że patrzałem ostatnio w statystyki strony i pobrań bazy konkursowej było całkiem sporo:

Pomimo tego, nikt nie przesłał jeszcze rozwiązania. Jakby nie patrzeć, póki co, szansa na wygranie książki jest naprawdę duża (tym bardziej, że do wygrania są dwie) 🙂

PS. Wszystkie nadesłane zgłoszenia potwierdzę mailem – tak abyście wiedzieli, że na 100% doszło.

Konkurs urodzinowy czas zacząć !!!

Kilka dni temu opublikowałem wpis, w którym zapowiedziałem rozpoczęcie konkursu T-SQLowego. Miało to nastąpić w niedzielę 7 października 2012 około południa, a więc mniej więcej teraz 🙂

Na czym polega zadanie?

Wyobraźmy sobie, że jesteśmy odpowiedzialni za import danych teleadresowych klientów do odpowiedniej tabeli w naszej  bazie danych. Tabela ta nazywa się dbo.tblCustomers i ma następującą strukturę:

Oprócz tabeli dbo.tblCustomers mamy tabelę przejściową import.dboCustomers, w której umieściliśmy rekordy do zaimportowania:

Tabela z danymi klientów ma jednak pewien feler – jest troszkę duża. Na początek można założyć, że ma około 250 tysięcy rekordów. Nasze zadanie polega na wylistowaniu wszystkich klientów z tabeli importowej, którzy już istnieją w naszej bazie i których nie musimy dopisywać do systemu.

Wyznacznikiem pokrycia rekordów jest wystąpienie identycznych wartości wszystkich kolumn w obu tabelach za wyjątkiem CustomerId i tempIdentifier. Oznacza to, że jeżeli dla klienta z tabeli import.tblCustomers istnieje ktoś w tabeli dbo.tblCustomers, kto ma identyczne imię, drugie imię, nazwisko, płeć, stan cywilny, datę urodzenia i oba pole adresowe, to powinniśmy go wylistować.

Zasady konkursu

  1. Osoby biorące udział w konkursie zgadzają się na publikację swojego imienia i nazwiska (lub ewentualnie nick-u) w tabeli z wynikami
  2. Skrypt konkursowy należy dostarczyć na mój adres e-mail (można go znaleźć w zakładce o mnie i o blogu) do 26 października 2012, a temat wiadomości powinien zawierać frazę „Konkurs T-SQL”
  3. Ogłoszenie wyników nastąpi 28 października 2012
  4. Skrypt konkursowy powinien działać na SQL Server 2012
  5. Wygrywa ten skrypt wybierający dane, który okaże się najszybszy, a w szczególności zajmie najmniej czasu procesora oraz odczytów/zapisów dysku (SET STATISTICS TIME ON, SET STATISTICS IO ON)
  6. Pisząc rozwiązanie można używać wszelkiego rodzaju konstrukcji T-SQL za wyjątkiem konstrukcji wymienionych w pkt. 8. W szczególności można tworzyć indeksy, dodawać kolumny, partycjonować je, tworzyć i procedury, funkcje, używać tabel tymczasowych …
  7. Nie są dozwolone konstrukcje, które trwale połączą dane w celu ich szybszego porównania, np. nie można utworzyć widoku indeksowanego łączącego obie tabele oraz używać kluczy obcych pomiędzy tabelami
  8. Do badania wydajności zapytań pod uwagę będzie brana jedynie część wybierająca dane, np. jeżeli w skrypcie będzie utworzenie indeksu oraz instrukcja SELECT, to czas procesora i liczba odczytów/zapisów będzie badana jedynie dla instrukcji SELECT
  9. Nagrody zostaną przesłane pocztą za potwierdzeniem odbioru
  10. Decudujący głos w przypadku kwestii spornych i interpretacji regulaminu ma organizator konkursu

Nagrody

Do wygrania są dwie książki Beginning Microsoft SQL Server 2012 Programming, których autorami są Paul Atkinson i Robert Vieira.

Przykładowe dane

Przygotowaną przez mnie bazę danych w formacie SQL Server 2012 z przykładowymi danymi można pobrać pod adresem:

http://www.filedropper.com/konkursfull20121007b

Powodzenia !!! 

IT Camp Gdańsk – wrażenia po i materiały do pobrania

Wczoraj miałem okazję uczestniczyć w konferencji IT Camp Gdańsk: Usługi IT w Dynamicznym Centrum Danych.

Podczas konferencji były poruszane tematy związane z planowaniem wirtualnych środowisk produkcyjnych, zarządzania nimi oraz automatyzacji zadań administracyjnych.

Wart wspomnienia jest fakt, że prelegenci byli na naprawdę wysokim poziomie. Grzegorz Piotrowski i Marek Pyka są nie tylko biegli w tematach związanych z chmurą prywatną, ale także potrafią przekazać swoją wiedzę w przystępny sposób. Prowadzącym udało się już od pierwszej sesji sprowokować dyskusję i sprawić, że zadawanie pytań oraz dodawanie własnych spostrzeżeń związanych z wdrożeniem usług wirtualizacyjnych stało się normą.

Subskrypcja technet

W ramach każdego z IT Camp-ów jest rozgrywany konkurs Speaker Idol. Skuszony dość fajnymi nagrodami postanowiłem wziąć w nim udział. Ewidentnie było warto wystąpić, gdyż od wczoraj jestem posiadaczem subskrypcji technet. Zdjęcie pudełka zamieszczam obok 🙂

Przedstawianą przeze mnie  prezentację pod tytułem „Wirtualizacja baz danych a dynamic memory” można znaleźć w części Materiały do pobrania mojego blog-a.

Imagine Cup, IT Challenge – potwierdzenie uczestnictwa i półfinały

W październiku 2011 chciałem was namówić do udziału w  konkursie  Imagine Cup, a dokładniej kategorii IT Challenge. Nie wiem ilu z was dało się przekonać, ale ja zarejestrowałem się, wziąłem udział w pierwszym z quizów i uzyskałem odpowiednią ilość punktów by przejść dalej. O moich wrażeniach podczas rejestracji i w trakcie wypełniania testu możecie przeczytać w poniższych postach:

Imagine Cup, IT Challenge – a miałem być tyko kibicem

Imagine Cup, IT Challenge – pierwszy quiz za mną

No dobrze ale to było w październiku …

Jak to zwykle bywa oficjalne wyniki podawane są po zakończeniu każdej z rund konkursu.

Niedawno zakończyła się runda pierwsza, a ja dostałem powiadomienie mailowe o tym, że zostałem zakwalifikowany do półfinałów.

Co więcej z witryny konkursu mogę już pobrać certyfikat potwierdzający ten fakt, z czego postanowiłem skorzystać 🙂

Samo potwierdzenie nie było jedyną częścią wiadomości email, na którą czekałem. W mailu znalazł się też adres URL pod jakim jest dostępne studium przypadku związane z kolejnym zmaganiem w konkursie.

Niestety nie mogę przytoczyć co jest w nim zawarte. Mogę natomiast powiedzieć, że z każdym rokiem jest ono trudniejsze, rozwiązując je zawsze uczę sie czegoś nowego, a satysfakcja z tego, że ktoś sprawdzi mój pomysł i powie „to będzie działać” jest ogromna. Nawet jeżeli nie będę jednym z sześciu wybranych 🙂