5 sierpnia 2010

"Idziemy na zachód" z NoSQL

Definiując noSQL warto zaznaczyć, że nie chodzi tutaj o niniejszy jakiś żart. O ile specjaliści od T-SQL i posiadacze stu certyfikatów ORACLE myślą inaczej, są rekomendacje płynące chociażby z digg.com, facebook.com, yahoo,com ale od zawsze z google.com potwierdzające, że trend noSQL ma sens w przetwarzaniu i składowaniu dużej ilości danych. Mając na myśli dużej mam na myśli setki Gigabahjtów, Terabajty i Petabajty ... i nie jest to wcale SF :-) Problem jak zwykle dotyczy skali i oczywiście dotyczy grupowania i złączania danych z różnych źródeł i baz. Tutaj składnia ... JOIN ... może okazać się nieco zasobożerna i nie na miejscu ;-) W miejsce, gdzie nie można robić SELECT i LIMIT + OFFSET + JOIN lub zwyczajne zapytania wykonują się zbyt długo, a CRON + memcached nie wystarczy potrzebne są bazy danych noSQL do składowania i mechanizmy Map Reduce do agregacji i łączenia danych dla osiągnięcia pożądanych wyników. Oczywiście że nie istnieje jedna baza do wszystkich zastosowań ... oto pomocnik w wyborze bazy noSQL.




Od 2001 roku, od kiedy to przyszło mi korzystać produkcyjne z bazy danych mySQL nie miałem pojęcia, że używam idei noSQL. Moja baza danych to było składowisko danych pomiarowych z różnej maści mierników elektronicznych oraz różnego typu alarmów, przy przekraczaniu zakresów. Napisałem wspólnie z kolegą z zespołu sterownik do składowania danych binarnie, ale z ideą podobną jak DBASE IV. Okazało się, że silnik i sterownik naszej bazy świetnie się sprawdzał i działał zgodnie z założeniami w wielowątkowym środowisku. Jednak potrzeba przetwarzania danych zmusiła mnie do przechowywania danych w bazie SQL, aby wykonywać prościej rankingi na danych. Wówczas ideę złączeń należało po prostu odrzućić ... nie będę tłumaczył powodów, dla których mySQL 3.28.x się wtedy zamulał przy złożonych JOINach ;-) Ważne, że założenie to było słuszne jak na rok 2001 i PHP 3.x.

Patrząc z perspektywy czasu uświadomiłem sobie, że utworzyłem w mySQL coś takiego jak mój własny noSQL. Składowałem dane w kolumnach, ale również utworzyłem superkolumny z pól tekstowych, w które wpisywałem oddzielone identyfikatorami wartości powiązanych danych. Dane były wiązane we wręcz prostacki sposób, ale taka metoda pozwalała - zamiast stosowania JOINów - przetwarzanie źródłowych danych z pomiarów do postaci pośredniej przez 6h a nie 11h. Jak na tamte czasy i koszty hostingu/dedykowanych serwerów było to znacząco optymalne podejście.

Współcześnie widzę trend dość podobny (z ang. structured storage) i równie banalny w zastosowaniu tzn. używanie "superkolumn" w składowaniu danych w ramach tej samej kolumny. Dodawanie zamiast relacji niejako "nadmiarowych" i zarazem powiązanych danych w wierszu, które podlegają wydajniejszemu wyszukiwaniu niżeli tradycyjne metody z baz SQL. Nie zawsze mogą konkurować z zewnętrznym indeksem opartym na rozwiązaniu t.j. Apache Lucene.

Rozwiązań serwujących ideę noSQL jest sporo i po pełną listę zapraszam do odpowiedniego źródła, któro porównuje i próbuje skatalogować bazy danych noSQL.

9 lipca 2010

OpenStack - nowy standard w chmurach

Okazuje się, że ACKSPACE i NASA zaczęli już w 2009 roku interesować się w technologiami komercyjne służącymi do szeroko pojętej "wirtualizacji" takich firm jak: CITRIX, DELL, NTT DATA, RIGHTSCALE. Tak się składa, że gdy takie potęgi zaczynają się w coś "wgryzać" ;-) to może skutkować zwyczajnie na świecie wartościowym produktem Open Source.

