piątek, 25 października 2013

Przechowywanie załączników a baza danych

Sposób przechowywania załączników - temat rzeka przewijający się przez setki forów i blogów podobnych do tego, aczkolwiek ze względu na pytania ze strony kolegi z Indii opiszę to również tutaj.

Skupmy się na dwóch możliwych (i najczęściej spotykanych) zastosowaniach załączania plików :
  • przechowywanie dokumentów stanowiących integralną część danych (np. wzory podań, wypełnione deklaracje) - mały rozmiar, mało dokumentów, brak przeszukiwania
  • przechowywanie dużych plików (filmy, zdjęcia, muzyka) i/lub intensywne przeszukiwanie

W przypadku pierwszej możliwości nie potrzebujemy zbyt dużych nakładów na utrzymanie bazy danych ani specjalnych zabiegów. Dla niezbyt dużego obciążenia, powinno sprawnie działać. Wadą jest duży rozmiar bazy. W jednym z rozwiązań, które odziedziczyłem, przechowywanie załączników było zrobione właśnie w ten sposób, dokumenty stanowiły 50% objętości bazy. Przy dzisiejszych kosztach storage "zwykły" kontra bazodanowy (wliczając w to, że baza sama z siebie też zajmuje RAM), zdecydowanie taniej wychodzi pierwsza opcja. Plusem rozwiązania jest łatwy dostęp do plików, brak dodatkowej logiki (lub warstwy w aplikacji) zapewniającej ich obsługę.
SQL Server od wersji 2008 posiada wsparcie dla FILESTREAM (trzeba manualnie włączyć). FILESTREAM to nic innego jak zapis pliku fizycznie na dysku, zamiast przechowywania danych bezpośrednio w tabeli w bazie danych. Wymogiem koniecznym jest włączenie tej funkcjonalności w konfiguracji SQL Server. Patrząc na tą funkcjonalność z punktu widzenia programisty, kolumna zawierająca pliki musi być typu varbinary(MAX). Więcej na temat tej funkcjonalności i ograniczeń z nią związanych możecie przeczytać na tej stronie.

W drugim przypadku architektura system jest bardziej złożona. FILESTREAM nie wchodzi w grę, gdyż nie poradzi sobie z dużymi filmami (powyżej 2 GB). Można je teoretycznie ciąć w tle na mniejsze, tylko po co? W takiej sytuacji jedyną opcją jest zapisanie filmu prosto na serwer plików, a w bazie zapisać ścieżkę do pliku i metadane. Należy pamiętać o konieczności zmiany nazwy pliku na GUID/unikalny string, gdyż w innym przypadku ktoś może nam go nadpisać. Gdybyśmy sobie to rozrysowali, to od razu widać, iż dokładamy dodatkową warstwę do systemu, która może spowodować dużo komplikacji (zapewnienie pojemności, czas dostępu, sposób dostępu, kopie zapasowe). Do optymalizacji przeszukiwania metadanych można skorzystać z dodatkowego silnika wyszukiwania jak np. open source'owy Solr. Co prawda to jeszcze troszkę bardziej komplikuje architekturę, ale niesamowicie przyśpiesza przeszukiwanie w dużych zbiorach danych.

Do tego rozwiązania można podciągnąć również pewne rozwiązania dostępne w chmurach jak Amazon S3. Jeżeli jednak korzystamy z usług innego providera niż Amazon, to raczej nie traktowałbym tego jako opcji ze względu na opóźnienia sieciowe.

niedziela, 20 października 2013

Microsoft exam 70-480 - Programming in HTML5 with JavaScript and CSS3

W ramach ścieżki MCSD (Microsoft Certified Solutions Developer): Web Application rozpocząłem przygotowania do egzaminu Programming in HTML5 with JavaScript and CSS3. Szukając materiałów natrafiłem na post http://www.bloggedbychris.com/2012/09/19/microsoft-exam-70-480-study-guide/ który daje bardzo dużo, fajnych linków pomocnych przy nauce. Jak tylko znajdę ciekawsze materiały/więcej/uzupełnienia to dopiszę je do tego posta.

sobota, 19 października 2013

MongoDB @pluralsight - prosto i zrozumiale

