So erklären Sie Ihrer Großmutter den Unterschied zwischen SQL und NoSQL

So erklären Sie Ihrer Großmutter den Unterschied zwischen SQL und NoSQL

Eine der wichtigsten Entscheidungen, die ein Entwickler trifft, ist die zu verwendende Datenbank. Viele Jahre lang waren die Optionen auf die verschiedenen relationalen Datenbankoptionen beschränkt, die die Structured Query Language (SQL) unterstützten. Dazu gehören MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 und viele mehr.

In den letzten 15 Jahren sind viele neue Datenbanken im Rahmen des No-SQL-Ansatzes auf den Markt gekommen. Dazu gehören Schlüsselwertspeicher wie Redis und Amazon DynamoDB, breitspaltige Datenbanken 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 ihre Funktionalität einzugehen.
Außerdem werden wir unterwegs jede Menge Spaß haben.

Oma SQL erklären

Oma, stell dir vor, ich wäre nicht dein einziger Enkel. Stattdessen liebten sich Mama und Papa wie die Kaninchen, bekamen 100 Kinder und adoptierten dann 50 weitere.

Sie lieben uns alle und möchten keinen unserer Namen, Geburtstage, Lieblingseissorten, Konfektionsgrößen, Hobbys, Namen des Ehepartners, Namen der Nachkommen und andere superwichtige Fakten vergessen. Aber seien wir ehrlich. Du bist 85 Jahre alt und das gute alte Gedächtnis kommt damit einfach nicht klar.

Zum Glück kann ich Ihnen helfen, da ich das klügste Ihrer Enkelkinder bin. Also komme ich zu Ihnen nach Hause, hole ein paar Blätter Papier heraus und bitte Sie, ein paar Kekse zu backen, bevor wir anfangen.

Auf einem Blatt Papier erstellen wir eine Liste mit dem Titel „Enkelkinder". Jeden Enkel mit einigen wichtigen Informationen über ihn aufgezeichnet, einschließlich einer eindeutigen Nummer, die nun anzeigt, wie Enkel er ist. Außerdem schreiben wir aus Organisationsgründen benannte Attribute oben in die Liste, damit wir immer wissen, welche Informationen die Liste enthält.

id
Name
Geburtstag
letzter Besuch
Kleidergröße
Lieblingseis
angenommen

1
Jimmy
09-22-1992
09-01-2019
L
Minzschokolade
falsch

2
Jessica
07-21-1992
02-22-2018
M
steinige Straße
was immer dies auch sein sollte.

…wir führen die Liste fort!

Liste der Enkelkinder

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

Also ziehe ich ein weiteres Blatt Papier heraus und darauf rufen wir die Liste auf Ehepartner. Wir fügen die für uns wichtigen Attribute wieder oben in die Liste ein und beginnen mit dem zeilenweisen Hinzufügen.

id
grandchild_id
Name
Geburtstag

1
2
Peter
06-01-1988

2
9
Fernanda
03-05-1985

…mehr Ehepartner!

Liste der Ehegatten

An dieser Stelle erkläre ich meiner Großmutter, dass sie, wenn sie wissen will, wer mit wem verheiratet ist, nur einen Match machen muss id In der Liste Enkelkinder с grandchild_id in der Ehegattenliste.

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. Du bist cool, Oma! Bis auf die Liste sieht alles gut aus Hobbys. Auf der Liste stehen etwa 1000 Hobbys. Die meisten davon wiederholen sich; Was ist passiert?

grandchild_id
Hobby

1
Radfahren

4
Radfahren

3
Radfahren

7
Laufen

11
Radfahren

…wir machen weiter!

Entschuldigung, das habe ich ganz vergessen zu sagen! Mit einer Liste können Sie nur verfolgen Hobbys. Dann müssen wir in einer anderen Liste nachverfolgen EnkelkinderWer macht das? Hobbys. Wir werden es nennen „Gemeinsame Liste“. Als ich sehe, dass es Ihnen nicht gefällt, mache ich mir Sorgen und gehe zurück in den Listenmodus.

id
Hobby

1
Radfahren

2
Laufen

3
Schwimmen

…mehr Hobbys!

Liste der Hobbys

Sobald wir unsere Hobbyliste haben, erstellen wir unsere zweite Liste und nennen sie „Hobbys der Enkelkinder".

grandchild_id
hobby_id

4
1

3
1

7
2

…mehr!

Allgemeine Liste der Hobbys der Enkelkinder

Nach all dieser Arbeit verfügt Oma nun über ein cooles Speichersystem, mit dem sie den Überblick über ihre gesamte, erstaunlich große Familie behält. Und dann – um mich länger zu fesseln – stellt sie die magische Frage: „Wo hast du das alles gelernt?“

Relationale Datenbanken

Eine relationale Datenbank ist ein Satz formal beschriebener Tabellen (in unserem Beispiel sind dies Blätter), auf die Sie zugreifen können Nach oder sammeln Sie sie auf verschiedene Arten, ohne die Tabellen neu organisieren zu müssen Datenbank. Es gibt viele verschiedene Arten relationaler Datenbanken, aber leider gehört eine Liste auf einem Blatt Papier nicht dazu.

Eine Besonderheit der beliebtesten relationalen Datenbanken ist die Abfragesprache SQL (Structured Query Language). Wenn Oma ihr Gedächtnissystem auf den Computer übertragen würde, könnte sie dadurch schnell eine Antwort auf Fragen bekommen wie: „Wer hat mich letztes Jahr nicht besucht, ist verheiratet und hat keine Hobbys?“

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

