Dzień 2
The Most Persistent Microsoft SQL Server Myths (and Why They Are Wrong)
Panel dyskusyjny prowadzony przez Macieja Pileckiego.
Kolejny panel dyskusyjny prowadzony przez Maćka – rzecz jasna nie mogłem sobie odpuścić, szczególnie, że temat interesujący…
1. Table variables remain only in memory
Okazało się, że to tak nie do końca jest :). Opis tabeli ląduje w tempDB, a dane jeśli się mieszczą, to mogą siedzieć w cache’u, ale to nie znaczy, że nie lądują też w tempDB. Dodatkowo dowiedziałem się, że zmienne tablicowe (nie pamiętam, czy dotyczy to również tabel tymczasowych) “przeżywają” ROLLBACK.
2. Ciekawe typy danych, które różnie są interpretowane
- Timestamp – nie ma nic wspólnego z czasem, jest wewnętrznym identyfikatorem oznaczającym wersję wiersza.
- Bit – to NIE jest to samo co boolean.
- Vardecimal – tu niestety nie pamiętam o co chodziło…
3. Clustered Index == Primary Key
To akurat wiem, że nieprawda :).
4. Clustered Index == Physical Order
To też wiem. To nie prawda. Clustered Index == Logical Order.
5. Group by ensures order
Tylko się nie zawsze zgadza, jak się niektóre operacje zrównoleglą.
6. Execution plans == query performance
Jedynie SQL Profiler prawdę Ci powie. Tak to zarówno IO Statistics, jak i plan wykonania czasami “kłamią”. W profilerze na początku najlepiej zwrócić uwagę na czas, CPU, liczbę odczytów, zużycie pamięci.
7. Identity columns are unique
Zwykle tak, ale jak się je zresetuje, to już różnie bywa.
8. Z której godziny dane znajdą się w backupie rozpoczętym o 3:00, a zakończonym o 3:30
Na pewno nie z 3:00. Prawdopodobnie z okolic 3:29, w każdym razie blisko 3:30.
9. 64-bits servers are faster :D
10. Max server memory setting
Chodziło o to, że limit odnosi się tylko do buffer pool
11. To go beyond 4GB we need 64-bits
12. Index Views are Enterprise Edition only
Są też w wersji Express, tyle że optymalizator zapytań skorzysta z nich tylko w wersji Enterprise.
Oprócz tego dodatkowa wiedza wyniesiona z sesji:
- Unique index na kolumnie z NULLami
- SQL 2008 – Filtered Index
- SQL 2005 – Indexed View
- Zmienne tablicowe (w przeciwieństwie do tabel tymczasowych) nie posiadają statystyk
- Nieprawidłowe statystyki można podejrzewać, jeżeli jest duża różnica pomiędzy estimated cost i actual estimated cost.
- No more BACKUP LOG WITH TRUNCATE ONLY in SQL 2008
- Nauczyłem się fajnego żartu SQLowego:
- How much RAM does SQL Server need?
- MORE!!! :D
Ogólne wrażenie po sesji bardzo pozytywne. Jest jeszcze więcej takich mitów, sam kilka mam w głowie. Generalnie takie mity powinno się jak najczęściej obalać.
Tough Lessons Learned As a Software Project Manager
Gregg Boer
Pan z dużym bagażem jako PM, również z doświadczeniami niezrealizowanych projektów prezentował swoje przemyślenia. Było zabawnie i przekazał dużo istotnych informacji, które jak to zwykle na takich sesjach – niby są oczywiste, tylko gorzej w praktyce…
- Pracowanie nad najważniejszą rzeczą jest bardzo trudne.
- Trzeba zawsze mieć w tyle głowy cel całego projektu.
- Priorytety
- Jeśli ich nie dostajemy – ktoś źle wykonuje swoją pracę.
- Jeśli ich nie wymagamy – sami źle wykonujemy pracę.
- Rola PMa to często umiejętność
- Obrony decyzji rezygnacji z danej funkcjonalności
- Obrony decyzji realizacji danej funkcjonalności
- Często przy realizacji danego kawałka systemu zapominamy PO CO to jest realizowane.
- Krótkie/agresywne deadline nie motywują!!!
- Trzeba rozumieć znaczenie i wykorzystywanie estymat.
- Jeśli developer potrzebuje 2 dni, żeby ocenić, że pracochłonność zadania wynosi 3 to źle.
- Jeśli pytamy kogoś ile coś będzie kosztować, mówimy o kwotach rzędu 300000$ i chcemy odpowiedź w 15 sekund, to bardzo źle.
- Rola PMa – zaprezentować i umieć obronić rzeczywisty harmonogram.
- Większość ryzyka w projektach jest znana i NIE zarządzana.
- Należy osobom realizującym dane zadnie zadawać pytanie: “Co mogłoby się stać, co przeszkodziłoby Ci w realizacji tego zadania?”.
- PM ma być szanowany, niekoniecznie popularny.
From the Trenches: Using Architectural Skills to Increase Solution Adoption Success Rates
Jim Wilt
Pan mówił o kilku elementach, na które warto zwrócić uwagę przy realizowaniu systemów:
- Należy edukować i szkolić klienta.
- Strategia powinna być skoncentrowana na problemie i jego rozwiązaniu, a nie na konkretnej technologii.
- Powinniśmy się starać przekonać klienta, że to On jest właścicielem projektu i w ten sposób przesunąć ponoszone ryzyko na niego.
- Need Approach Benefit Considerations – zwięzły sposób przekazywania idei – powinno się mieścić na jednej stronie.
- StrategyMap (Norton & Kaplan) – do rozpoznania…
Understanding Code Extensibility
Jason Olson
Po zobaczeniu o czym będzie sesja (reguły SOLID) wyszliśmy po 15 minutach. To już znamy.
Parallel Computing APIs with the Microsoft .NET Framework 4
Mark Michaelis
Tu trafiłem dopiero w połowie i niestety to co mnie najbardziej interesowało (System.Threading.Tasks) zostało już omówione, więc z nowych rzeczy wyniosłem tylko:
- Lazy
- ConcurrentCollecitons
- CHESS – narzędzie Microsoft Research do testowania aplikacji wielowątkowych.
Creating REST Enterprise Mashups Using Microsoft Office SharePoint Designer 2007
J.R. Arredondo, Dave Pae
Na tę sesję wybraliśmy się tak totalnie bezmyślnie… I okazało się, że to był strzał w 10. Korzystając z mocy, jaką dają WebServicy i SharepointDesignera Panowie w 30 minut wyklikali aplikację, która łączyła ze sobą dane z bazy danych, Twittera, serwisów pogodowych, ładnie wyglądała i prezentowała jeszcze odpowiednie informacje na GoogleMaps. Wszystko dostępne za darmo (zarówno Designer, jak i WSS, które wystarczało…)
Nie wiem jakie możliwości ma SharePoint i pewnie mało prawdopodobne, żebym szedł w kierunku dowiadywania się, ale warto było zobaczyć takie coś w praktyce. Jak znajdę chwilę to się tym pobawię, czyli najprawdopodobniej nigdy.