Jak wytłumaczyć babci różnicę między SQL a NoSQL

Jak wytłumaczyć babci różnicę między SQL a NoSQL

Jedną z najważniejszych decyzji, jakie podejmuje programista, jest wybór bazy danych. Przez wiele lat opcje były ograniczone do różnych opcji relacyjnych baz danych obsługujących Structured Query Language (SQL). Należą do nich MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 i wiele innych.

W ciągu ostatnich 15 lat na rynku pojawiło się wiele nowych baz danych opartych na podejściu No-SQL. Należą do nich sklepy typu klucz-wartość, takie jak Redis i Amazon DynamoDB, bazy danych z szerokimi kolumnami, takie jak Cassandra i HBase, magazyny dokumentów, takie jak MongoDB i Couchbase, oraz bazy danych wykresów i wyszukiwarki, takie jak Elasticsearch i Solr.

W tym artykule postaramy się zrozumieć SQL i NoSQL bez wchodzenia w ich funkcjonalność.
Poza tym po drodze będziemy się dobrze bawić.

Wyjaśnianie języka SQL babci

Babciu, wyobraź sobie, że nie jestem Twoim jedynym wnukiem. Zamiast tego mama i tata kochali się jak króliki, mieli 100 dzieci, potem adoptowali 50 kolejnych.

Więc kochasz nas wszystkich i nie chcesz zapomnieć żadnego z naszych imion, urodzin, ulubionych smaków lodów, rozmiarów ubrań, hobby, imion małżonków, imion potomstwa i innych bardzo ważnych faktów. Jednak spójrzmy prawdzie w oczy. Masz 85 lat i stara dobra pamięć po prostu nie może sobie z tym poradzić.

Na szczęście, będąc najmądrzejszym z twoich wnuków, mogę ci pomóc. Więc przychodzę do twojego domu, wyjmuję kilka kartek papieru i proszę, żebyś upiekła kilka ciasteczek, zanim zaczniemy.

Na jednym arkuszu papieru tworzymy listę o nazwie „wnuki". Każdy wnuk zapisane z kilkoma istotnymi informacjami o nim, w tym unikalnym numerem, który teraz wskaże, w jaki sposób wnuk on jest. Ponadto, ze względów organizacyjnych, wypisujemy nazwane atrybuty na górze listy, abyśmy zawsze wiedzieli, jakie informacje zawiera lista.

id
Nazwa
urodziny
Ostatnia wizyta
rozmiar ubrań
ulubione lody
przyjęty

1
Jimmy
09-22-1992
09-01-2019
L
miętowa czekolada
fałszywy

2
Jessica
07-21-1992
02-22-2018
M
wyboista droga
prawdziwy

…kontynuujemy listę!

Lista wnuków

Po chwili wszystko rozumiesz i prawie skończyliśmy z listą! Jednak zwracasz się do mnie i mówisz: „Zapomnieliśmy dodać miejsca dla małżonków, hobby, wnuków!” Ale nie, nie zapomnieliśmy! Wynika to dalej i wymaga nowej kartki papieru.

Wyciągam więc kolejną kartkę papieru i na niej wywołujemy listę Małżonkowie. Ponownie dodajemy ważne dla nas atrybuty na początek listy i zaczynamy dodawać w rzędach.

id
wnuk_id
Nazwa
urodziny

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…więcej małżonków!

Lista małżonków

Na tym etapie tłumaczę babci, że jeśli chce wiedzieć, kto jest mężem kogo, to musi tylko dopasować id na liście wnuki с wnuk_id na liście małżonków.

Po kilkudziesięciu ciasteczkach muszę się zdrzemnąć. – Możesz kontynuować, babciu? Wychodzę się zdrzemnąć.

Wracam za kilka godzin. Fajna jesteś babciu! Wszystko wygląda świetnie oprócz listy hobby. Na liście znajduje się około 1000 hobby. Większość z nich jest powtarzalna; Co się stało?

