
Eine der wichtigsten Entscheidungen, die ein Entwickler treffen muss, ist, welche Datenbank er verwenden möchte. Über viele Jahre waren die Optionen auf verschiedene Arten von relationalen Datenbanken beschränkt, die die Sprache für strukturierte Abfragen (SQL) unterstützten. Dazu gehören MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 und viele andere.
In den letzten 15 Jahren sind viele neue Datenbanken im Rahmen des No-SQL-Ansatzes auf den Markt gekommen. Dazu gehören Schlüssel-Wert-Speicher wie Redis und Amazon DynamoDB, breite Spaltenbanken wie Cassandra und HBase, Dokumentenspeicher wie MongoDB und Couchbase sowie Graphdatenbanken und Suchmaschinen wie Elasticsearch und Solr.
In diesem Artikel werden wir versuchen, SQL und NoSQL zu verstehen, ohne in ihre Funktionsweise einzutauchen.
Außerdem werden wir dabei ein wenig Spaß haben.
Wir erklären der Großmutter SQL
Oma, stell dir vor, ich bin nicht dein einziger Enkel. Stattdessen haben Mama und Papa sich geliebt wie Hasen, sie hatten 100 Kinder, und danach haben sie noch 50 adoptiert.
Also, du liebst uns alle und möchtest keines unserer Namen, Geburtsdaten, Lieblings-Eisgeschmack, Kleidergrößen, Hobbys, Namen der Partner, Namen der Nachkommen und andere super wichtige Fakten vergessen. Aber lass uns der Wahrheit ins Auge sehen. Du bist 85 Jahre alt, und das gute alte Gedächtnis kann einfach nicht mithalten.
Glücklicherweise kann ich, als der klügste deiner Enkel, helfen. Daher komme ich zu dir nach Hause, hole ein paar Blätter Papier hervor und bitte dich, Kekse zu backen, bevor wir anfangen.
Auf einem Blatt Papier erstellen wir eine Liste mit dem Titel „Enkelkinder“. Jeder Enkel wird mit einigen wesentlichen Informationen über ihn aufgeführt, einschließlich einer eindeutigen Nummer, die jetzt angibt, welcher Enkel er ist. Zudem notieren wir zur Übersichtlichkeit die benannten Attribute oben auf der Liste, damit wir immer wissen, welche Informationen diese Liste enthält.
id
name
Geburtstag
letzter Besuch
Kleidergröße
lieblings Eisgeschmack
adoptiert
1
Jimmy
09-22-1992
09-01-2019
L
Minze-Schokolade
false
2
Jessica
07-21-1992
02-22-2018
M
Rocky Road
true
…wir setzen die Liste fort!
Liste der Enkelkinder
Nach einer Weile hast du alles verstanden und wir sind fast mit der Liste fertig! Doch du drehst dich zu mir um und sagst: „Wir haben vergessen, Platz für Partner, Hobbys, Enkelkinder hinzuzufügen!“ Aber nein, wir haben nicht vergessen! Das kommt noch und benötigt ein weiteres Blatt Papier.
Also hole ich ein weiteres Blatt Papier heraus, und darauf nennen wir die Liste Ehepartner. Wir fügen wieder die Attribute hinzu, die uns wichtig sind, am Anfang der Liste und beginnen, sie in den Zeilen hinzuzufügen.
id
grandchild_id
name
Geburtstag
1
2
John
06-01-1988
2
9
Fernanda
03-05-1985
…mehr Ehepartner!
Liste der Ehepartner
In diesem Schritt erkläre ich der Großmutter, dass, wenn sie wissen möchte, wer mit wem verheiratet ist, sie nur abgleichen muss id in der Liste Enkelkinder c grandchild_id in der Liste der Ehepartner.
Nach ein paar Dutzend Keksen muss ich mich ausruhen. "Kannst du weitermachen, Oma?" Ich gehe, um ein Nickerchen zu machen.
Ich komme nach ein paar Stunden zurück. Und du bist toll, Oma! Alles sieht großartig aus, bis auf die Liste 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
…weiter geht's!
Entschuldigung, ich habe ganz vergessen zu sagen! Mit einer Liste kann man nur verfolgen Hobbys. Dann müssen wir in einer anderen Liste nachverfolgen Enkelkinder, die sich damit beschäftigen Hobbys. Wir werden das nennen „Allgemeine Liste“. Als ich sehe, dass dir das nicht gefällt, beginne ich mir Sorgen zu machen und wechsle in den Listenmodus zurück.
id
hobby
1
Radfahren
2
Laufen
3
Schwimmen
…mehr Hobbys!
Liste der Hobbys
Sobald wir unsere Liste der Hobbys 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 hat die Großmutter jetzt ein cooles Erinnerungssystem zur Verfolgung ihrer erstaunlich großen Familie. Und dann — um mich länger zu halten — stellt sie die magische Frage: „Wo hast du all das gelernt?“
Relationale Datenbanken
Eine relationale Datenbank ist eine Sammlung von formal beschreibbaren Tabellen (in unserem Beispiel sind das die Blätter), auf die man zugreifen oder sie auf verschiedene Weisen zusammenstellen kann, ohne die Tabellen reorganisieren zu müssen. Angaben Datenbanken Datenbanken. Es gibt viele verschiedene Arten von relationalen Datenbanken, aber leider ist die Liste auf dem Blatt Papier keine davon.
Ein charakteristisches Merkmal der beliebtesten relationalen Datenbanken ist die SQL-Abfragesprache (Structured Query Language). Dank ihr kann die Großmutter, wenn sie ihr Erinnerungssystem auf einen Computer überträgt, schnell Antworten auf Fragen erhalten wie: „Wer hat mich im letzten Jahr nicht besucht, ist verheiratet und hat keine Hobbys?“
Eine der beliebtesten SQL-Datenbankverwaltungssysteme ist MySQL mit offenem Quellcode. Es wurde in erster Linie als relationales Datenbankverwaltungssystem (RDBMS) für softwarebasierte Webanwendungen implementiert.
Einige der wichtigsten Merkmale von MySQL:
- Es ist recht bekannt, weit verbreitet und gründlich getestet.
- Es gibt viele qualifizierte Entwickler mit Erfahrung in SQL und relationalen Datenbanken.
- Daten werden in verschiedenen Tabellen gespeichert, was es ermöglicht, Beziehungen einfach über Primär- und Fremdschlüssel (Identifikatoren) herzustellen.
- Es ist benutzerfreundlich und effizient, was es ideal für große und kleine Unternehmen macht.
- Der Quellcode steht unter der GNU General Public License.
Vergiss jetzt ALLE.
Erklären wir der Oma NoSQL
Oma, wir haben eine riesige Familie. Es gibt 150 Enkeln! Viele von ihnen sind verheiratet, haben Kinder, haben Hobbys und so weiter. In deinem Alter ist es unmöglich, sich an alles von uns zu erinnern. Was du brauchst, ist ein Erinnerungssystem!
Zum Glück kann ich, nicht während ich möchte, dass du meinen Geburtstag und meinen Lieblingseisgeschmack vergisst, helfen. Deshalb laufe ich in den nächsten Laden, kaufe ein Notizbuch und komme zu dir nach Hause zurück.
Der erste Schritt, den ich mache, ist, "Enkel" in großen, fetten Buchstaben auf das Cover des Notizbuchs zu schreiben. Dann blättere ich zur ersten Seite und beginne, alles aufzuschreiben, was du über mich wissen 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":[
"Videospiele",
"Computer",
"Kochen"
],
"spouse":null,
"kids":[
],
"favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
"misc_notes":"Bevorzugt Geburtstagstorte aus Eiscreme statt Schokoladentorte!"
} Ich: "Scheint, dass alles bereit ist!"
Oma: "Warte, und was ist mit den anderen Enkeln?"
Ich: "Ja, genau. Dann widmen wir jeder Seite einen Enkel."
Oma: "Muss ich die gleiche Informationen für alle aufschreiben, wie ich es für dich gemacht habe?"
Ich: "Nein, nur wenn du das willst. Lass mich zeigen."
Nachdem ich der Oma einen Stift abgenommen habe, blättere ich um und schreibe schnell die Informationen über meinen ungeliebtesten Cousin auf.
{
"_id":"dh97dhs9b39397ss001",
"name":"Tanner",
"birthday":"09-12-2008",
"clothing_size":"S",
"friend_count":0,
"favorite_picture":null,
"remember":"Am selben Tag wie Cody geboren, aber nicht so wichtig"
}Jedes Mal, wenn die Großmutter sich an etwas über eines der Enkelkinder erinnern muss, muss sie nur auf die entsprechende Seite im Notizbuch der Enkel gehen. Alle Informationen über sie werden dort auf ihrer Seite gespeichert, die sie schnell ändern und aktualisieren kann.
Wenn alles erledigt ist, stellt sie die magische Frage: „Wo hast du gelernt, all das zu machen?“
NoSQL-Datenbanken
Es gibt viele NoSQL-Datenbanken („nicht nur SQL”). In unseren Beispielen haben wir gezeigt eine Dokumentendatenbank. NoSQL-Datenbanken modellieren Daten in Arten, die tabellarische Beziehungen, wie sie in relationalen Datenbanken verwendet werden, ausschließen. Diese Datenbanken wurden in den frühen 2000er Jahren bei Unternehmen beliebt, die aufgrund ihrer expliziten Skalierungsanforderungen (zum Beispiel Facebook) eine cloudbasierte Datenbank-Clusterung benötigten. In solchen Anwendungen war die Datenkonsistenz viel weniger wichtig als die Leistung und Skalierbarkeit.
Zu Beginn wurden NoSQL-Datenbanken oft für Nischenaufgaben im Datenmanagement eingesetzt. Insbesondere, wenn es um Web- und Cloud-Anwendungen ging, verarbeiteten und verteilten NoSQL-Datenbanken erhebliche Datenmengen. Ingenieure, die mit NoSQL arbeiteten, schätzten zudem das flexible Datenschema (oder dessen völlige Abwesenheit), so dass schnelle Änderungen in aktualisierten Anwendungen möglich waren.
Hauptmerkmale von NoSQL:
- Sehr flexible Methode zur Datenspeicherung
- Horizontale Skalierung zu Clustern
- Mögliche Konsistenz zwischen Persistenz / Verteilung
- Dokumente, die mit eindeutigen Schlüsseln identifiziert werden
Detaillierter Vergleich
MySQL erfordert ein bestimmtes und strukturiertes Schema.
NoSQL ermöglicht es, beliebige Daten in einem „Dokument“ zu speichern.
MySQL unterstützt eine große Community.
NoSQL hat eine kleine und schnell wachsende Community.
NoSQL zeichnet sich durch einfache Skalierbarkeit aus.
MySQL benötigt mehr Wartung.
MySQL verwendet SQL, das in vielen Arten von Datenbanken angewendet wird.
NoSQL ist eine designbasierte Datenbank mit gängigen Implementierungen.
MySQL verwendet eine Standard-Abfragesprache (SQL).
NoSQL verwendet keine standardisierte Abfragesprache.
MySQL bietet viele großartige Reporting-Tools.
In NoSQL gibt es einige Reporting-Tools, die schwer zu standardisieren sind.
MySQL kann bei großen Datenmengen Leistungsprobleme verursachen.
NoSQL bietet hervorragende Leistung bei großen Datenmengen.
Denke an 8base
Im Unternehmen , in dem ich arbeite, stellen wir für jedes Projekt eine relationalen Datenbank Aurora MySQL bereit, die auf AWS gehostet wird. Obwohl NoSQL eine logische Wahl ist, wenn die Anforderungen Ihrer Anwendung hohe Leistung und Skalierbarkeit benötigen, sind wir der Meinung, dass die strikte Datenkonsistenz, die von einem DBMS gewährleistet wird, beim Erstellen von SaaS-Anwendungen und anderer Unternehmenssoftware notwendig ist.
Für Startups und Entwickler, die solche Unternehmensanwendungen erstellen, die Berichterstattung, Transaktionsintegrität und klar definierte Datenmodelle benötigen, ist es unserer Meinung nach die richtige Entscheidung, in die Arbeit mit relationalen Datenbanken zu investieren.
Erfahren Sie mehr über die Entwicklung mit Aurora, Serverless und GraphQL auf 8base.com .
Quelle: habr.com
