
Eine der wichtigsten Entscheidungen, die ein Entwickler treffen muss, ist, welche Datenbank er verwenden soll. Viele Jahre lang waren die Optionen auf verschiedene relationale Datenbanken beschränkt, die die Structured Query Language (SQL) unterstützen. Dazu gehören MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 und viele andere.
In den letzten 15 Jahren sind viele neue Datenbanken auf dem Markt erschienen, die den No-SQL-Ansatz verfolgen. Dazu gehören Schlüssel-Wert-Speicher wie Redis und Amazon DynamoDB, breite Spalten-Datenbanken wie Cassandra und HBase, Dokumentenspeicher wie MongoDB und Couchbase sowie Graphdatenbanken und Suchsysteme wie Elasticsearch und Solr.
In diesem Artikel werden wir versuchen, die Unterschiede zwischen SQL und NoSQL zu verstehen, ohne zu sehr in ihre Funktionsweise einzutauchen.
Außerdem werden wir dabei ein wenig Spaß haben.
Wir erklären SQL meiner Großmutter
Oma, stell dir vor, ich bin nicht dein einziger Enkel. Stattdessen haben Mama und Papa sich geliebt wie Kaninchen, sie hatten 100 Kinder und adoptierten dann noch 50.
Also, du liebst uns alle und möchtest keines unserer Namen, Geburtstage, Lieblingseisgeschmack, Kleidungsgrößen, Hobbys, Namen der Partner, Namen der Nachkommen und anderer superwichtiger Fakten vergessen. Doch lass uns der Wahrheit ins Auge sehen. Du bist 85 Jahre alt, und das gute alte Gedächtnis ist einfach nicht mehr in der Lage, damit umzugehen.
Glücklicherweise kann ich, als der cleverste deiner Enkel, dir helfen. Deshalb komme ich zu dir nach Hause, hole ein paar Blätter Papier heraus und bitte dich, Kekse zu backen, bevor wir anfangen.
Auf einem Blatt Papier erstellen wir eine Liste mit dem Titel „Enkel“. Jeder Enkel wird mit einigen wichtigen Informationen über ihn aufgeführt, einschließlich einer einzigartigen Nummer, die jetzt anzeigt, welcher Enkel er ist. Außerdem schreiben wir zur besseren Organisation die benannten Attribute am Anfang der Liste auf, damit wir immer wissen, welche Informationen diese Liste enthält.
id
name
Geburtstag
letzter Besuch
Kleidungsgröße
Lieblingseis
adoptiert
1
Jimmy
09-22-1992
09-01-2019
L
Minzschokolade
false
2
Jessica
07-21-1992
02-22-2018
M
Rocky Road
true
…wir führen die Liste fort!
Liste der Enkel
Nach einer Weile hast du alles verstanden und wir sind fast mit der Liste fertig! Aber du drehst dich zu mir um und sagst: „Wir haben vergessen, Platz für Ehepartner, Hobbys und Enkelkinder hinzuzufügen!“ Aber nein, haben wir nicht! Das kommt später und erfordert ein neues Blatt Papier.
Also hole ich ein weiteres Blatt Papier heraus, und darauf benennen wir die Liste Ehepartner. Wir fügen erneut die Attribute hinzu, die uns wichtig sind, ganz oben auf der Liste, und beginnen, sie in den Zeilen einzufügen.
id
grandchild_id
name
Geburtstag
1
2
John
06-01-1988
2
9
Fernanda
03-05-1985
…weitere Ehepartner!
Liste der Ehepartner
An diesem Punkt erkläre ich der Großmutter, dass sie, wenn sie wissen möchte, wer mit wem verheiratet ist, nur abgleichen muss id in der Liste Enkelkinder mit grandchild_id in der Liste der Ehepartner.
Nach ein paar Dutzend Keksen muss ich ein Nickerchen machen. „Kannst du weitermachen, Oma?“ Ich gehe weg, um ein Nickerchen zu machen.
Ich komme nach ein paar Stunden zurück. Und du bist großartig, Oma! Alles sieht super aus, bis auf die Liste der Hobbys. In der Liste sind etwa 1000 Hobbys. Die meisten von ihnen wiederholen sich; was ist passiert?
grandchild_id
hobby
1
Radfahren
4
Radfahren
3
Radfahren
7
Laufen
11
Radfahren
…lass uns weitermachen!
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 es nennen „Allgemeine Liste“. Wenn ich sehe, dass dir das nicht gefällt, mache ich mir Sorgen und gehe zurück in den Listenmodus.
id
hobby
1
Radfahren
2
Laufen
3
schwimmen
…mehr Hobbys!
Hobbyliste
Sobald wir unsere Hobbyliste haben, erstellen wir unsere zweite Liste und nennen sie „Enkel-Hobbys».
grandchild_id
hobby_id
4
1
3
1
7
2
…mehr!
Allgemeine Liste Enkel Hobbys
Nach all dieser Arbeit hat die Großmutter jetzt ein cooles Erinnerungssystem, um ihre unglaublich große Familie im Blick zu behalten. Und dann — um mich länger zu halten — stellt sie die magische Frage: „Wo hast du das alles gelernt?“
Relationale Datenbanken
Eine relationale Datenbank ist eine Sammlung von formal beschriebenen Tabellen (in unserem Beispiel sind das die Blätter), auf die man zugreifen kann Daten oder sie in verschiedenen Weisen zusammenstellen kann, ohne die Tabellen neu zu organisieren Datenbank. Es gibt viele verschiedene Arten von relationalen Datenbanken, aber leider ist die Liste auf dem Blatt Papier keine davon.
Ein herausragendes Merkmal der beliebtesten relationalen Datenbanken ist die SQL-Abfragesprache (Structured Query Language). Damit kann, wenn die Oma ihr Erinnerungssystem auf den Computer umstellt, schnell auf Fragen wie: „Wer hat mich im letzten Jahr nicht besucht, ist verheiratet und hat keine Hobbys?“ geantwortet werden.
Eine der bekanntesten SQL-Datenbankverwaltungssysteme ist MySQL, eine Open-Source-Lösung. Sie wurde hauptsächlich als relationales Datenbankmanagementsystem (RDBMS) für webbasierte Softwareanwendungen entwickelt.
Einige wichtige Merkmale von MySQL:
- Es ist recht bekannt, weit verbreitet und sorgfältig getestet.
- Es gibt viele qualifizierte Entwickler mit Erfahrung in SQL und relationalen Datenbanken.
- Daten werden in verschiedenen Tabellen gespeichert, was die Verknüpfung über Primär- und Fremdschlüssel (Identifikatoren) erleichtert.
- Es ist benutzerfreundlich und effektiv, was es ideal für große und kleine Unternehmen macht.
- Der Quellcode steht unter der GNU General Public License.
Jetzt vergiss es ALLES.
Wir erklären es der Oma: NoSQL
Oma, wir haben eine riesige Familie. Es gibt 150 Enkelkinder! Viele von ihnen sind verheiratet, haben Kinder, haben Hobbys und vieles mehr. In deinem Alter ist es unmöglich, sich an alles über uns zu erinnern. Was du brauchst, ist ein Gedächtnissystem!
Zum Glück kann ich, nicht da ich möchte, dass du meinen Geburtstag und meinen Lieblingseisgeschmack vergisst, dir helfen. Deshalb renne ich zum nächsten Geschäft, hole ein Notizbuch und komme zurück zu dir nach Hause.
Der erste Schritt, den ich mache, ist, 'Enkel' in großen fetten Buchstaben auf das Cover des Notizbuchs zu schreiben. Dann blätter 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 zum Geburtstag ein Eiskuchen anstelle eines Schokoladenkuchens!"
} Ich: „Scheint, alles ist bereit!“
Oma: „Warte, und was ist mit den anderen Enkeln?“
Ich: „Ja, genau. Dann machen wir für jeden eine Seite.“
Oma: „Muss ich die gleichen Informationen für alle aufschreiben, wie ich es für dich gemacht habe?“
Ich: „Nein, nur wenn du möchtest. Lass mich dir zeigen.“
Nachdem ich meiner Großmutter den Stift genommen habe, blättere ich um und schreibe schnell Informationen über meinen am wenigsten beliebten Vetter 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"
}Immer wenn meine Großmutter etwas über einen der Enkel erinnern muss, muss sie nur die entsprechende Seite im Notizbuch der Enkel aufrufen. Alle Informationen über sie werden direkt dort auf ihrer Seite gespeichert, die sie schnell ändern und aktualisieren kann.
Wenn 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 eine Dokumentdatenbank gezeigt. NoSQL-Datenbanken modellieren Daten auf Weisen, die tabellarische Beziehungen, wie sie in relationalen Datenbanken verwendet werden, ausschließen. Diese Datenbanken wurden Anfang der 2000er Jahre bei Firmen populär, die aufgrund ihrer offensichtlichen Skalierungsanforderungen (z. B. Facebook) eine cloudbasierte Datenbank-Clustering benötigten. In solchen Anwendungen war die Datenkonsistenz viel weniger wichtig als Leistung und Skalierbarkeit.
Zu Beginn wurden NoSQL-Datenbanken häufig für Nischendatenmanagement-Aufgaben eingesetzt. Insbesondere im Bereich von Web- und Cloud-Anwendungen bearbeiteten und verteilten NoSQL-Datenbanken erhebliche Datenmengen. Ingenieure, die mit NoSQL arbeiteten, schätzten auch das flexible Datenschema (oder dessen völliges Fehlen), was schnelle Änderungen in aktualisierten Anwendungen ermöglichte.
Hauptmerkmale von NoSQL:
- Eine sehr flexible Art der Datenspeicherung
- Horizontale Skalierung auf Cluster
- Mögliche Konsistenz bei Persistenz / Verteilung
- Dokumente, die mit einzigartigen Schlüsseln identifiziert werden
Detaillierter Vergleich
MySQL erfordert ein bestimmtes und strukturiertes Schema.
NoSQL ermöglicht das Speichern beliebiger Daten in einem 'Dokument'.
MySQL hat eine große Gemeinschaft.
NoSQL hat eine kleine, aber schnell wachsende Gemeinschaft.
NoSQL zeichnet sich durch Skalierbarkeit aus.
MySQL benötigt eine höhere Verwaltungskomplexität.
MySQL verwendet SQL, das in vielen Datenbanktypen Anwendung findet.
NoSQL ist eine designbasierte Datenbank mit beliebten Implementierungen.
MySQL verwendet eine standardisierte Abfragesprache (SQL).
NoSQL verwendet keine standardisierte Abfragesprache.
MySQL bietet viele hervorragende Reporting-Tools.
NoSQL verfügt über einige Reporting-Tools, deren Standardisierung schwierig ist.
MySQL kann bei großen Datenmengen Leistungsprobleme verursachen.
NoSQL bietet eine hervorragende Leistung bei großen Datenmengen.
Gedanken zu 8base
In unserem Unternehmen , in der ich tätig bin, stellen wir für jedes Projekt eine Arbeitsumgebung mit einer 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 erfordern, sind wir der Meinung, dass die strenge Datenkonsistenz, die von einer Datenbank-Management-System (DBMS) gewährleistet wird, bei der Entwicklung von SaaS-Anwendungen und anderer Unternehmenssoftware notwendig ist.
Für Start-ups und Entwickler, die Geschäftsanwendungen erstellen, die Berichterstattung, Transaktionsintegrität und klar definierte Datenmodelle benötigen, ist die Investition in relationale Datenbanken Ihrer Meinung nach die richtige Wahl.
Erfahren Sie mehr über die Entwicklung mit Aurora, Serverless und GraphQL auf 8base.com .
Quelle: habr.com