wnuk_id
hobby

1
kolarstwo

4
kolarstwo

3
kolarstwo

7
bieganie

11
kolarstwo

…kontynuujemy!

Przepraszam, zupełnie zapomniałem powiedzieć! Korzystając z jednej listy, możesz tylko śledzić hobby. Następnie na innej liście musimy prześledzić wnukikto to robi hobby. Zadzwonimy „Wspólna lista”. Widząc, że Ci się to nie podoba, martwię się i wracam do trybu listy.

id
hobby

1
kolarstwo

2
bieganie

3
pływanie

…więcej hobby!

Lista hobby

Kiedy już mamy naszą listę hobby, tworzymy drugą listę i nazywamy ją „Hobby wnuków".

wnuk_id
identyfikator_hobby

4
1

3
1

7
2

…więcej!

Ogólna lista zainteresowań wnuków

Po całej tej pracy babcia ma teraz fajny system pamięci, aby śledzić całą swoją niesamowicie dużą rodzinę. A potem – żeby zatrzymać mnie na dłużej – zadaje magiczne pytanie: „Gdzie nauczyłeś się to wszystko robić?”

Relacyjne bazy danych

Relacyjna baza danych to zestaw formalnie opisanych tabel (w naszym przykładzie są to arkusze), z których można uzyskać dostęp Według lub zbierać je na różne sposoby bez konieczności reorganizacji tabel Baza danych. Istnieje wiele różnych rodzajów relacyjnych baz danych, ale niestety lista na kartce papieru do nich nie należy.

Znakiem rozpoznawczym najpopularniejszych relacyjnych baz danych jest język zapytań SQL (Structured Query Language). Dzięki niemu, jeśli babcia przeniesie swoją pamięć do komputera, może szybko uzyskać odpowiedzi na pytania typu: „Kto nie odwiedził mnie w zeszłym roku, jest żonaty i nie ma hobby?”

Jednym z najpopularniejszych systemów zarządzania bazami danych SQL jest open source MySQL. Jest wdrażany głównie jako system zarządzania relacyjnymi bazami danych (RDBMS) dla aplikacji internetowych.

Niektóre kluczowe cechy MySQL:

  • Jest dość dobrze znany, szeroko stosowany i szeroko testowany.
  • Jest wielu wykwalifikowanych programistów, którzy mają doświadczenie z SQL i relacyjnymi bazami danych.
  • Dane są przechowywane w różnych tabelach, co ułatwia nawiązywanie relacji przy użyciu kluczy podstawowych i obcych (identyfikatorów).
  • Jest łatwy w użyciu i wydajny, dzięki czemu idealnie nadaje się dla dużych i małych firm.
  • Kod źródłowy podlega warunkom Powszechnej Licencji Publicznej GNU.

Teraz zapomnij Wszystko.

Wyjaśnianie NoSQL babci

Babciu, mamy wielką rodzinę. Ma 150 wnucząt! Wielu z nich jest żonatych, ma dzieci, coś im się podoba i tak dalej. W twoim wieku niemożliwe jest zapamiętanie wszystkiego o nas wszystkich. Potrzebujesz systemu pamięci!

Na szczęście ja nie chcę, żebyś zapomniał o moich urodzinach i ulubionym smaku lodów, mogę pomóc. Biegnę więc do najbliższego sklepu, biorę zeszyt i wracam do twojego domu.

Pierwszym krokiem, który robię, jest napisanie „Wnuki” dużymi, pogrubionymi literami na okładce mojego zeszytu. Potem przewracam na pierwszą stronę i zaczynam pisać wszystko, co musisz o mnie pamiętać. Po kilku minutach strona wygląda mniej więcej tak.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: „Wygląda na to, że wszystko jest gotowe!”
Babcia: „Czekaj, a co z resztą wnuków?”
Я: "Tak, dokładnie. Następnie przydziel po jednej stronie dla każdego”.
Babcia: „Czy będę musiał zapisywać te same informacje dla wszystkich, tak jak zrobiłem to dla ciebie?”
Я: „Nie, tylko jeśli chcesz. Pozwól mi pokazać."
Chwytając pióro mojej babci, przewracam stronę i szybko zapisuję informacje o moim najmniej lubianym kuzynie.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Ilekroć babcia musi przypomnieć sobie coś o jednym ze swoich wnuków, musi tylko przejść do właściwej strony w notatniku swoich wnuków. Wszystkie informacje o nich będą przechowywane na ich stronie, którą może szybko zmieniać i aktualizować.

