Termin „NoSQL” odnosi się do nierelacyjnych typów baz danych, które przechowują dane w formacie innym niż tabele relacyjne. Do baz danych NoSQL można kierować zapytania używając idiomatycznych interfejsów API, deklaratywnych i strukturalnych języków zapytań i języków wysyłających zapytania na podstawie przykładów (QBE), dlatego są one także nazywane bazami danych „nie tylko SQL”.
Bazy danych NoSQL mają szerokie zastosowanie w aplikacjach internetowych i przechowywaniu dużych ilości danych, ponieważ ich główne zalety to wysoka skalowalność i wysoka dostępność.
Bazy danych NoSQL są również preferowane przez programistów, ponieważ w naturalny sposób nadają się do paradygmatu zwinnego rozwoju, szybko dostosowując się do zmieniających się wymagań. Bazy danych NoSQL umożliwiają przechowywanie danych w sposób bardziej intuicyjny i łatwiejszy do zrozumienia lub zbliżony do sposobu używania danych przez aplikacje – przy mniejszej liczbie transformacji wymaganych podczas przechowywania lub pobierania danych za pomocą API w stylu NoSQL. Co więcej, bazy danych NoSQL mogą w pełni korzystać z chmury, oferując bezprzestojowe działanie.
Bazy danych SQL są relacyjne, a bazy danych NoSQL są nierelacyjne. System zarządzania relacyjną bazą danych (RDBMS) jest podstawą strukturalnego języka zapytań (SQL), który umożliwia użytkownikom dostęp do danych i manipulowanie nimi w tabelach o wysokim stopniu strukturyzacji. To podstawowy model dla systemów baz danych, takich jak MS SQL Server, IBM DB2, Oracle i MySQL. W przypadku baz danych NoSQL składnia dostępu może się jednak różnić pomiędzy poszczególnymi bazami danych.
Aby zrozumieć bazy danych NoSQL, należy znać różnicę pomiędzy RDBMS a nierelacyjnymi typami baz danych.
Dane w systemie RDBMS są przechowywane w obiektach bazy danych zwanych tabelami. Tabela to zbiór powiązanych wpisów danych, składająca się z kolumn i wierszy. Te bazy danych wymagają wcześniejszego zdefiniowania schematu – wszystkie kolumny i powiązane z nimi typy danych muszą być wcześniej znane, aby aplikacje mogły zapisywać dane w bazie danych. Przechowują także dane łącząc różne tabele przy użyciu kluczy, tworząc relacje między wieloma tabelami. W najprostszym przypadku klucz jest używany do pobrania określonego wiersza, umożliwiając jego sprawdzenie lub zmianę.
Z drugiej strony, w bazach danych NoSQL, dane mogą być przechowywane bez wcześniejszego zdefiniowania schematu – oznacza to możliwość szybkiego działania i iteracji dzięki definiowaniu modelu danych w trakcie pracy. Może to nadawać się dla określonych wymagań biznesowych, niezależnie od tego, czy baza danych jest oparta na grafach, kolumnach, dokumentach czy parach klucz-wartość.
Do niedawna relacyjne bazy danych były najczęściej używanym modelem. Nadal są one niezwykle wszechobecne w wielu firmach; jednak różnorodność, szybkość i ilość aktualnie używanych danych czasami wymaga zdecydowanie innego typu bazy danych do uzupełnienia relacyjnej bazy danych. Wywołało to przyjęcie w niektórych miejscach baz danych NoSQL, zwanych również „nierelacyjnymi bazami danych”. Ze względu na ich zdolność szybkiego skalowania w poziomie, nierelacyjne bazy danych mogą obsługiwać duże ilości ruchu, co czyni je wybitnie elastycznymi w wykorzystaniu.
Dla wszystkich firm i organizacji, które chcą szybko wprowadzać innowacje, zachowanie zwinności i ciągła praca w dowolnej skali to podstawa. Bazy danych NoSQL oferują elastyczne schematy, a także obsługę różnych modeli danych, idealnych do tworzenia aplikacji wymagających dużych wolumenów danych oraz minimalnych opóźnień lub czasów odpowiedzi – na przykład do gier online i aplikacji do handlu elektronicznego.
Bazy danych NoSQL zazwyczaj opierają się na nieznormalizowanych danych, obsługując typy aplikacji używające mniejszej liczby tabel (lub kontenerów), których relacje danych nie są modelowane przy użyciu odniesień, lecz raczej jako rekordy (lub dokumenty) osadzone. Wiele klasycznych aplikacji biznesowych w finansach, księgowości i planowaniu zasobów firmowych bazuje na wysoce znormalizowanych danych, co zapobiega anomaliom w danych oraz ich powielaniu. Są to typowe aplikacje, które nie nadają się do wykorzystania bazy danych NoSQL.
Kolejną wyróżniającą cechą baz danych NoSQL jest złożoność zapytań. Bazy danych NoSQL działają doskonale dla zapytań dotyczących jednej tabeli. Relacyjne bazy danych stają się lepszym wyborem w miarę wzrostu złożoności zapytań. Baza danych NoSQL zazwyczaj nie oferuje złożonych złączeń, zapytań podrzędnych i zagnieżdżania zapytań w klauzuli WHERE.
Czasami jednak wybór pomiędzy relacyjnymi i nierelacyjnymi bazami danych nie jest konieczny. W wielu wypadkach firmy wybrały bazy danych oferujące model konwergentny, pozwalający na zastosowanie kombinacji relacyjnych i nierelacyjnych modeli danych. Takie hybrydowe podejście zapewnia większą elastyczność w obsłudze różnych typów danych, a także zapewnia spójność odczytu i zapisu bez pogorszenia wydajności.
Jednym z głównych wyróżników między bazami danych NoSQL i innymi typami baz danych jest to, że bazy danych NoSQL zazwyczaj korzystają z niestrukturalnego magazynowania. Bazy danych NoSQL, opracowane w ciągu ostatnich dwóch dekad, zostały zaprojektowane z myślą o szybkich, prostych zapytaniach, ogromnych ilościach danych oraz częstych zmianach w aplikacjach. Ponadto znacznie ułatwiają one programowanie.
Innym istotnym wyróżnikiem jest fakt, że bazy danych NoSQL korzystają z procesu o nazwie „sharding” w celu skalowania w poziomie, oznaczającego możliwość dodania większej liczby maszyn do obsługi danych na wielu serwerach. Skalowanie pionowe w bazach danych SQL wymaga zwiększenia mocy i pamięci do istniejącego komputera, co może stać się niemożliwe wraz ze wzrostem zapotrzebowania na przestrzeń dyskową.
Skalowanie poziome baz danych NoSQL oznacza, że mogą one obsługiwać ekstremalnie duże ilości danych – nawet przy ciągłym wzroście – w bardziej efektywny sposób. Jeśli skalowanie pionowe można zilustrować na przykładzie dodania nowego piętra do istniejącego domu, skalowanie w poziomie jest jak zbudowanie innego domu tuż obok.
Bezprecedensowa szybkość i skala cyfrowych interakcji i konsumpcji danych widoczna w ciągu ostatnich dwóch dekad wymaga od firm przyjęcia bardziej nowoczesnego, płynnego podejścia do sposobu przechowywania danych i uzyskiwania do nich dostępu. Ponieważ użytkownicy na całym świecie wymagają nieprzerwanego strumienia treści i funkcji, nic dziwnego, że bazy danych musiały się do tego szybko dostosować. Mając to na uwadze, oto kilka kluczowych powodów, dla których programiści wybierają NoSQL/nierelacyjne bazy danych:
Istnieją cztery główne typy baz danych NoSQL:
Oracle NoSQL Database Cloud Service ułatwia programistom tworzenie aplikacji przy użyciu modeli baz danych opartych o dokumenty, kolumny, i pary kluczy-wartości, które zapewniają przewidywalny czas reakcji rzędu pojedynczych milisekund wraz z replikacją danych dającą wysoką dostępność. Usługa oferuje transakcje ACID, skalowanie bezserwerowe, kompleksowe zabezpieczenia i niskie ceny, oparte o faktyczne wykorzystanie.
Oracle NoSQL Database Cloud jest teraz częścią oferty Oracle Cloud Free Tier, obejmującej bezpłatną, ograniczoną czasowo wersję próbną, umożliwiającą eksplorację szerokiego wachlarza usług w chmurze oraz zestawu zawsze bezpłatnych usług, których ważność nigdy nie wygasa.