Dzisiaj przywitajmy efekt owocnych prac ACKSPACE oraz NASA OpenStack, który wg. założeń ma spełniać wymagania stawiane chmurom i utworzyć standard w automatyce/wirtualizacji farm serwerów. Uproszczenie, jakiego OpenStack ma dokonać dotyczy API zarówno programistów aplikacji, jak i administratorów. Admini nie będą musieli się wysilać przy awarii oprogramowania, a programiści będą mogli w kilka kliknięć podnieść sobie farmę maszyn. I jest to NOWOŚĆ, bo admini mogą czuć się nieco niepotrzebni szczególnie, gdy wszyscy zaczynają produkcyjnie używać Ubuntu i instalują a nie kompilują :-) Pozornie niepotrzebni, bo wiadomo, że jeśli chodzi o ustawianie np: "load balancing" lub innych tematów sprzętowo-systemowych, to admini są po prostu niezbędni. OpenStack daje nam tutaj wybór, kiedy nie musimy zatrudniać kilku adminów, aby ogarnąć zmiany infrastrukturalne w systemach i sprzęcie. Wyłącznie wtegy, gdy nasza aplikacja na serio wykorzystuje chmury ;)

Ci, którzy korzystają z np: chmury Amazona lub innych chmur prywatnych wiedzą, że bardzo wygodne jest dorzucenie RAMu lub kilku procesorów do maszyny, która niespodziewanie jest silnie obciążona. Równie dobrze można dodać do infrastruktury w sposób nieskomplikowany kolejny wymagany serwer dla zbalansowania obciążenia. Oczywiście, przechowywanie danych to stały problem zasobów dyskowych, które w chmurze mogą być zbyt wolne w operacjach IO. I tego problemu chmura nie rozwiąże za nas sama, tutaj potrzeba nieco pokombinować.

Każda infrastruktura aplikacji internetowej jest w pewnym sensie powtarzalna, wówczas warto zastanowić się nad jej uproszczeniem i pokłonić się do Open Stack. Zysk z tej decyzji jest GWARANTOWANY. Przekonał się m. in. o tym "Pan gąbka" z naszaklasa.pl, kiedy brakowało fizycznej możliwości obsłużenia sporej fali ruchu internetowego kilka lat przed popularnością w kraju Faceboook.com.

Istnieją kwestie dotyczące marketingu w Cloud computing, że IaaS i SaaS daje nam spore możliwości ... owszem, jest to zaleta chmur, ale odnoszę wrażenie, że nie każdą firmę stać na doświadczenie produkcyjne przejścia na chmury. Świadomość używania chmur co prawda wzrosła od kilku lat, ale programiści/architekci nie zawsze mają w tyle głowy taką opcje w swojej aplikacji, co skutkuje przepisywaniem funkcjonalności często OD ZERA.

Na dzień dzisiejszy pozostaje alternatywa: utworzyć chmurę prywatną i panować nad nią ew. kupić zasoby w jakiejś chmurze i bawić się w przerabianie aplikacji. Każdy dzisiaj może za kilkadziesiąt USD kupić sobie 64 CORE + 64 GB RAM (!!!) i kilka dni testować, czy jego produkt jest przygotowany do takiej migracji. Ba, można zatrzymać taką maszynę i wówczas naliczane koszta są bardzo małe (mam na myśli kilka centów dziennie).





Problem polega na tym, że widzę wiele PLUSÓW a jeden MINUS (storage dla baz danych) ... może mnie oświecicie co jeszcze jest minusem w chmurze z OpenStack według Was ?

4 lipca 2010

Skulpt - gdy potrzebujesz interpretatora Python w przeglądarce

Jak w temacie - wykorzystaj Skulpt - gdy potrzebujesz interpretatora Python w przeglądarce. To ma nie tylko walory edukacyjne w tematyce symulacji języka Python wbudowanej w przeglądarkę ...