Skalowalne bazy SQL

Bazy danych SQL postrzega się jako bardzo kosztowne w rozbudowie. Opinie, że skalują się one tylko w górę, co jest rzeczywiście mało ekonomiczne, są jednak przesadzone. Skalowanie bazy SQL wszerz jest możliwe i, co więcej, przynosi sporo korzyści.

Szybko zmierzamy w kierunku rzeczywistości, w której w analizie biznesowej będzie się wykorzystywać dane o klientach pochodzące z działalności operacyjnej oraz pozyskane z mediów społecznościowych. Firmy będą zainteresowane analizowaniem tych danych i podejmowaniem na ich podstawie decyzji w czasie rzeczywistym.

Wymaga to stosowania platform skalowalnych wszerz (scale out), które będą w stanie przetwarzać duże ilości danych zmieniających się w szybkim tempie. Aby takie rozwiązanie było ekonomiczne, za infrastrukturę powinien służyć standardowy sprzęt lub chmura publiczna. Organizacje mają kilka opcji do wyboru: bazy NoSQL, NewSQL czy platformę Hadoop. Każda z nich rozwiązuje inne wyzwania związane z przetwarzaniem danych. Należy więc dysponować solidną wiedzą o wykorzystaniu tych rozwiązań, aby wybrać właściwą.

Zobacz również:

Koszty skalowania baz SQL w górę (scale up) są bardzo wysokie. Natomiast wdrożenie rozwiązania skalowalnego wszerz, z rozsądnym balansem między pamięcią RAM a nośnikami flash może przynieść istotne korzyści. Szczególnie, że do budowy takiego środowiska można użyć typowego sprzętu i dokładać kolejne węzły, zamiast budować jedną, bardzo wydajną maszynę. Ostatnie lata to okres, kiedy mówiło się, że bazy SQL nie skalują się wszerz. Takie poglądy pojawiły się wraz z rosnącą popularnością baz danych NoSQL. W tym czasie jednak powstały rozwiązania pokazujące, że rzeczywistość jest nieco inna. Dlatego warto przyjrzeć się nowej generacji skalowalnych, rozproszonych baz SQL. Dla przykładu można wymienić dostępne na rynku InfiniSQL, ClustrixDB czy F1 wykorzystywaną przez Google.

Analityka czasu rzeczywistego

Branża Big Data zaczyna przesuwać swoją uwagę od analizy dużych zbiorów danych w kierunku analityki w czasie rzeczywistym. Dostęp do bieżących danych pozwala zbudować przewagę nad konkurencją i przynosi realne korzyści biznesowe. Bazy danych SQL skalowalne wszerz, które są w stanie realizować takie działania na „żywych” danych operacyjnych, to istotny element, który może wyzwolić upowszechnienie się takich rozwiązań. Pomysłowe wykorzystanie metod przetwarzania kwerend w pamięci operacyjnej w połączeniu z macierzami dyskowymi zbudowanych na bazie nośników SSD pozwala osiągnąć bardzo wysoką wydajność bez potrzeby stosowania specjalistycznych rozwiązań.

Tacy giganci, jak Google czy Facebook, opublikowali wyniki swoich badań pokazujące, że bazy danych SQL nie tylko skalują się, ale że często jest to najlepszy wybór do przetwarzania danych. Przykładowo, wykorzystywana przez Google baza F1 SQL obsługująca usługę Adwords umożliwia znacznie łatwiejsze tworzenie aplikacji do realizowania równoległych zadań OLTP i OLAP. To z kolei przekłada się. m.in. na ograniczenie kosztów zatrudniania specjalistów z tego obszaru. Poza tym przedstawiciele Facebooka wyrazili opinię, że realacyjne bazy danych są bardzo ważne w analityce. To przekonało wielu malkontentów, że warto promować rozszerzenia Hadoopa, umożliwiające współpracę tej platform z bazami SQL.

Łatwa rozbudowa

Bazy danych SQL typu scale out można łatwo skalować liniowo poprzez dodawanie kolejnych węzłów do klastra, nawet jeśli w tym czasie jest on intensywnie wykorzystywany. To oznacza również, że takie operacja można realizować bez zmian w kodzie, aktualizacji bazy danych czy wymiany sprzętu, na którym działa aplikacja. Każdy nowy węzeł może otrzymywać i przetwarzać transakcje wraz z rozbudową klastra.

Ciekawą cechą tego typu baz SQL jest możliwość przenoszenia kodu bazy danych do węzłów, gdzie są przechowywane dane, zamiast przenoszenia danych. To podejście ogranicza ilość danych przesyłanych w obrębie klastra. Wraz ze wzrostem liczby zapytań prowadzi to do ograniczenia nadmiernego ruchu w klastrze i pozwala na liniowe skalowanie bazy danych. Przy okazji w ten sposób zapewnia się, że tylko jeden węzeł zapisuje w ramach określonego zbioru danych, co ogranicza niekorzystne zjawisko konkurencyjnego dostępu do tych samych zasobów. W tradycyjnych bazach danych, aby zachować integralność danych, każde zadanie blokuje obszary danych, na których operuje. Przy dużej liczbie konkurencyjnych zadań prowadzi to do spadku wydajności.

Eliminacja wąskich gardeł

Kolejny problem, który rozwiązano w skalowalnych bazach SQL to log transakcyjny. Bywa on wąskim gardłem, ponieważ tradycyjne bazy zapisują w nim wszystkie przetwarzane rekordy, zanim dana kwerenda nie zostanie ukończona. Przy błędnej konfiguracji lub awarii może to prowadzić do puchnięcia loga transakcyjnego, którego wielkość może przekraczać rozmiar samej bazy danych. To prowadzi do spowolnienia wszelkich operacji zapisu w bazie. Nawet nośniki SSD nie pomogą w takiej sytuacji.

Wysoka dostępność w chmurze

Organizacje oczekują, że ich aplikacje produkcyjne będą zawsze dostępne, co umożliwi nieprzerwaną realizację procesów biznesowych. Jeśli chmura ulegnie awarii, co może się zdarzyć, biznes powinien korzystać z bazy danych, którą można szybko przywrócić do działania bez utraty danych. Skalowalne wszerz bazy danych SQL mają wbudowane solidne funkcje wysokiej dostępności, które dbają o to, aby przechowywać kilka kopii danych, dzięki czemu nie dojdzie do ich utraty.


TOP 200