Wie Sie Ihrer Großmutter den Unterschied zwischen SQL und NoSQL erklären können

Bild

Eine der wichtigsten Entscheidungen eines Entwicklers ist die zu verwendende Datenbank. Im Laufe der Jahre waren die Optionen auf verschiedene relationale Datenbankoptionen beschränkt, die SQL (Structured Query Language) unterstützen. Dazu gehören MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 und viele andere.

In den letzten 15 Jahren sind im Rahmen des No-SQL-Ansatzes viele neue Datenbanken auf den Markt gekommen. Dazu gehören Schlüsselwertspeicher wie Redis und Amazon DynamoDB, Breitspaltendatenbanken wie Cassandra und HBase, Dokumentenspeicher wie MongoDB und Couchbase sowie Diagrammdatenbanken und Suchmaschinen wie Elasticsearch und Solr.

In diesem Artikel werden wir versuchen, SQL und NoSQL zu verstehen, ohne auf deren Funktionalität einzugehen.
Außerdem werden wir dabei Spaß haben.

Erkläre Oma SQL


Oma, stell dir vor, ich bin nicht dein einziger Enkel. Stattdessen liebten sich Mama und Papa wie Kaninchen, sie hatten 100 Kinder, dann adoptierten sie weitere 50.

Sie lieben uns alle und möchten keinen unserer Namen, Geburtstage, Geschmack unseres Lieblingseises, Konfektionsgrößen, Hobbys, Namen von Ehepartnern, Namen von Nachkommen und andere überaus wichtige Fakten vergessen. Aber seien wir ehrlich. Sie sind 85 Jahre alt und das gute alte Gedächtnis ist einfach nicht in der Lage, damit umzugehen.

Glücklicherweise kann ich als klügstes Ihrer Enkelkinder helfen. Also komme ich zu Ihnen nach Hause, nehme ein paar Blätter Papier heraus und bitte Sie, Kekse zu backen, bevor wir anfangen.

Auf einem Blatt Papier machen wir eine Liste mit dem Namen " Enkelkinder ". Jeder Enkel wird mit einigen wichtigen Informationen über ihn aufgezeichnet, einschließlich einer eindeutigen Nummer, die nun angibt, welche Art von Enkel er ist. Aus organisatorischen Gründen schreiben wir außerdem benannte Attribute oben in die Liste, damit wir immer wissen, welche Informationen diese Liste enthält.
idNameGeburtstagletzter BesuchKonfektionsgrößeLieblingseisangenommen
1Jimmy22.09.199201-01-2019L.Minzschokoladefalsch
2Jessica21.07.199222.02.2008M.Felsige Straßewahr
... die Liste fortsetzen!
Enkelkinderliste

Nach einer Weile verstehen Sie alles und wir sind fast fertig mit der Liste! Sie wenden sich jedoch an mich und sagen: „Wir haben vergessen, einen Platz für Ehepartner, Hobbys und Enkelkinder hinzuzufügen!“ Aber nein, wir haben nicht vergessen! Dies geht weiter und erfordert ein neues Blatt Papier.

Also ziehe ich ein weiteres Stück Papier heraus und darauf nennen wir die Liste der Ehepartner . Wir fügen erneut die für uns wichtigen Attribute oben in der Liste hinzu und beginnen mit dem Hinzufügen der Zeilen.
idEnkelkind_IDNameGeburtstag
12John01-01-1988
29Fernanda05-05-1985
... mehr Ehepartner!
Liste der Ehepartner

In diesem Stadium erkläre ich meiner Großmutter, dass sie, wenn sie wissen will, wer mit wem verheiratet ist, nur die ID in der Liste der Enkelkinder mit grandchild_id in der Liste der Ehepartner abgleichen muss.

Nach ein paar Dutzend Keksen muss ich ein Nickerchen machen. "Kannst du weitermachen, Oma?" Ich gehe, um ein Nickerchen zu machen.

Ich komme in ein paar Stunden zurück. Und du bist cool, Oma! Bis auf die Hobby- Liste sieht alles gut aus. Es gibt ungefähr 1000 Hobbys auf der Liste. Die meisten von ihnen werden wiederholt; Was ist passiert?
Enkelkind_IDHobby
1Radfahren
4Radfahren
3Radfahren
7Laufen
11Radfahren
... weiter!

