# Wann SQL oder NOSQL (Mongo)?



## Sputnik78 (8. Jan 2018)

Hallo Forum,
ich stehe aktuell vor der Herausforderung eine Java-Anwendung programmieren zu lassen und muss vorab eine Datenbank auswählen. Konkret stellt sich die Frage, ob SQL oder NoSQL. Ich möchte Kriterien definieren und anhand des konkreten Projekts „ausprägen“, um zu einer
Entscheidung zu kommen.

Wenn man jetzt mal die erforderliche Infrastruktur unterstellt: Ab welchem Umfang / welcher Komplexität der Daten braucht man NOSQL wirklich?

Ich habe in der Spitze ein paar hundert lesende Nutzer Max, es geht im weitesten Sinne um eine E-Commerce Anwendung mit registrierten Nutzern, allerdings mehrere Sprachen.

Was wären Kriterien, um hier zu einer Entscheidung zu kommen?Stichworte: Neue Spalten,
Join-Tables bei Abruf,  Clustering etc.?

Kann man hier Mengengerüste definieren? Z.B. Ab Xy Joins über z sql-Tabellen sollte man NOSQL nehmen? Welche Rolle spielt die Middleware bei Performanz ....?

Thx!


----------



## mrBrown (8. Jan 2018)

Sputnik78 hat gesagt.:


> ich stehe aktuell vor der Herausforderung eine Java-Anwendung programmieren zu lassen und muss vorab eine Datenbank auswählen.


Wenn du sie programmieren lässt, überlass den Programmierenden doch die Entscheidung? Die dürften das besser entscheiden lassen...


----------



## Sputnik78 (8. Jan 2018)

Grundsätzlich gebe ich dir Recht. Die DB muss aber Unternehmens intern gehostet werden und da stellt eine NOSQL DB ein Problem dar, da man nicht einfach eine neue DB installieren kann. SQL wäre kein Problem.


----------



## mrBrown (8. Jan 2018)

Sputnik78 hat gesagt.:


> Die DB muss aber Unternehmens intern gehostet werden und da stellt eine NOSQL DB ein Problem dar, da man nicht einfach eine neue DB installieren kann. SQL wäre kein Problem.


Wenn eh nur das eine geht, ist die Entscheidung doch leicht ¯\_(ツ)_/¯

Im Zweifel baut man die Anwendung halt so, dass die Persistenzschicht austauschbar ist


----------



## Flown (8. Jan 2018)

Da hast du schon deine Antwort. Ich bin noch nie auf ein "wirtschaftliches" Problem gestoßen wo NoSQL der Weg gewesen wäre.


----------



## Sputnik78 (8. Jan 2018)

Na ja, vielleicht muss ich ergänzen: Es ist eine Abwägungssache - lohnt sich die Einführung einer NOSQL DB aufgrund der performanz / usability / funktionen? D.h. bietet NOSQL derart viele Vorteile oder kann ich das gleiche mit SQL abbilden? Ich denke auch letzteres, kann das aber technisch nicht beurteilen. 
Mein Gefühl sagt mir: Die Anwendung hat sehr wenige parallele Nutzer und hat nicht die Anforderungen wie Google, Facebook etc. Allerdings werden die Daten schon erweitert, es gibt viele Sprachen. Ich würde es halt gerne so gut es geht „objektivieren“


----------



## thecain (8. Jan 2018)

Google und Facebook setzen auch noch relationale Datenbanken ein. Parallelität ist kein Grund für NoSQL.


----------



## Dukel (8. Jan 2018)

Bei SQL vs. NoSQL geht es eher um die Agilität.
Bei einer Änderung (neue Spalte) muss bei einer SQL DB erst der SQL-Admin diese Spalte anlegen und dann kann der Programmierer diese nutzen, bei NoSql kann das der Programmierer alles selbst machen (NoSQL ist Schemalos).

Ein anderer Grund sind bestimmte Arten von Daten, die gespeichert werden sollen. Wenn es z.B. einfache Tabellen (Hash Tables), Json Dokumente, Graphen,... sind dann eignen sich entsprechende NoSQL Datenbanken mehr.

Aber ihr müsst euch im klaren sein, wer die Vorgaben macht. Der Entwickler oder Ihr (ist es schwierig oder unmöglich einen NoSQL Server zu installieren?).


----------



## truesoul (9. Jan 2018)

Hallo. 

Also bei der Menge an Nutzern, die Ihr habt, macht es in meinen Augen kein Sinn auf NoSQL zu setzen. 
Wobei bei NoSQL auch unterscheiden muss unter folgenden Typen: 

1. Key-Value (z. B Amazon Dynamo)
2. Dokumentenorientiert (z. B MongoDB)
3. Graphen (z. B Neo4j)
4. Spaltenorientierte (z. B Cassandra)

Ich werde sicher nicht jetzt zu jeden was schreiben, aber das könnte dir schon als Anhaltspunkt dienen, wonach du suchen könntest. 

Grüße


----------



## Thallius (9. Jan 2018)

Also bei der kleinen Menge würd ich sogar einfach auf MySQL setzen. Da kannst du für deine Anwendung eine eigene virtuelle DB einrichten und kannst der Applikation alle Rechte geben die sie Braucht. Eben auch ALTER TABLE und so weiter.

Gruß

Claus


----------



## JuKu (11. Jan 2018)

thecain hat gesagt.:


> Google und Facebook setzen auch noch relationale Datenbanken ein. Parallelität ist kein Grund für NoSQL.



Auch, aber größtenteils setzen sie auf NoSQL.
Grund ist aber, dass NoSQL weniger Abhängigkeiten (Relationen) besitzt und deshalb viel besser skaliert und schneller arbeitet. Aber diese Diskussion hatten wir schon mal in einem anderen Thread.



Sputnik78 hat gesagt.:


> Ich habe in der Spitze ein paar hundert lesende Nutzer Max, es geht im weitesten Sinne um eine E-Commerce Anwendung mit registrierten Nutzern, allerdings mehrere Sprachen.



Da lohnt sich eine NoSQL Datenbank nicht.


----------

