Wie sollte ich meine Daten speichern? Ein Vergleich von Datenbank, Solr, …

Beispiele

Zur besseren Einordnung möchte ich noch ein paar Beispiele aus der Praxis liefern.

  • Logs: Starres Schema und nur sporadische Lesezugriffe sprechen für eine relationale Datenbank.
  • Benutzerkonto: Mittelfristig starres Schema und viele abhängige Datensätze deuten auf eine relationale Datenbank hin. MongoDB kann eine Alternative sein, dann allerdings müssen die Grenzen des Benutzerdokumentes sehr gut abgesteckt sein.
  • Geokoordinaten: MySQL, MongoDB und Solr unterstützen alle spezielle Feldtypen für Geokoordinaten, so dass sie zwar eine besondere Behandlung benötigen, aber die Systementscheidung nur geringfügig beeinflussen.
  • Suchformular im Frontend: Da Benutzer ihre Landessprache und nicht abstrakte Begriffe benutzen wollen, benötigen wir hier eine Volltextsuche.

Fazit

Die Beispiele deuten bereits an, dass eine Webanwendung wohl nicht mit einer Art der Datenhaltung auskommen kann um alle Problemstellungen effizient zu lösen. Zu Beginn sollte also zunächst der häufigste Anwendungsfall ermittelt und effizient abgebildet werden. Erreichen im späteren Verlauf die Datenmengen ein Ausmaß, dass eine Spezialisierung erfordert, müssen weitere Systeme ins Spiel gebracht werden.