Entschuldigung, ich habe völlig vergessen zu sagen! Mit einer einzigen Liste können Sie nur Hobbys verfolgen. Dann müssen wir in einer anderen Liste die Enkelkinder aufspüren, die sich mit diesem Hobby beschäftigen . Wir werden es die "Allgemeine Liste" nennen. Als ich sehe, dass es dir nicht gefällt, mache ich mir langsam Sorgen und kehre in den Listenmodus zurück.
idHobby
1Radfahren
2Laufen
3schwimmen
... mehr Hobby!
Hobby Liste

Sobald wir unsere Hobbysliste haben, erstellen wir unsere zweite Liste und nennen sie „ Hobbys der Enkelkinder “.
Enkelkind_IDhobby_id
41
31
72
... mehr!
Allgemeine Liste der Hobby-Enkelkinder

Nach all dieser Arbeit hat meine Großmutter jetzt ein cooles Erinnerungssystem, mit dem sie ihre gesamte überraschend große Familie verfolgen kann. Und dann - um mich länger festzuhalten - stellt sie die magische Frage: "Wo hast du gelernt, das alles zu tun?"

Relationale Datenbanken


Eine relationale Datenbank besteht aus einer Reihe formal beschriebener Tabellen (in unserem Beispiel sind dies Blätter), aus denen Sie auf Daten zugreifen oder diese auf verschiedene Weise erfassen können, ohne die Datenbanktabellen neu organisieren zu müssen. Es gibt viele verschiedene Arten von relationalen Datenbanken, aber leider gehört die Liste auf einem Blatt Papier nicht dazu.

Eine Besonderheit der beliebtesten relationalen Datenbanken ist die SQL-Abfragesprache (Structured Query Language). Wenn meine Großmutter ihr Erinnerungssystem auf einen Computer überträgt, kann sie dank ihm schnell Antworten auf Fragen erhalten wie: „Wer hat mich letztes Jahr nicht besucht, ist verheiratet und hat keine Hobbys?“

Eines der beliebtesten SQL-Datenbankverwaltungssysteme ist Open Source MySQL. Es wird hauptsächlich als relationales Datenbankverwaltungssystem (RDBMS) für webbasierte Softwareanwendungen implementiert.

Einige wichtige Funktionen von MySQL:

  • Es ist ziemlich berühmt, weit verbreitet und gründlich getestet.
  • Es gibt viele qualifizierte Entwickler mit Erfahrung in der Arbeit mit SQL und relationalen Datenbanken.
  • Die Daten werden in verschiedenen Tabellen gespeichert, wodurch die Kommunikation über Primär- und Fremdschlüssel (Bezeichner) einfach hergestellt werden kann.
  • Es ist einfach zu bedienen und effizient, was es ideal für große und kleine Unternehmen macht.
  • Der Quellcode unterliegt der GNU General Public License.

Jetzt vergiss ALLES .

Erklären Sie Oma NoSQL


Oma, wir haben eine riesige Familie. Sie hat 150 Enkelkinder! Viele von ihnen sind verheiratet, haben Kinder, lieben etwas und so weiter. In Ihrem Alter ist es unmöglich, sich an alles von uns allen zu erinnern. Was Sie brauchen, ist ein Auswendiglernen!

Glücklicherweise kann ich helfen, wenn ich nicht möchte, dass Sie meinen Geburtstag und meinen Lieblingsgeschmack von Eis vergessen. Deshalb renne ich zum nächsten Geschäft, nehme ein Notizbuch und kehre zu Ihnen nach Hause zurück.

Der erste Schritt, den ich mache, besteht darin, „Enkelkinder“ in großen, fetten Buchstaben auf den Umschlag eines Notizbuchs zu schreiben. Dann gehe ich zur ersten Seite und beginne alles zu schreiben, woran du dich erinnern solltest. Nach ein paar Minuten sieht die Seite ungefähr so ​​aus.

{ "_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!" } 