Obejrzałem dzisiaj kurs poświęcony MongoDB (tutaj) w celu zebrania informacji z czym to się je i do czego służy. Jako wprowadzenie to całkiem fajny kurs - prosty i zrozumiały, bez zbędnych fragmentów, zagłębiania się w detale czy traktowania oglądającego jak typowego użytkownika.

Cechy MongoDB, które mogą skusić do prób wykorzystania tej bazy:
  • prosta instalacja i konfiguracja
  • łatwa konfiguracja replikacji + skalowalność
  • możliwość wykonywania skryptów w shellu napisanych w JS
  • jeśli sami nie nadamy ID zapisywanemu dokumentowi, MongoDB zrobi to dla nas
  • ciekawe opcje/możliwości przeszukiwania
  • możliwość budowania indeksów w tle (dla porównania w SQL Server dostępne tylko w edycji Enterprise)
  • wieloplatformowość
  • licencje (Apache, komercyjna)

SQL Server nie zastąpi, natomiast może stanowić uzupełnienie projektu, np. do przechowywania danych w postaci hierarchicznej, które jest mało efektywne w SQL Server.

Jeżeli chcecie dowiedzieć się więcej, to zachęcam was do obejrzenia tego kursu. Warto.

Toshiba 39L4333DG - TV z Wi-Fi

Parę dni temu miałem okazję przetestować telewizor Toshiby z wbudowanym WiFi zawierającym pełną przeglądarkę internetową. Nie będę opisywał cech telewizora tylko skupię się na części multimedialnej związanej z siecią. Wrażenia z początkowej konfiguracji - dość prosty interfejs, natomiast sygnału z routera nie chciał złapać. Po namyśle postanowiłem ustawiłem SSID jako widoczny w sieci - ku mojemu rozczarowaniu pomogło.

Żeby skorzystać z możliwości multimedialnych należy zalogować się do cloude'a Toshiby... Dość rozczarowujące, że jest to obowiązkowe. W trakcie rejestracji należy podać datę urodzenia co sugeruje personalizację reklam pod kątem grupy wiekowej, czyli krótko mówiąc zbieranie informacji z pewnych naszych aktywności - inaczej mówiąc śledzenie użytkownika.

Po przebrnięciu przez powyższe kroki nadszedł czas na sprawdzenie aplikacji wbudowanych. I tu nastała dość niemiła niespodzianka. Menu długo się ładuję i nie jest to incydentalny przypadek, a normalne zachowanie, które przy każdej następnej czynności można zaobserwować (np. otwierając aplikacją najpierw przełącza z powrotem na kanał TV, a później dopiero ładuje aplikację.

Weryfikację możliwości sieciowych zacząłem od YouTube'a. Szybkość, sposób działania, przejrzystość i jakość obrazu - bardzo dobre, sterowanie nieskomplikowane.

Następną aplikacją było Skype. Sposób logowania i interfejs użytkownika - przejrzyste i czytelne. Rozczarowuje brak możliwość zadzwonienia bez podpięcia kamery z wbudowanym mikrofonem. Rekomendowana jest kamera od Skype, którą można kupić już za "jedyne" 409 zł.

Trzecią aplikacją był program wyświetlający prognozę pogodę. Aplikacja korzystająca z accuweather umożliwia podgląd bieżącej pogody w danej lokalizacji. Duży plus za możliwość zapisania danej lokalizacji.

Na koniec zostawiłem najciekawszy smaczek - przeglądarkę internetową. Przy braku klawiatury i myszki podpiętej do TV, nawigacja staje się prawdziwą męką. Istnieje możliwość przełączenia kursora tak, żeby nawigowało się kółkiem w pilocie tak jak myszką, ale to prawdziwa masakra - bardzo powoli reaguje i długo się przesuwa. Próba wpisania adresu w przeglądarkę też nie należy do najłatwiejszych (no może bardziej uporczywa niż trudna). Bez klawiatury i myszki, szkoda czasu na próbę wykorzystania urządzenia do przeglądania www.

Czy warto? Za te pieniądze (obecnie w Media Markt ok 1600 zł) ciężko będzie znaleźć coś o podobnym stosunku jakość/cena, jeśli chodzi o możliwości "sieciowe" urządzenia. Moim zdaniem urządzenie nadaję się wyłącznie do sporadycznego wykorzystywania do przeglądania stron www.

UPDATE - WARNING
Jeśli ktoś będzie aktualizował oprogramowanie - zaplanujcie dużo czasu. Pójdźcie na zakupy albo do pracy i jak wrócicie to będzie krótko po. Aktualizacja zabrała ponad 5 godzin! Samo ściągnięcie było bardzo szybko, natomiast instalacja była baaaaardzo powolna. Nie mam pojęcia co tam w tle się dzieje, ale jest to niesamowicie wolne.

UPDATE II - konfiguracja WI-FI
Konfigurując WI-FI można napotkać następujące problemy:
1) problemy z podłączeniem się do AP/routera przy ukrytym SSID - SSID musi być widoczny
2) Hasło - ku zaskoczeniu odniosłem wrażenie, że wielkość liter ma znaczenie
3) samo podłączenie zabiera dłuższą chwilę czasu

