Vergleich Json und Mysql Datenbank?

3 Antworten

Nun Datenbanken bzw. Filesystem Zugriffe sind i.d.R. immer langsam. Wenn man Applikationen hat, die mit Datenbanken arbeiten, dann ist vor allem auch die Caching Strategie wichtig und der eigentliche Filesystem Zugriff sollte nur die letzte Instanz sein und nicht der Normalfall. Klar ist das nicht bei allen Anwendungen möglich.

Und natürlich kannst du das testen. Deine Anwendung entwickelst du im Idealfall eh so, dass du mit entsprechenden Repositories und Interfaces arbeitest. Die eigentliche Implementierung, ob nun JSON, eine SQL-Datenbank oder was auch immer sollte ein auswechselbares Detail sein. Anschließend dann eben mit einen entsprechenden Test-Tool rüber.

Bei einer SQL-Datenbank sind natürlich Indizes und die Tabellenstruktur wichtig und brauch auch etwas Wissen. Bei JSON planst eben du auch aktiv die Struktur und hast dahinter keine festen Regeln wie bei einen relationalen Datenbanksystem. Hat alles Vor- und Nachteile. Hängt dann von den Daten ab.

Auch Locking und co. müsstest du mittels Semaphoren und co. selbst umsetzen bei JSON.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012
alberttomasusw 
Fragesteller
 09.03.2021, 16:26

Danke fuer deine Infos. Eine andere Moeglichkeit als Datenbanken oder Filesystem zu benutzen gibt es doch dann aber auch nicht wirklich oder? Und so wie sich die Infos bisher alle anhoeren raten doch die meisten Leute eine Datenbank zu benutzen statt Json Datei.

0
apachy  09.03.2021, 16:50
@alberttomasusw

Korrekt aber auch die Datenbank ist ja letztlich auch nix als etwas auf dem Filesystem. Trotzdem nutzt man On-Top noch Caching Technologien. Im Falle von Webanwendungen in PHP z.B. Sachen wie APCu, Memcache oder Memcached. Andere nutzen für sowas dann z.B. Redis.

Sinn ist es am Ende nicht X-Tabellen wieder zu laden, zu joinen, Daten zu filtern und aufzubereiten, sondern fertig anzeigbare Daten zu haben, im Idealfall im Arbeitsspeicher, mit einen leichten Zugriff und nicht einer Sprache wie SQL drauf die erstmal ausgewertet werden muss.

Neben SQL-Datenbanken gibt es auch No-SQL Datenbanken. Frage ist immer wie die Daten aussehen. Für die meisten Fälle eignet sich aber eine relationale Datenbank wie in deinem Beispiel MySQL und da drauf entsprechendes Caching.

0

mysql ist an sich eher eine Spielzeugdatenbank.

Halbwegs vernünftige relationale SQL-Datenbanken, wie z.B. postgresql, unterstützen natürlich auch json als Datentyp incl. Operatoren, Indizes usw.

Ob dann eine nosql DB, ein Cache wie redis oder ein Dokumentenindex wie solr eher taugt hängt vom Lastprofil und der Datenmenge ab.

alberttomasusw 
Fragesteller
 09.03.2021, 15:02

Ich waere jetzt davon ausgegangen das Mysql schon weit verbreitet ist und auch professionele Seiten das einsetzen. Ich muss die Daten nicht unbedingt in Json Format abspeichern, aber gibt es den eine Datenbank welche du besonders empfehlen wuerdest?

0

Meine Sorge bei sowas wäre erstmal weniger die Performance, sondern die Konsistenz. Wie stellst du bei Dateien sicher, dass es keine Schreibkonflikte gibt? Locks im Filesystem funktieren mehr schlecht als recht.

Was ist, wenn du ein paar tausend, hunderttausend, Millionen Benutzer hast: packt das dein Dateisystem in einem Verzeichnis, ohne einzugehen?

Was ist, wenn dein Datenmodell ein bisschen anspruchsvoller wird?

Eine Datenbank (und sei es nur ein Key-Value Store) nimmt dir viele funktionale und nichtfunktionale Anforderungen ab. Und du kannst natürlich dort auch JSON reinschmeißen, wenn du magst.

alberttomasusw 
Fragesteller
 09.03.2021, 15:00

Danke fuer deine Hinweise, eine Ueberlastung oder andere Probleme im Dateisystem habe ich gar nicht bedacht. Wuerdest du den irgendeine bestimmte Datenbank empfehlen?

0
alfredo153  09.03.2021, 17:31
@alberttomasusw

Für die meisten Wald-und-Wiesen-Anwendungen ist MySQL ausreichend. Ich würde allerdings, wenn ich mich für ein RDBMS entscheide, gleich zu PostgreSQL greifen - das ist weiter skalierbar und genauso einfach im Handling.

Natürlich gibt es auch NoSQL-Datenbanken wie MongoDB oder Cassandra. Die haben ihre Berechtigung, aber da muss man schon den Anwendungsfall genauer kennen. Cassandra ist z.B. viel leichter horizontal skalierbare als die meisten SQL-Datenbanken, hat aber andere Einschränkungen.

0