
Jedną z najważniejszych decyzji, jakie podejmuje deweloper, jest wybór bazy danych do użycia. Przez wiele lat dostępne opcje ograniczały się do różnych rodzajów relacyjnych baz danych, które wspierały język zapytań 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 w podejściu No-SQL. Należą do nich magazyny kluczy-wartości, takie jak Redis i Amazon DynamoDB, szerokie bazy kolumnowe, takie jak Cassandra i HBase, magazyny dokumentów, takie jak MongoDB i Couchbase, a także bazy danych grafowe i wyszukiwarki, takie jak Elasticsearch i Solr.
W tym artykule spróbujemy zrozumieć SQL i NoSQL, nie wchodząc w ich funkcjonalność.
Ponadto, po drodze trochę się zabawimy.
Wyjaśniamy babci SQL
Babciu, wyobraź sobie, że nie jestem jedynym twoim wnukiem. Zamiast tego mama i tata kochali się jak króliki, mieli 100 dzieci, a potem zaadoptowali jeszcze 50.
Więc kochasz nas wszystkich i nie chcesz zapomnieć żadnego z naszych imion, dni urodzin, ulubionych smaków lodów, rozmiarów ubrań, hobby, imion małżonków, imion potomstwa i innych super ważnych faktów. Ale spójrzmy prawdzie w oczy. Masz 85 lat, a stara, dobra pamięć po prostu nie jest w stanie tego ogarnąć.
Na szczęście ja, jako najmądrzejszy z twoich wnuków, mogę pomóc. Dlatego przychodzę do ciebie, wyciągam kilka kartek papieru i proszę cię, żebyś upiekła ciastka, zanim zaczniemy.
Na jednej z kartek tworzymy listę o nazwie „Wnukowie”. Każdy wnuk zapisany jest z jakąś istotną informacją o sobie, w tym unikalnym numerem, który teraz będzie oznaczać, którym wnukiem jest. Dodatkowo, dla porządku, wypisujemy nazwane atrybuty na górze listy, abyśmy zawsze wiedzieli, jakie informacje ta lista zawiera.
id
name
data urodzenia
ostatnia wizyta
rozmiar odzieży
ulubiony smak lodów
zaadoptowany
1
Jimmy
09-22-1992
09-01-2019
L
Miętowy czekolada
false
2
Jessica
07-21-1992
02-22-2018
M
Droga Rocky
true
…kontynuujemy listę!
Lista wnuków
Po pewnym czasie wszystko jest już jasne i prawie kończymy listę! Jednak zwracasz się do mnie i mówisz: „Zapomnieliśmy dodać miejsce na małżonków, hobby, wnuki!” Ale nie, nie zapomnieliśmy! To następuje i wymaga nowej kartki papieru.
Więc wyciągam kolejny arkusz papieru i na nim tworzymy listę Małżonkowie. Ponownie dodajemy atrybuty, które są dla nas ważne, na początku listy i zaczynamy dodawać w wierszach.
id
grandchild_id
name
data urodzenia
1
2
John
06-01-1988
2
9
Fernanda
03-05-1985
…więcej małżonków!
Lista małżonków
Na tym etapie wyjaśniam babci, że jeśli chce wiedzieć, kto z kim jest w związku małżeńskim, wystarczy, że dopasuje to id w zestawieniu wnuków z grandchild_id na liście małżonków.
Po paru dziesiątkach ciasteczek muszę się zdrzemnąć. „Możesz kontynuować, babciu?” Odchodzę, żeby się zdrzemnąć.
Wracam po kilku godzinach. Jesteś super, babciu! Wszystko wygląda świetnie, z wyjątkiem listy hobby. Na liście jest około 1000 hobby. Większość z nich się powtarza; co się stało?
grandchild_id
hobby
1
jeżdżenie na rowerze
4
jeżdżenie na rowerze
3
jeżdżenie na rowerze
7
bieganie
11
jeżdżenie na rowerze
…kontynuujemy!
Przepraszam, całkowicie zapomniałem powiedzieć! Używając jednej listy, możemy śledzić tylko hobby. Wtedy na innej liście musimy śledzić wnuków, które się tym zajmują hobby. Zamierzamy nazwać to „Wspólna lista”. Widząc, że ci się to nie podoba, zaczynam się martwić i wracam w tryb listy.
id
hobby
1
jeżdżenie na rowerze
2
bieganie
3
pływanie
…więcej hobby!
Lista hobby
Gdy tylko mamy naszą listę hobby, tworzymy naszą drugą listę i nazywamy ją „Zainteresowania wnuków».
grandchild_id
hobby_id
4
1
3
1
7
2
…więcej!
Wspólna lista wnuków hobby
Po całej tej pracy babcia ma teraz świetny system pamiętania do śledzenia całej swojej niesamowicie dużej rodziny. A potem — aby zatrzymać mnie na dłużej — zadaje magiczne pytanie: „Skąd nauczyłeś się to wszystko robić?”
Bazy danych relacyjne
Relacyjna baza danych to zestaw formalnie opisanych tabel (w naszym przykładzie to arkusze), do których można uzyskać dostęp danych lub zebrać je na różne sposoby bez konieczności reorganizacji tabel baz danych. Istnieje wiele różnych typów baz danych relacyjnych, ale niestety lista na arkuszu papieru nie jest jednym z nich.
Charakterystyczną cechą najpopularniejszych baz danych relacyjnych jest język zapytań SQL (Structured Query Language). Dzięki niemu, jeśli babcia przeniesie swój system pamiętania do komputera, będzie mogła szybko uzyskać odpowiedź na takie pytania, jak: „Kto nie odwiedzał mnie w zeszłym roku, jest żonaty i nie ma żadnych zainteresowań?”
Jednym z najpopularniejszych systemów zarządzania bazami danych SQL jest MySQL z otwartym kodem źródłowym. Jest przede wszystkim implementacją systemu zarządzania relacyjnymi bazami danych (RDBMS) dla aplikacji opartych na technologiach webowych.
Niektóre kluczowe cechy MySQL:
- Jest dość znany, szeroko stosowany i dokładnie przetestowany.
- Jest wielu wykwalifikowanych programistów mających doświadczenie w pracy z SQL i relacyjnymi bazami danych.
- Dane są przechowywane w różnych tabelach, co pozwala na łatwe ustalanie powiązań za pomocą kluczy głównych i obcych (identyfikatorów).
- Jest prosty w użyciu i wydajny, co czyni go idealnym dla dużych i małych firm.
- Kod źródłowy znajduje się na zasadach GNU General Public License.
Teraz zapomnij WSZYSTKO.
Wyjaśniamy babci NoSQL
Babciu, mamy ogromną rodzinę. Mamy 150 wnuków! Wielu z nich jest zamężnych, ma dzieci, ma różne zainteresowania itp. W twoim wieku niemożliwe jest, abyś pamiętała wszystko o nas wszystkich. Potrzebujesz systemu pamięci!
Na szczęście ja, nie chcąc, abyś zapomniała o moich urodzinach i ulubionym smaku lodów, mogę pomóc. Więc biegnę do najbliższego sklepu, biorę zeszyt i wracam do ciebie do domu.
Pierwszy krok, który wykonuję, to napisanie „Wnukowie” dużymi, pogrubionymi literami na okładce zeszytu. Następnie przewracam na pierwszą stronę i zaczynam pisać wszystko, co powinnaś 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":[
"gry wideo",
"komputery",
"gotowanie"
],
"spouse":null,
"kids":[
],
"favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
"misc_notes":"Woli tort lodowy na urodziny zamiast ciasta czekoladowego!"
} Ja: „Wygląda na to, że wszystko gotowe!”
Babcia: „Poczekaj, a co z pozostałymi wnukami?”
Ja: „Tak, dokładnie. W takim razie przeznaczmy po jednej stronie dla każdego.”
Babcia: „Czy będę musiała zapisać tę samą informację dla wszystkich, tak jak zrobiłam dla ciebie?”
Ja: „Nie, tylko jeśli chcesz. Pozwól, że ci pokażę.”
Biorąc od babci długopis, przewracam stronę i szybko zapisuję informacje o moim najbardziej znienawidzonym kuzynie.
{
"_id":"dh97dhs9b39397ss001",
"name":"Tanner",
"birthday":"09-12-2008",
"clothing_size":"S",
"friend_count":0,
"favorite_picture":null,
"remember":"Urodzony tego samego dnia co Cody, ale nie tak ważny"
}Za każdym razem, gdy babcia potrzebuje przypomnieć sobie coś o jednym z wnuków, wystarczy, że przejdzie na odpowiednią stronę w notesie wnuków. Wszystkie informacje o nich będą przechowywane dokładnie tam, na ich stronie, którą ona może szybko zmienić i zaktualizować.
Kiedy wszystko jest już gotowe, zadaje magiczne pytanie: „Gdzie nauczyłeś się tego wszystkiego?”
Bazy danych NoSQL
Istnieje wiele baz danych NoSQL („nie tylko SQL”). W naszych przykładach pokazaliśmy bazę danych dokumentów. Bazy danych NoSQL modelują dane w sposób wykluczający relacyjne powiązania stosowane w bazach danych relacyjnych. Te bazy danych stały się popularne na początku lat 2000. wśród firm potrzebujących chmurowej klasteryzacji baz danych z powodu ich wyraźnych wymagań dotyczących skalowalności (na przykład Facebook). W takich aplikacjach spójność danych była znacznie mniej istotna niż wydajność i skalowalność.
Na początku bazy danych NoSQL były często wykorzystywane do niszowych zadań zarządzania danymi. Gdy chodziło o aplikacje internetowe i chmurowe, bazy danych NoSQL obsługiwały i dystrybuowały znaczne ilości danych. Inżynierom pracującym z NoSQL podobały się również elastyczne schemy danych (lub ich całkowity brak), więc szybko wprowadzano zmiany w aktualizowanych aplikacjach.
Kluczowe cechy NoSQL:
- Bardzo elastyczny sposób przechowywania danych
- Poziome skalowanie do klastrów
- Możliwa spójność w trwaniu / rozprzestrzenieniu
- Dokumenty, które są identyfikowane za pomocą unikalnych kluczy
Szczegółowe porównanie
MySQL wymaga określonej i zorganizowanej schemy.
NoSQL pozwala na przechowywanie dowolnych danych w „dokumencie”.
MySQL wspiera ogromną społeczność.
NoSQL ma małą, szybko rosnącą społeczność.
NoSQL wyróżnia się łatwością skalowania.
MySQL wymaga większej zarządzalności.
MySQL używa SQL, który jest stosowany w wielu rodzajach baz danych.
NoSQL to baza danych oparta na projektach z popularnymi wdrożeniami.
MySQL używa standardowego języka zapytań (SQL).
NoSQL nie używa standardowego języka zapytań.
MySQL ma wiele świetnych narzędzi raportowych.
W NoSQL istnieje kilka narzędzi raportowych, które trudno jest ustandaryzować.
MySQL może powodować problemy z wydajnością przy dużych danych.
NoSQL zapewnia doskonałą wydajność przy dużych danych.
Myśli 8base
W firmie , w której pracuję, zapewniamy przestrzeń roboczą każdego projektu z relacyjną bazą danych Aurora MySQL, która jest hostowana na AWS. Chociaż NoSQL jest logicznym wyborem, gdy wymagania Twojej aplikacji wymagają wysokiej wydajności i skalowalności, uważamy, że ścisła spójność danych zapewniana przez systemy zarządzania bazą danych jest niezbędna przy tworzeniu aplikacji SaaS i innego oprogramowania biznesowego.
Dla startupów i programistów tworzących takie aplikacje biznesowe, które potrzebują raportowania, integralności transakcji i wyraźnie określonych modeli danych, inwestowanie w relacyjne bazy danych to moim zdaniem właściwy wybór.
Dowiedz się więcej o rozwoju z Aurora, Serverless i GraphQL na 8base.com .
Źródło: habr.com
