====== Datenbanken ====== Eine Übersicht der Datenbanken für Webserver ===== SQL-artige Datenbanken ===== Lernen: [[http://www.w3schools.com/sql/]] ==== MariaDB ==== * Nachfolger / Fork von MySQL nach Streitereien mit Oracle * [[https://www.mariadb.org|Website]], [[https://de.wikipedia.org/wiki/MariaDB|Wikipedia]] * Wechsel von MySQL zu MariaDB ist oft ohne Probleme möglich * Konfiguration wird übernommen * Achtung bei Paketquellen: Ein Autoremove entfernt eventuell die (verwaisten) Konfigurationsdateien, da MySQL nicht mehr installiert ist * Zurück geht nicht immer * Es kann nicht beides gleichzeitig installiert sein * Gut dokumentiert (mit Doku von MySQL), konfigurierbar, und lernbar * Stabil und schnell ==== PostgreSQL ==== * [[https://www.postgresql.org/|Website]], [[https://de.wikipedia.org/wiki/PostgreSQL|Wikipedia]] * Deutlich mehr Features als MariaDB/MySQL * Generell ähnlich zu MySQL (ist wie der Name schon sagt ebenfalls eine SQL-Datenbank) * Gute Erfahrungen an der TUM * Feinstufigere Rechte und Zugriffsverwaltung als mit MariaDB möglich * Leichter zu Installieren und Konfiguieren als MariaDB ==== SQLite ==== * [[https://www.sqlite.org/|Website]], [[https://de.wikipedia.org/wiki/SQLite|Wikipedia]] * Datenbank ist eine Datei (vereinfacht Migration) * Erfordert keinen laufenden Dienst im Hintergrund * Eingeschränkt in der Funktion, keine Parallelisierung ===== Non-SQL ===== ==== MongoDB ==== * [[https://www.mongodb.org/|Website]], [[https://de.wikipedia.org/wiki/MongoDB|Wikipedia]] * Dokumenten-orientiert: Ein Dokument ist ein JSON-Objekt * Dokumente in einer Collection müssen keinem Schema folgen * keine (eingebauten) Relationen * z.B. für Meteor-Framework TODO: weitere finden ===== Zugriff auf Datenbank ===== ==== GUI: Webbasiert ==== * PhpMyAdmin [[https://www.phpmyadmin.net/]] * Erstellung von Datenbanken und Tabellen * Verwaltung von Benutzern und Rechten * Achtung: Muss abgesichert werden ==== GUI: Lokal ==== * Bitte Vertreter hinzufügen FIXME ==== PHP ==== * Klassisch: mysql / mysqli * PDO: * Unterstützt mehrere Datenbank-Systeme im Backend * Unterstützt Prepared Statements (Schutz vor SQL Injection) * [[http://php.net/manual/en/book.pdo.php|Dokumentation]], [[http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers|Tutorial]] ==== Ruby (On Rails) ==== * Einbindung verschiedenster SQL und NOSQL Datenbanken über [[https://rubygems.org|Gems]] möglich * Gute Erfahrungen mit PostgreSQL ==== Django (Python) ==== * eigentlich komplettes Framework für Web-Applikationen * https://www.djangoproject.com/ TODO: Weitere Sprachen