{"id":116,"date":"2021-01-11T17:24:37","date_gmt":"2021-01-11T16:24:37","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=116"},"modified":"2021-02-02T16:30:43","modified_gmt":"2021-02-02T15:30:43","slug":"firebase","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/lehrveranstaltungen\/betriebliche-informationssysteme\/2021\/firebase\/","title":{"rendered":"Firebase"},"content":{"rendered":"<h1>1. Allgemeines<\/h1>\n<p><a href=\"https:\/\/firebase.google.com\/\">Firebase<\/a> ist eine Entwicklungsplattform f\u00fcr mobile und Webanwendungen, die Backend-as-a-Service (BaaS)-Funktionalit\u00e4ten bereitstellt. Dabei werden die Plattformen Android, iOS, Web, Unity etc. unterst\u00fctzt. Im Zuge dessen stellt Firebase Entwicklern \u00fcber ein Software Development Kit (SDK) Werkzeuge und Infrastruktur zur Verf\u00fcgung. Diese erm\u00f6glichen es, serverseitige Funktionalit\u00e4ten mittels Programmierschnittstellen f\u00fcr und auf verschiedenen Plattformen zu implementieren, ohne dabei die Serverinfrastruktur ber\u00fccksichtigen zu m\u00fcssen.<\/p>\n<p>Im Jahr 2014 \u00fcbernahm Google die Firebase Inc., welche im September 2011 von James Tamplin und Andrew Lee gegr\u00fcndet wurde und seitdem die Entwicklungsplattform Firebase entwickelte. Momentan wird die BaaS-Plattform von 1,5 Millionen Apps genutzt (vgl. [Wikipedia 2020], [Domin 2020]). Firebase besitzt achtzehn Produkte, welche zum Teil kostenpflichtig zur Verf\u00fcgung stehen. Jedoch werden die meisten Produkte bis zu ihrer individuellen Schwelle kostenlos angeboten. Sobald die produktspezifische Schwelle erreicht ist, skaliert der Preis mit steigender Nutzung des Produkts (vgl. [Firebase 2020]). Beispielhafte Pricingmodelle sind im Folgenden zu sehen, wobei die Schwelle in der jeweils mittleren und die Preise bei \u00dcberschreiten der Schwelle in der jeweils rechten Spalte abgebildet sind.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-124\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Pricing_Modelle1.png\" alt=\"\" width=\"1399\" height=\"380\" \/><br \/>\nAbbildung 1: Pricingmodell Firestore (vgl. [Firebase 2020])<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-125\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Pricing_Modelle2.png\" alt=\"\" width=\"1389\" height=\"280\" \/><\/p>\n<p>Abbildung 2: Pricingmodell Authentication (vgl. [Firebase 2020])<\/p>\n<h1>2. Features<\/h1>\n<p>In der <a href=\"https:\/\/console.firebase.google.com\/\">Firebase-Konsole<\/a> lassen sich die \u00fcber diverse API-Endpunkte anbindbaren Features von Firebase verwalten. Im Zuge dessen stehen dem Entwickler vier verschiedene Reiter zur Verf\u00fcgung, in denen Softwarefeatures unterschiedlicher Art vorzufinden sind.<\/p>\n<h2>2.1 Entwicklung<\/h2>\n<h3>2.1.1 Authentifizierung<\/h3>\n<p>Das von Firebase angebotene Authentication-Tool erm\u00f6glicht es, die loginspezifischen Daten von Nutzern sicher in der Firebase Cloud abzuspeichern und somit eine ger\u00e4te\u00fcbergreifende Nutzerauthentifizierung bereitzustellen. Dabei stellt Firebase unterschiedliche Authentifizierungsmethoden zur Verf\u00fcgung. Dazu geh\u00f6ren die Authentifizierung mittels E-Mail und Passwort, anhand eines bestehenden Google-Accounts oder anhand der Telefonnummer des Nutzers. Nutzbar wird die Authentication-Funktionalit\u00e4t durch die Anbindung der entsprechenden API (vgl. [Firebase 2020]).<\/p>\n<h3>2.1.2 Realtime Database und Firestore<\/h3>\n<p>Das zentrale Entwicklungsfeature von Firebase ist Firestore. Hierbei handelt es sich um eine dokumentenorientierte NoSQL-Cloud-Datenbank, welche die Datenspeicherung f\u00fcr Clients erm\u00f6glicht. Firestore baut auf der Realtime Database von Google auf, die ebenfalls in Firebase zur Verf\u00fcgung steht. Firestore bietet neue, intuitivere Datenmodelle, eine bessere Performance, umfangreichere Abfragen und ist skalierbarer als der Vorg\u00e4nger. Jedoch bietet die Realtime Database ebenfalls Vorteile, beispielsweise bez\u00fcglich der laufenden Kosten in Produktionsumgebungen (vgl. [Firebase 2020], [Firestore 2020]).<\/p>\n<h3>2.1.3 Hosting<\/h3>\n<p>Ein weiteres Produkt von Firebase ist das Hosting von Anwendungen. Hierdurch wird eine schnelle und einfache Bereitstellung, beispielsweise von Webanwendungen, erm\u00f6glicht (vgl. [Firebase 2020]).<\/p>\n<h3>2.1.4 Storage<\/h3>\n<p>Das Produkt Storage erm\u00f6glicht das Hochladen von Multimedia- und anderen Dateien auf Firebase, um diese anschlie\u00dfend im Softwareprojekt nutzten zu k\u00f6nnen (vgl. [Firebase 2020]).<\/p>\n<h3>2.1.5 Machine Learning<\/h3>\n<p>Das Produkt Machine Learning stellt unter anderem Features zur Mustererkennung bereit, wobei man lediglich Text-, Bild- oder andere Dateien an die API senden muss. Die API liefert anschlie\u00dfend eine Response mit passenden Informationen, beispielsweise mit zur Bilddatei passenden Labels (vgl. [Firebase 2020]).<\/p>\n<h3>2.1.6 Functions<\/h3>\n<p>Das letzte Feature von Firebase im Reiter Entwicklung ist die M\u00f6glichkeit zur Implementierung eigener Cloud-Funktionen. Auf diese kann man anschlie\u00dfend aus dem Softwareprojekt zugreifen. Dies erm\u00f6glicht die Auslagerung komplexen Backendcodes in die Firebase Cloud (vgl. [Firebase 2020]).<\/p>\n<h2>2.2 Qualit\u00e4t<\/h2>\n<p>Im Reiter Qualit\u00e4t stellt Firebase Features zur Fehlererkennung, Fehlerbehebung, Leistungs\u00fcberwachung und zum Testing zur Verf\u00fcgung. Darunter befindet sich das Tool Crashlytics, welches eine leichte Fehlererkennung und -behebung erm\u00f6glicht. Das Tool Performance dient der Leistungs\u00fcberwachung. Hierdurch werden Entwicklern Informationen zu Leistungsdaten der Anwendung, beispielsweise Ladezeiten oder die Dauer von Datenbankabfragen, bereitgestellt. Die Features Test Lab und App Distribution bieten die M\u00f6glichkeit, Anwendungen auf verschiedenen Deviceemulatoren mit verschiedenen Konfigurationen zu testen (vgl. [Firebase 2020]).<\/p>\n<h2>2.3 Analytics<\/h2>\n<p>Im Reiter Analytics, wobei es sich um das in Firebase integrierte Trackingtool Google Analytics handelt, stehen Entwicklern M\u00f6glichkeiten zum Tracking von Nutzeraktivit\u00e4ten und -daten, von der Effektivit\u00e4t von Werbeanzeigen und Push-Benachrichtigungen sowie von Fehlern in der vom Entwickler angebundenen Anwendung zur Verf\u00fcgung. Im Zuge dessen stellt Analytics unter anderem Features bereit, um zu trackende Events zu definieren und sich die getrackten Events in Dashboards anzeigen zu lassen. Des Weiteren lassen sich Audiences, also Gruppen von Nutzern, anhand deren Eigenschaften oder Verhaltensweisen innerhalb der Anwendung klassifizieren. Anschlie\u00dfend k\u00f6nnen gesonderte Push-Benachrichtigungen und Werbeanzeigen f\u00fcr diese Audiences festgelegt werden. Analytics stellt noch einige weitere Features zur Umsetzung von Funktionalit\u00e4ten dieser Art zur Verf\u00fcgung (vgl. [Firebase 2020]).<\/p>\n<h2>2.4 Wachstum<\/h2>\n<p>\u00dcber den Reiter Wachstum bietet Firebase Features zur Steigerung der Werbeeinnahmen, der Nutzerindividualit\u00e4t und weiteren Eigenschaften. So existiert beispielsweise das Produkt AdMob, wodurch die Anwendung monetarisiert und sinnvoll Werbung eingebunden werden kann. Weiterhin sind in diesem Reiter A\/B Tests, Nutzungsvorhersagen durch auf Machine Learning basierten Methoden, Cloud Messaging zum Versenden individueller Benachrichtigungen an Nutzer et cetera m\u00f6glich (vgl. [Firebase 2020]).<\/p>\n<h1>3. Konkurrenzvergleich<\/h1>\n<h2>3.1 Firebase<\/h2>\n<p>Firebase vereinigt, wie viele weitere Konkurrenzprodukte, alle wichtigen Backend-Tools f\u00fcr Softwareprojekte. Ziel aller dieser Produkte ist die Reduzierung des Implementierungsaufwands und der Relevanz der Serverinfrastruktur f\u00fcr Entwickler. Konkurrenten von Firebase sind beispielsweise <a href=\"https:\/\/www.back4app.com\/\">Back4App<\/a>, <a href=\"https:\/\/parseplatform.org\/\">Parse<\/a>, <a href=\"https:\/\/www.progress.com\/kinvey\">Kinvey<\/a>, <a href=\"https:\/\/backendless.com\/\">Backendless<\/a> oder <a href=\"https:\/\/aws.amazon.com\/de\/amplify\/\">AWS Amplify<\/a>. Dabei besitzt Firebase folgende Vorteile (vgl. [Back4App 2020]):<\/p>\n<ul>\n<li>eingebettetes Trackingtool Google-Analytics<\/li>\n<li>fortgeschrittene Fehlerberichterstattung (z.B. durch Crashlytics)<\/li>\n<li>unkomplizierte Nutzbarkeit durch ausgepr\u00e4gte Dokumentation<\/li>\n<\/ul>\n<p>Im Gegensatz dazu existieren folgende Nachteile:<\/p>\n<ul>\n<li>nur dokumentenorientierte und keine relationale Datenbank (z.B. Back4App bietet SQL- und NoSQL-L\u00f6sung)<\/li>\n<li>nur REST-APIs, keine GraphQL-APIs<\/li>\n<\/ul>\n<h2>3.2 Firestore<\/h2>\n<h3>3.2.1 Datenbankmodell<\/h3>\n<p>Firestore ist eine dokumentenorientierte Datenbank. Im Gegensatz zu relationalen Datenbanken wird hierbei auf Abfragen mithilfe von SQL verzichtet. Dennoch erm\u00f6glichen dokumentenorientierte Datenbanken CRUD-Funktionalit\u00e4ten. Ausgelegt sind sie auf die Speicherung semistrukturierter Daten, die keiner festen Struktur folgen. Dabei werden Daten durch Schl\u00fcssel-Wert-Paare in Dokumenten organisiert, welche wiederum in Sammlungen organisiert sind. Firestore speichert Daten im JSON-Format. Im Gegensatz zu relationalen Datenbanken, in denen f\u00fcr jedes nicht nullable Attribut ein Feld existieren muss, selbst wenn es in einem Datensatz nicht ben\u00f6tigt wird, m\u00fcssen Datens\u00e4tze keiner festen Struktur folgen. Das sorgt f\u00fcr weniger Einschr\u00e4nkungen, f\u00fchrt aber zur erh\u00f6hten Fehleranf\u00e4lligkeit durch Uneinheitlichkeit. Im Allgemeinen besitzen dokumentenorientierte Datenbanken eine bessere Performanz bei Suchanfragen, da optimalerweise alle zu einem Sachverhalt notwendigen Daten in einem separaten Dokument gespeichert sind und somit nicht \u00fcber viele Fremdschl\u00fcsselverkn\u00fcpfungen gesucht werden m\u00fcssen. Entscheidet man sich hingegen f\u00fcr den Einbau von Referenzen zwischen Dokumenten, kann dies zur gegenteiligen Wirkung f\u00fchren (vgl. [Ionos 2019]).<\/p>\n<h3>3.2.2 Produkt<\/h3>\n<p>Konkurrenten von Firestore sind <a href=\"https:\/\/www.elastic.co\/de\/elasticsearch\/\">Elasticsearch<\/a>, <a href=\"https:\/\/www.mongodb.com\/de\">MongoDB<\/a>, <a href=\"https:\/\/basex.org\/\">BaseX<\/a> oder <a href=\"https:\/\/couchdb.apache.org\/\">CouchDB<\/a>. Die Vorteile gegen\u00fcber der Konkurrenz sind folgende (vgl. [DB-Engines 2020]):<\/p>\n<ul>\n<li>bietet spezialisierte Zugriffskonzepte f\u00fcr App-Entwicklung<\/li>\n<li>erf\u00fcllt Transaktionskonzept mit ACID-Eigenschaften<\/li>\n<li>inkludierte User Authentication bei Einbindung<\/li>\n<\/ul>\n<p>Jedoch ergeben sich folgende Nachteile:<\/p>\n<ul>\n<li>unterst\u00fctzt weniger Programmiersprachen als Konkurrenz (z.B. MongoDB)<\/li>\n<li>keine SQL-Unterst\u00fctzung<\/li>\n<\/ul>\n<h1>4. Einbindung in Ionic \u2013 Softwareprojekt<\/h1>\n<p>F\u00fcr die Anbindung von Firebase in unser Softwareprojekt haben wir <a href=\"https:\/\/github.com\/angular\/angularfire\">Angularfire<\/a> verwendet. Dabei handelt es sich um die offizielle Angular Library f\u00fcr Firebase. Angularfire bietet eine leichtere Anbindung f\u00fcr die von Firebase bereitgestellten Features und sorgt f\u00fcr eine bessere Integrierung in die Umgebung von Angular.<\/p>\n<p>Die auf den folgenden Abbildungen ersichtlichen Code-Snippets wurden eigenh\u00e4ndig erstellt.<\/p>\n<h2>4.1 Firestore<\/h2>\n<h3>4.1.1 Anbindung<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-126\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung1.jpg\" alt=\"\" width=\"623\" height=\"339\" \/><\/p>\n<p>Abbildung 3: Beispiel einer Sammlung in Firestore (vgl. [Firebase 2020])<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-127\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung2.jpg\" alt=\"\" width=\"493\" height=\"60\" \/><\/p>\n<p>Abbildung 4: Referenz f\u00fcr eine Sammlung anlegen<\/p>\n<p>Zuerst muss eine Referenz erstellt werden, um die Record Collection bearbeiten und beobachten zu k\u00f6nnen. Jetzt kann auf die Record-Collection in der Datenbank zugegriffen werden.<\/p>\n<h3>4.1.2 Create<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-128\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung3.jpg\" alt=\"\" width=\"590\" height=\"130\" \/><\/p>\n<p>Abbildung 5: Einer Sammlung einen neuen Eintrag hinzuf\u00fcgen<\/p>\n<p>Um einen neuen Eintrag in die Sammlung hinzuf\u00fcgen zu k\u00f6nnen, wird die\u00a0<em>add<\/em>\u00a0Funktion verwendet. Hierbei wir ein Objekt an die Funktion \u00fcbergeben. Eine ID ist jedoch nicht notwendig, da diese von Firebase automatisch erstellt wird. Deshalb wird mit Hilfe der\u00a0<em>copyAndPrepare<\/em>\u00a0Funktion der ID Eintrag entfernt.<\/p>\n<h3>4.1.3 Read<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-129\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung4.jpg\" alt=\"\" width=\"496\" height=\"178\" \/><\/p>\n<p>Abbildung 6: Eintr\u00e4ge einer Sammlung auslesen<\/p>\n<p>Neuerungen in einer Datensammlung k\u00f6nnen automatisch \u00fcbermittelt werden, indem auf ein Observable subscribt zugegriffen wird. Deshalb wird zuerst ein Observable erstellt, welches die \u00c4nderungen der Record-Sammlung zur\u00fcckgibt. Hierbei ist anzumerken, dass alle Felder eines Dokuments in Form eines Objekts von der Datenbank zur\u00fcckgegeben werden und die ID separat \u00fcbermittelt wird. Deshalb muss die ID dem Datenobjekt hinzugef\u00fcgt werden.<\/p>\n<h3>4.1.4 Update<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-130\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung5.jpg\" alt=\"\" width=\"713\" height=\"128\" \/><\/p>\n<p>Abbildung 7: Eintrag einer Sammlung editieren<\/p>\n<p>Um einen Eintrag \u00e4ndern zu k\u00f6nnen, muss die ID des Dokumentes zusammen mit dem ge\u00e4nderten Objekt an die Funktion\u00a0<em>update<\/em>\u00a0\u00fcbergeben werden.<\/p>\n<h3>4.1.5 Delete<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-131\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung6.jpg\" alt=\"\" width=\"473\" height=\"125\" \/><\/p>\n<p>Abbildung 8: Eintrag aus einer Sammlung entfernen<\/p>\n<p>F\u00fcr das Entfernen von Dokumenteintr\u00e4gen muss lediglich die ID des entsprechenden Dokuments \u00fcbergeben werden.<\/p>\n<h2>4.2 Authentifizierung<\/h2>\n<p>F\u00fcr die Authentifizierung wurde das E-Mail\/Passwort Verfahren gew\u00e4hlt.<\/p>\n<h3>4.2.1 Registrieren<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-132\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung7.jpg\" alt=\"\" width=\"460\" height=\"212\" \/><\/p>\n<p>Abbildung 9: Registrierung eines neuen Nutzers<\/p>\n<p>Bei der Registrierung m\u00fcssen eine E-Mail und ein Passwort an die\u00a0<em>createUserWithEmailAndPassword<\/em>-Funktion \u00fcbergeben werden. Firebase \u00fcberpr\u00fcft die \u00fcbermittelten Daten und teilt den Erfolg oder Misserfolg mit. Bei Erfolg wird der neue Nutzer in der Authentifizierungsdatenbank von Firebase abgespeichert.<\/p>\n<h3>4.2.2 Login<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-133\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung8.jpg\" alt=\"\" width=\"433\" height=\"248\" \/><\/p>\n<p>Abbildung 10: Einloggen mithilfe der Nutzerdaten<\/p>\n<p>F\u00fcr das Einloggen m\u00fcssen wieder E-Mail und Passwort \u00fcbergeben werden. Die Funktion, welche das Einloggen handhabt, ist\u00a0<em>signInWithEmailAndPassword<\/em>. Im Erfolgsfall wird der Nutzer eingeloggt, was auch in Firebase gespeichert wird.<\/p>\n<h3>4.2.3 Logout<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-134\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung9.jpg\" alt=\"\" width=\"448\" height=\"132\" \/><\/p>\n<p>Abbildung 11: Ausloggen eines Nutzers<\/p>\n<p>F\u00fcr das Ausloggen muss lediglich die\u00a0<em>signOut<\/em>\u00a0Funktion aufgerufen werden.<\/p>\n<h2>4.3 Storage<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-135\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung10.jpg\" alt=\"\" width=\"537\" height=\"335\" \/><\/p>\n<p>Abbildung 12: Storage Bereich in Firebase (vgl. [Firebase 2020])<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-136\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Einbindung11.jpg\" alt=\"\" width=\"1172\" height=\"47\" \/><\/p>\n<p>Abbildung 13: Einbindung einer Bilddatei aus dem Firebase-Storage<\/p>\n<p>Wie bereits beschrieben, ist es m\u00f6glich, Multimedia- und andere Dateien in den Storage von Firebase zu laden und diese zu verwenden. Hier ist das in Firebase hochgeladene HTWK-Logo zu sehen. Im Softwareprojekt kann dieses \u00fcber einen von Firebase bereitgestellten Link eingebunden werden.<\/p>\n<h2>4.4 Hosting<\/h2>\n<p>Eine Webanwendung \u00fcber Firebase zu hosten kann in wenigen Schritten erreicht werden:<\/p>\n<ul>\n<li>Firebase tools installieren (<em>npm install firebase-tools<\/em>)<\/li>\n<li>bei Firebase einloggen (<em>firebase login<\/em>)<\/li>\n<li>Firebase initialisieren (<em>firebase init<\/em>)<\/li>\n<li>die Applikation bauen (<em>ionic build &#8211;prod &#8211;release<\/em>\u00a0| f\u00fcr den Fall einer Ionic-Anwendung)<\/li>\n<li>die Anwendung bereitstellen (<em>firebase deploy<\/em>)<\/li>\n<\/ul>\n<p>Die im Rahmen des Vortrages erstellte Webanwendung kann \u00fcber folgenden Link erreicht werden:\u00a0<a href=\"https:\/\/ema-ss19-3706b.web.app\/\">https:\/\/ema-ss19-3706b.web.app<\/a><\/p>\n<h1>Literaturverzeichnis:<\/h1>\n<p>[Back4App 2020] Back4App, Die f\u00fcnf besten Firebase-Alternativen, blog.back4app.com, 2020, URL: <a href=\"https:\/\/blog.back4app.com\/de\/die-funf-besten-firebase-alternativen\/\">https:\/\/blog.back4app.com\/de\/die-funf-besten-firebase-alternativen\/<\/a>, gelesen am 25.11.2020.<\/p>\n<p>[DB-Engines 2020] DB-Engines, Vergleich der Systemeigenschaften Elasticsearch vs. Google Cloud Firestore vs. MongoDB, db-engines.com, 2020, URL: <a href=\"https:\/\/db-engines.com\/de\/system\/Elasticsearch%3BGoogle+Cloud+Firestore%3BMongoDB\">https:\/\/db-engines.com\/de\/system\/Elasticsearch%3BGoogle+Cloud+Firestore%3BMongoDB<\/a>, gelesen am 25.11.2020.<\/p>\n<p>[Domin 2020] Domin, A., Das derzeit wohl m\u00e4chtigste Tool f\u00fcr Entwickler hei\u00dft Firebase, t3n.de, 2018, URL: <a href=\"https:\/\/t3n.de\/news\/das-derzeit-wohl-maechtigste-tool-fuer-entwickler-heisst-firebase-1101411\/\">https:\/\/t3n.de\/news\/das-derzeit-wohl-maechtigste-tool-fuer-entwickler-heisst-firebase-1101411\/<\/a>, gelesen am 25.11.2020.<\/p>\n<p>[Firebase 2020] Firebase Dokumentation, firebase.google.com, 2020, URL: <a href=\"https:\/\/firebase.google.com\/\">https:\/\/firebase.google.com\/<\/a>, gelesen am 29.11.2020.<\/p>\n<p>[Firestore 2020] Firestore Dokumentation, firebase.google.com, 2020, URL: <a href=\"https:\/\/firebase.google.com\/docs\/firestore\/data-model\">https:\/\/firebase.google.com\/docs\/firestore\/data-model<\/a>, gelesen am 25.11.2020.<\/p>\n<p>[Ionos 2019] Ionos, Dokumentenorientierte Datenbank: Wie funktioniert der Document Store?, ionos.de, 2019, URL: <a href=\"https:\/\/www.ionos.de\/digitalguide\/hosting\/hosting-technik\/dokumentenorientierte-datenbank\/\">https:\/\/www.ionos.de\/digitalguide\/hosting\/hosting-technik\/dokumentenorientierte-datenbank\/<\/a>, gelesen am 25.11.2020.<\/p>\n<p>[Wikipedia 2020] Seite \u201eFirebase\u201c, In: Wikipedia, Die freie Enzyklop\u00e4die, de.wikipedia.org, 2020, URL: <a href=\"https:\/\/de.wikipedia.org\/wiki\/Firebase\">https:\/\/de.wikipedia.org\/wiki\/Firebase<\/a>, gelesen am 26.11.2020.<\/p>\n<h1>Pr\u00e4sentationsfolien:<\/h1>\n<p><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2021\/01\/Firebase.pdf\">Firebase<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Allgemeines Firebase ist eine Entwicklungsplattform f\u00fcr mobile und Webanwendungen, die Backend-as-a-Service (BaaS)-Funktionalit\u00e4ten bereitstellt. Dabei werden die Plattformen Android, iOS,<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[17,18,19],"class_list":["post-116","post","type-post","status-publish","format-standard","hentry","category-betriebliche-informationssysteme","tag-baas","tag-dbs","tag-sdk"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=116"}],"version-history":[{"count":10,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/116\/revisions"}],"predecessor-version":[{"id":602,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/116\/revisions\/602"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}