Einige Hauptfunktionen von MySQL:

  • Es ist ziemlich bekannt, weit verbreitet und ausführlich getestet.
  • Es gibt viele erfahrene Entwickler, die Erfahrung mit SQL und relationalen Datenbanken haben.
  • Die Daten werden in verschiedenen Tabellen gespeichert, wodurch Beziehungen mithilfe von Primär- und Fremdschlüsseln (Identifikatoren) einfach hergestellt werden können.
  • Es ist einfach zu bedienen und effizient und eignet sich daher ideal für große und kleine Unternehmen.
  • Der Quellcode unterliegt den Bedingungen der GNU General Public License.

Jetzt vergessen ALL.

Oma NoSQL erklären

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

Zum Glück habe ich nicht Ich möchte, dass du meinen Geburtstag und meine Lieblingseissorte vergisst. Ich kann dir helfen. Also renne ich zum nächsten Geschäft, nehme ein Notizbuch und kehre zu Ihnen nach Hause zurück.

Der erste Schritt, den ich unternehme, besteht darin, „Enkelkinder“ in großen, fetten Buchstaben auf den Einband meines Notizbuchs zu schreiben. Dann blättere ich zur ersten Seite und fange an, alles über mich aufzuschreiben, was Sie sich merken müssen. Ein paar Minuten später 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!"
}

Я: „Es scheint, dass alles bereit ist!“
Großmutter: „Warte, was ist mit den restlichen Enkelkindern?“
Я: "Ja, genau. Ordnen Sie dann jedem eine Seite zu.“
Großmutter: „Muss ich für alle dieselben Informationen aufschreiben, wie ich es für Sie getan habe?“
Я: „Nein, nur wenn du willst. Lass es mich zeigen."
Ich schnappe mir den Stift meiner Großmutter, blättere um und notiere schnell Informationen über meinen Cousin, den ich am wenigsten mag.

{ 
  "_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 zur richtigen Seite im Notizbuch ihres Enkelkindes navigieren. Alle Informationen über sie werden direkt auf ihrer Seite gespeichert, die sie schnell ändern und aktualisieren kann.

Als alles 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 gezeigt Dokumentendatenbank. NoSQL-Datenbanken modellieren Daten auf eine Weise, die die in relationalen Datenbanken verwendeten Tabellenbeziehungen ausschließt. Diese Datenbanken wurden in den frühen 2000er Jahren bei Unternehmen beliebt, die aufgrund ihrer expliziten Skalierungsanforderungen cloudbasiertes Datenbank-Clustering benötigten (wie Facebook). Bei solchen Anwendungen war die Datenkonsistenz weit weniger wichtig als Leistung und Skalierbarkeit.

Zu Beginn wurden NoSQL-Datenbanken häufig für Nischenaufgaben im Datenmanagement eingesetzt. Wenn es um Web- und Cloud-Anwendungen geht, verarbeiten und verteilen NoSQL-Datenbanken grundsätzlich erhebliche Datenmengen. Den NoSQL-Ingenieuren gefiel auch das flexible Datenschema (oder das Fehlen eines solchen), sodass schnelle Änderungen in aktualisierten Anwendungen möglich waren.

Hauptmerkmale von NoSQL:

  • Sehr flexible Möglichkeit, Daten zu speichern
  • Horizontale Skalierung auf Cluster
  • Mögliche Reihenfolge pro Persistenz/Spread
  • Dokumente, die mithilfe eindeutiger Schlüssel identifiziert werden

Detaillierter Vergleich

MySQL erfordert ein definiertes und strukturiertes Schema.
Mit NoSQL können Sie beliebige Daten in einem „Dokument“ speichern.

MySQL hat eine riesige Community.
NoSQL hat eine kleine und schnell wachsende Community.

NoSQL ist einfach zu skalieren.
MySQL braucht mehr Verwaltbarkeit.

MySQL verwendet SQL, das in vielen Datenbanktypen verwendet wird.
NoSQL ist ein datenbankbasiertes Design mit beliebten Implementierungen.

MySQL verwendet eine Standardabfragesprache (SQL).
NoSQL verwendet keine Standardabfragesprache.

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

MySQL kann Leistungsprobleme bei Big Data anzeigen.
NoSQL bietet eine hervorragende Leistung bei Big Data.

Gedanken 8base

Das Unternehmen 8baseWo ich arbeite, stellen wir für jedes Projekt einen Arbeitsbereich mit einer relationalen Aurora MySQL-Datenbank bereit, die auf AWS gehostet wird. Während NoSQL eine logische Wahl ist, wenn Ihre Anwendung hohe Leistung und Skalierbarkeit erfordert, glauben wir, dass die starke Datenkonsistenz, die ein DBMS bietet, beim Erstellen von SaaS-Anwendungen und anderer Unternehmenssoftware unerlässlich ist.

Für Startups und Entwickler, die Geschäftsanwendungen entwickeln, die Berichterstellung, Transaktionsintegrität und klar definierte Datenmodelle erfordern, ist die Investition in relationale Datenbanken unserer Meinung nach die richtige Wahl.

Erfahren Sie mehr über die Entwicklung mit Aurora, Serverless und GraphQL auf 8base.com hier.

Source: habr.com

Kommentar hinzufügen