# MySQL und mongoDB wann macht was Sinn?



## OnDemand (7. Dez 2020)

Hallo zusammen,
hab mir grad mal mongoDB angesehen und finde es wahnsinnig interessant!
Nun hab ich versucht herauszufinden wann SQL und wann NoSQL Sinn macht.

Nehmen wir einen Onlineshop mit 40.000 Artikeln, welche Varianten haben usw. hier sehe ich Vorteile beim Nutzen von NoSQL aufgrund komplexer Strukturen (Produkt hat Varianten mit Größen, Farben uvm)

wie sehr ihr das? Ernstzunehmende Datenbankstruktur oder moderne Spielerei? 
habt ihr das produktiv im Einsatz? Über welche Probleme seid ihr gestolpert?


----------



## Thallius (7. Dez 2020)

Gerade bei einem Shop sehe ich gar keinen Vorteil einer NoDB. Viel relationaler geht es wirklich nicht mehr. Vorteil der NoDB sehe ich bei sozial Media und allem was Dokumenten basiert ist


----------



## Dukel (8. Dez 2020)

Mitlerweile gibts auch NoSQL in Relationalen Datenbanken. Manche DB haben einen JSON Datentyp und man kann z.B. Strukturierte und unstrukturierte Daten mischen.

EDIT:
Ach ja. Es ist unter umständen weniger der Typ der Applikation sondern auch die Entwicklung. Wenn Agil entwickelt wird ist NoSQL flexibler als klassische DB.


----------



## LimDul (8. Dez 2020)

Dukel hat gesagt.:


> EDIT:
> Ach ja. Es ist unter umständen weniger der Typ der Applikation sondern auch die Entwicklung. Wenn Agil entwickelt wird ist NoSQL flexibler als klassische DB.


Das wage ich mal dezent zu bezweifeln. Es sei denn man versteht unter Agil chaotisch  

Am Ende sollte das Ziel immer sein etwas wartbares mit hohen Businesswert zu erhalten - egal ob nach Wasserfall, Agil oder Hybriden Ansätzen. Darunter zählt für mich ein vernünftiges Datenbank-Schema - egal ob relational oder nosql. Ich sehe da den Vorteil von NoSQL nicht.


----------



## OnDemand (13. Dez 2020)

Hab mal ein wenig mit Mongo gespielt. Es ist mal wesentlich schneller, wenn ich meine 50.000 Dokumente in einer Collection speichere als wenn ich sie über mehrere Tabellen aufteile.

Mal schauen über welche Probleme ich noch so stolpern werde


----------



## LimDul (13. Dez 2020)

Grundsätzlich kann das Sinn ergeben - allerdings sind in der Regel NoSQL Datenbanken wesentlich relaxter was Konsistenz & Garantien angeht. Wenn du das nicht brauchst, können die sinnvoll sein.

Es gibt halt die Eierlegende Wollmilchsau nicht, die
- Beliebig skaliert
- Schnell beim Einfügen ist
- Schnell beim Lesen ist
- Garantiert, dass die Daten konsistent sind
- Garantiert das Daten auf jeden Fall geschrieben werden beim Commit

An irgendwelche Stellen muss man Abstriche mache - und je nach dem wo, man die machen kann, ist eine SQL Datenbank oder eine NoSQL besser,

Schöner Text dazu: http://www.mongodb-is-web-scale.com/


----------



## mrBrown (13. Dez 2020)

Ich meine mich zu erinnern, dass @httpdigest mal was zu MongoDB in diesem Kontext gesagt hatte


Dokumenten-basierte Datenbanken können für Produktkataloge super geeignet sein (DynamoDB ist zB genau daraus entstanden). Mit den Nachteilen gegenüber klassischen relationalen Datenbanken kann man dabei meist gut leben (bzw sind es u.U. nicht mal Nachteile, sondern einfach irrelevant - zB kann eventually consistency bei einem reinen Produktkatalog, der ein reelles Lager abbildet, egal sein). 
Man muss halt immer Vor- und Nachteile gegeneinander abwägen.


----------



## OnDemand (13. Dez 2020)

Es eignet sich recht gut bisher beim rumspielen. Mongo/NoSQL liest sich aber eher als Cloud-DB mit Clustern. Vermutlich kann es erst dann so richtig seine Vorteile ausspielen. Hab es mal auf meiner Debian Kiste installiert, da fehlen mir dann aber Tools wie das pendant PhpMyAdmin. Gibt zwar massig Clients aber diese gehen dann nur wenn man den Port aufmacht etc. Lieber wäre mir etwas "geschlossenes" damit man es selber hosten kann. Die ganzen Cloudlösungen sind entweder übelst undurchsitig oder teuer. Da geht jede Menge Zeit flöten AWS und co erstmal zu kapieren


----------



## mrBrown (13. Dez 2020)

MongoDB kann man völlig problemlos lokal installieren (und eigentlich alle anderen auch). Cloud-Lösungen muss man da genausowenig nutzen wie man sie bei relationalen DBs nutzen muss.

Alternative zu phpMyAdmin wäre zB Compass, das lässt sich auch über ssh tunneln. Ist dann gleichzieht auch sicherer als phpMyAdmin nur mit Passwort...


----------



## OnDemand (13. Dez 2020)

Bin grad mit Datagrip am versuchen zu verbinden. Aber SSH Tunnel klingt noch besser. Hast du Mongo schon mal lokal installiert? Gibts irgendwelche OS Präferenzen? Debian X, Ubuntu usw


----------



## OnDemand (13. Dez 2020)

@mrBrown Compass ist aber keine WebGUI wie PhpMyAdmin oder find ich es nur nicht?


----------



## mrBrown (13. Dez 2020)

NicoDeluxe hat gesagt.:


> @mrBrown Compass ist aber keine WebGUI wie PhpMyAdmin oder find ich es nur nicht?


Nö, aber ist doch ziemlich egal?



NicoDeluxe hat gesagt.:


> Hast du Mongo schon mal lokal installiert? Gibts irgendwelche OS Präferenzen? Debian X, Ubuntu usw


"lokal" heißt für mich "lokal bei mir auf dem Entwicklungsrecher" => Docker


----------