Kiedy wszystko jest gotowe, zadaje magiczne pytanie: „Gdzie nauczyłeś się to wszystko robić?”

Bazy danych NoSQL

Istnieje wiele Bazy danych NoSQL („nie tylko SQL”). W naszych przykładach pokazaliśmy baza dokumentów. Bazy danych NoSQL modelują dane w sposób wykluczający relacje między tabelami używane w relacyjnych bazach danych. Te bazy danych stały się popularne na początku XXI wieku wśród firm, które potrzebowały klastrowania baz danych w chmurze ze względu na ich wyraźne wymagania dotyczące skalowania (takie jak Facebook). W takich aplikacjach spójność danych była znacznie mniej ważna niż wydajność i skalowalność.

Na początku bazy danych NoSQL były często używane do niszowych zadań zarządzania danymi. Zasadniczo, jeśli chodzi o aplikacje internetowe i chmurowe, bazy danych NoSQL przetwarzały i dystrybuowały znaczne ilości danych. Inżynierom NoSQL spodobał się również elastyczny schemat danych (lub jego brak), dzięki czemu możliwe były szybkie zmiany w aktualizowanych aplikacjach.

Kluczowe cechy NoSQL:

  • Bardzo elastyczny sposób przechowywania danych
  • Skalowanie w poziomie do klastrów
  • Możliwe sekwencjonowanie według trwałości/rozprzestrzeniania
  • Dokumenty identyfikowane za pomocą unikalnych kluczy

Szczegółowe porównanie

MySQL wymaga zdefiniowanego i ustrukturyzowanego schematu.
NoSQL pozwala przechowywać dowolne dane w „dokumencie”.

MySQL ma ogromną społeczność.
NoSQL ma małą i szybko rosnącą społeczność.

NoSQL jest łatwy do skalowania.
MySQL wymaga większej łatwości zarządzania.

MySQL używa języka SQL, który jest używany w wielu typach baz danych.
NoSQL to projekt oparty na bazie danych z popularnymi implementacjami.

MySQL używa standardowego języka zapytań (SQL).
NoSQL nie używa standardowego języka zapytań.

MySQL ma wiele świetnych narzędzi do raportowania.
NoSQL ma kilka narzędzi do raportowania, które są trudne do standaryzacji.

MySQL może pokazywać problemy z wydajnością dla dużych zbiorów danych.
NoSQL zapewnia doskonałą wydajność w przypadku dużych zbiorów danych.

Myśli 8 podstawa

Firma Baza 8tam, gdzie pracuję, zapewniamy przestrzeń roboczą dla każdego projektu z relacyjną bazą danych Aurora MySQL hostowaną na AWS. Podczas gdy NoSQL jest logicznym wyborem, gdy aplikacja wymaga wysokiej wydajności i skalowalności, wierzymy, że silna spójność danych zapewniana przez DBMS jest niezbędna podczas tworzenia aplikacji SaaS i innego oprogramowania biznesowego.

Dla startupów i programistów budujących aplikacje biznesowe, które wymagają raportowania, integralności transakcyjnej i dobrze zdefiniowanych modeli danych, inwestowanie w relacyjne bazy danych jest naszym zdaniem właściwym wyborem.

Dowiedz się więcej o programowaniu za pomocą Aurora, Serverless i GraphQL na 8base.com tutaj.

Źródło: www.habr.com

Dodaj komentarz