niedziela, 13 października 2013

konfiguracja IIS - "symulacja" load balancera na pojedyńczej instancji Windowsa - sesje

Ten post został zainspirowany problemem z konfiguracją serwera produkcyjnego, który z nieznanych (wówczas) przyczyn zaczął się zachowywać jakby działał za load balancerem.

Przyczyną takiego zachowania było ustawienie wartości Maksymalna liczba procesów roboczych większej niż 1 i ustawienie sesji w aplikacji webowej na InProc. Ta wartość mówi o ilości kopii programu uruchomionych w pamięci. Można ją znaleźć w ustawieniach zaawansowanych puli IISa (poniżej zrzut dla IIS 7.5).


Początkowo wydawało mi się, że to samo zło. Aczkolwiek po przemyśleniach doszedłem do konstruktywnego wniosku kiedy może nam się to przydać:

1) Wstępne testowanie aplikacji, która ma działać w przyszłości z load balancerem lub w cloudzie (np. AWS)
2) Weryfikacja aplikacji pod kątem wykorzystywania sesji (np. pod kątem poprawnej implementacji)


W sytuacji kiedy maksymalna ilość procesów roboczych może być większa niż 1 na danej puli, występuje w sytuacji, gdy przechowujemy sesję po stronie bazy danych lub po stronie state server'a. Baza danych ma tą wadę, że wymaga konfiguracji i dodatkowego utrzymania i najczęściej oznacza konieczność utrzymania dodatkowego serwera. W przypadku state server'a możemy go skonfigurować tylko i wyłącznie na jednej maszynie, dlatego przy load balancerze, gdy jeden node przestanie działać, i będzie to ten ze state server'em - to aplikacja przestanie działać. Jeżeli skorzystamy z bazy danych - jesteśmy bezpieczniejsi - tak długo jak długo serwer działa bezproblemowo (np. korzystamy z klastra).

sobota, 12 października 2013

Fakty i mity o wyglądzie i uprawianiu sportu przez programistów

Często poruszanym i wyśmiewanym tematem był ubiór i kondycja fizyczna programistów. Czy każdy programista jest chuderlakiem? Albo grubasem z długą brodą i długimi włosami? Owszem tacy też się zdarzają, ale raczej należą do mniejszości. Współczesny członek społeczności IT zdecydowanie nie przypomina tych Panów. Kiedy w Polsce doszło do transformacji, wraz z masą towaru zza zachodniej granicy, zachodnie koncerny zaczęły otwierać biura w Polsce. Wraz z nimi przybyła również częściowo kultura pracy, której składową jest dbanie o siebie - swój wygląd i formę. Wraz z przyjściem mody na "keep fit" oraz rosnącym wsparciem firm dla utrzymania zdrowia pracowników (np. poprzez Multisport), programiści ruszyli na siłownie i w teren. Liczne grono moich kolegów chodzi na basen, na siłownię, jeździ na rowerze czy biega (bądź wszystko po kolei).  Pozwala to niejednokrotnie zaskoczyć dziewczyny, że programista też potrafi.

Nie tylko moda na zdrowie wdarła się w życie speców od komputerów. Również moda z ulic. Nie jest niczym nadzwyczajnym zobaczyć programistę ubranego modnie. Natomiast ciągle króluje nieśmiertelny i zawsze wygodny zestaw T-Shirt + jeansy :-)

Obiecuję, że następne posty będą bardziej techniczne. Tym pierwszym wpisem chciałem powalczyć ze stereotypami.