Ich : "Alles scheint fertig zu sein!"
Großmutter : "Warte, was ist mit den anderen Enkelkindern?"
Ich : „Ja genau. Wählen Sie dann jeweils eine Seite aus. “
Großmutter : "Und ich muss für alle die gleichen Informationen aufzeichnen, wie ich es für Sie getan habe?"
Ich : „Nein, nur wenn du willst. Lass mich dir zeigen. "
Nachdem ich meinen Stift von meiner Großmutter genommen habe, blättere ich die Seite um und schreibe schnell Informationen über meinen ungeliebtesten Cousin auf.

 { "_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" } 

Wenn sich eine Großmutter an etwas über eines ihrer Enkelkinder erinnern muss, muss sie nur auf die richtige Seite im Notizbuch ihres Enkelkindes gehen. Alle Informationen über sie werden direkt auf ihrer Seite gespeichert und können schnell geändert und aktualisiert werden.

Wenn alles schon erledigt ist, stellt sie die magische Frage: "Wo hast du das alles gelernt?"

NoSQL-Datenbanken


Es gibt viele NoSQL-Datenbanken („nicht nur SQL“). In unseren Beispielen haben wir eine Datenbank mit Dokumenten gezeigt . NoSQL-Datenbanken modellieren Daten so, dass tabellarische Beziehungen, die in relationalen Datenbanken verwendet werden, ausgeschlossen werden. Diese Datenbanken wurden in den frühen 2000er Jahren bei Unternehmen populär, die aufgrund ihrer expliziten Skalierbarkeitsanforderungen (z. B. Facebook) ein Cloud-basiertes Clustering von Datenbanken benötigten. In solchen Anwendungen war die Datenkonsistenz viel weniger wichtig als die Leistung und Skalierbarkeit.

Zu Beginn wurden NoSQL-Datenbanken häufig für Nischendatenverwaltungsaufgaben verwendet. Grundsätzlich haben NoSQL-Datenbanken bei Web- und Cloud-Anwendungen erhebliche Datenmengen verarbeitet und verteilt. Ingenieure, die mit NoSQL arbeiteten, mochten auch das flexible Datenschema (oder dessen völlige Abwesenheit), so dass schnelle Änderungen an aktualisierten Anwendungen möglich waren.

Hauptmerkmale von NoSQL:

  • Sehr flexible Art, Daten zu speichern.
  • Auf Cluster skalieren
  • Mögliche Konsistenz- / Verteilungssequenz
  • Dokumente, die mit eindeutigen Schlüsseln identifiziert werden

Detaillierter Vergleich


MySQL erfordert ein spezifisches und strukturiertes Framework.
Mit NoSQL können Sie alle Daten in einem "Dokument" speichern.

MySQL unterstützt eine riesige Community.
NoSQL hat eine kleine und schnell wachsende Community.

NoSQL ist einfach zu skalieren.
MySQL benötigt mehr Verwaltbarkeit.

MySQL verwendet SQL, das in vielen Arten von Datenbanken verwendet wird.
NoSQL ist eine designbasierte Datenbank mit gängigen Implementierungen.

MySQL verwendet die Standard-Abfragesprache (SQL).
NoSQL verwendet nicht die Standardabfragesprache.

MySQL verfügt über viele großartige Berichterstellungstools.
NoSQL verfügt über mehrere Berichterstellungstools, die schwer zu standardisieren sind.

MySQL kann Leistungsprobleme für Big Data verursachen.
NoSQL bietet eine hervorragende Leistung bei Big Data.

Gedanken 8base


Bei 8base , wo ich arbeite, stellen wir dem Arbeitsbereich jedes Projekts die relationale Aurora MySQL-Datenbank zur Verfügung, die auf AWS gehostet wird. Obwohl NoSQL eine logische Wahl ist, wenn die Anforderungen Ihrer Anwendung eine hohe Leistung und Skalierbarkeit erfordern, sind wir der Ansicht, dass die strikte Datenkonsistenz des DBMS beim Erstellen von SaaS-Anwendungen und anderer Unternehmenssoftware erforderlich ist.

Für Startups und Entwickler, die solche Geschäftsanwendungen erstellen, für die Berichterstellung, Transaktionsintegrität und genau definierte Datenmodelle erforderlich sind, ist die Investition in relationale Datenbanken unserer Meinung nach die richtige Wahl.

Weitere Informationen zum Entwickeln mit Aurora, Serverless und GraphQL mit 8base.com finden Sie hier .

Source: https://habr.com/ru/post/de467283/


All Articles