Grundbegriffe

Projekte, Typen und Ansichten

Projekte

Die Daten in SketShDb sind in Projekten organisiert. Ein Projekt ist eine abgeschlossene Ansammlung von Daten. Wenn du Daten mit anderen Benutzern teilen willst (siehe Replikation), dann teilst du immer ganze Projekte. Ebenfalls umfassen Vorlagen und Backups immer ganze Projekte (deshalb werden sie später auch einfach als Projektvorlagen bzw. Projektbackups bezeichnet). Technisch versierte Benutzer würden zu einem Projekt wahrscheinlich "Datenbank" sagen. Ein Projekt kann Daten unterschiedlichster Typen beinhalten, die aber zusammengehören und in den meisten Fällen auch voneinander anhängen.

Typen und deren Felder

Bevor du Daten eingeben kannst musst du definieren, wie die Daten aussehen bzw. worum es sich bei den Daten handelt. Die Zusammenstellung von verschiedenen Daten (Text, Zahlen, Orte, Datum, etc.) zu einer Einheit ist ein Typ. Jeder Typ hat ein Eingabeformular das die verschiedenen Felder enthält.

Beispiele für Datentypen:

Zu diesem Projekt würde man z.B. folgende Typen einrichten
Adressbuch Person bzw. Kontakt
Bücherliste Buch, Genre, Verlag
Blog Blogeintrag
Passwort-Liste Passwort-Eintrag
Restaurantliste Restaurant,Typ

Jeder Typ besteht aus mehreren Feldern (ein Restaurant z.B. aus Name, Adresse/Ort, Typ, Preislevel, Fotos, Kommentare,...) die in einem Formular erfasst werden. Du kannst in der Typkonfiguration Typen anhand ihres zugehörigen Formulars definieren oder anders herum: Du definierst das Eingabeformular für einen Typen und damit automatisch auch seine Felder. Es gibt verschiedene Arten von Feldern:

Beispiele für Felder eines Typs: Dieser Typ könnte z.B. folgende Felder haben
Person Vorname,Nachname,Telefonnummer,E-Mailadresse
Buch Titel,Autor,Erscheinungsjahr,Genre (z.B. als Verweis auf den Typ "Genre"),Verlag (Verweis auf Typ "Verlag"),Anzahl Seiten, usw.
Verlag Name,Ort,Gründungsjahr
Blogeintrag Datum,Text,(Autor),Kommentare
Passwort-Eintrag Titel,Benutzername,Passwort,(URL),Notiz

Tutorial-Video 2: Feldarten (YouTube, externer Link)

Ansichten

Das Formular eines Typs zeigt dir nur die Daten genau eines Objekts an. Da du in einer Restaurant-Datenbank sicherlich mehrere Restaurants speichern möchtest benötigst du noch eine Ansicht: Ansichten zeigen mehrere Datenbankobjekte eines Typs an. Aktuell gibt es in SketShDb drei Arten von Ansichten: Listen, Landkarte und Graph.

Tutorial-Video 3: Ansichten (YouTube, externer Link)

Es gibt Eigenschaften der Listenkonfiguration, die für alle Arten von Listen gelten, z.B.

Andere Eigenschaften sind spezifisch für den Typ der Ansicht:

Listen

Listenansichten habe zusätzlich folgende Eigenschaften:

Kartenansichten

Graphenansichten

Damit du schnell ähnliche Ansichten erstellen kannst (die sich z.B. nur anhand des Filters unterscheiden) kannst du Ansichten auch kopieren.

Replikation

Das Projekt auf deinem IPhone kann ständig mit anderen Datenbanken synchronisiert werden, so dass immer alle Instanzen des Projekts auf dem gleichen Stand sind (sobald sie Kontakt zueinander haben, z.B. über das Internet). Mit "Instanzen" ist dabei z.B. gemeint:

Mobile Instanzen

Direkt (ohne zwischengeschaltete Serverinstanz) zwischen zwei IPhones funktioniert leider keine automatische Replikation. Dazu müsste auf einem der IPhones dauerhaft ein Netzwerkport geöffnet sein und die typischerweise dynamische Adresse eines IPhones ständig über DNS-Einträge "öffentlich" gemacht werden, das wäre ein ziemliches Sicherheitsproblem. Für diesen Zweck ist die Funktion "LiveSync" geplant. Sobald diese Funktion zur Verfügung steht, kannst Du ein Projekt mit einem Freund synchronisieren, wenn ihr euch beide in dem selben Netzwerk (in der Regel ist das ein WLAN) befindet.

Tutorial-Ausschnitt: LiveSync (YouTube, externer Link)
Tutorial-Ausschnitt: Projekt über LiveSync erzeugen (YouTube, externer Link)
Tutorial-Ausschnitt: Bestehende Projekte über LiveSync synchronisieren (YouTube, externer Link)

Server-Instanzen

Lokale Serverinstanzen

Über frei erhältliche Software (Apache CouchDB, Couchbase Server) kann man auf jedem beliebigen Rechner (Desktop, Laptop oder Server) auf allen gängigen Betriebssystemen einen Datenbankserver installieren, der das CouchDb-Protokoll "versteht". Diesen kannst du in der App unter Einstellungen / Server konfigurieren einrichten. Dann kannst du in der Projektkonfiguration unter Replikationen die Synchronisierung des Projekts mit einer Datenbank auf dem Server einrichten. Du kannst dann über "Teilen..." in der App die Verknüpfung zu deiner Server-Datenbank an andere Personen weitergeben, die Netzwerkzugriff auf deinen Server haben. Dann wird sich euer Projekt immer dann synchronisieren, wenn das jeweilige Gerät Zugriff auf den Server hat. Falls du den Zugriff auf den Server aus dem Internet ermöglichen kannst, dann kannst du auf diese Weise deinen eigenen Cloudserver zu Hause betreiben und weisst immer wo sich deine Daten befinden.

ACHTUNG: Ihr solltet den Zugriff auf solch einen Server IMMER per HTTPS absichern. Die Einrichtung ist etwas komplizierter aber ohne SSL kann jeder mit Zugriff auf das Netzwerk in dem ihr euch befindet auf alle Daten in der synchronisierten Datenbank zugreifen! Ein selbst erzeugtes Zertifikat ist dabei auf jeden Fall besser als gar keines. Die Einrichtung und der Betrieb jedweden Servers, dazugehöriger Software und Netzwerkkonfigurationen erfolgt natürlich auf eigenes Risiko und eigene Kosten!

Cloud-Instanzen

Am einfachsten ist die Einrichtung eines Servers über IBM Cloudant. Dies ist ein Cloudservice, der direkt "out of the box" eine CouchDb-fähige Datenbank anbietet. Um die Einrichtung eines HTTPS-Zertifikats muss man sich dabei auch keine Gedanken machen. Die Nachteile sind:

Man kann allerdings auch auf einen anderen Cloud-Hosting-Anbieter ausweichen und dort entweder eine vorgefertigte Apache CouchDB oder Couchbase Server-Instanz verwenden (dafür gibt es teilweise auch Anleitungen zur Einrichtung bei den Anbietern) oder man mietet sich einen Server und installiert selbst die gewünschte Software. (Das ist wahrscheinlich eher was für die Nerds unter euch oder für Firmen.

Jede Cloud-Instanz wird ebenfalls unter Einstellungen / Server konfigurieren eingerichtet und steht dann für Replikationen zur Verfügung.

Serverinstanzen können prinzipiell beliebig viele Projekte beherbergen, auf dem Server sind das dann einzelne "Datenbanken".

Tutorial-Ausschnitt: Serverreplikation (YouTube, externer Link)
Tutorial-Ausschnitt: Server konfigurieren (YouTube, externer Link)
Tutorial-Ausschnitt: Replikation einrichten (YouTube, externer Link)
Tutorial-Ausschnitt: Bestehendes Serverprojekt herunterladen (YouTube, externer Link)
Tutorial-Ausschnitt: Replikationsstatus (YouTube, externer Link)
Tutorial-Ausschnitt: Replikationskonfiguration (YouTube, externer Link)

Server-Modus

Die SketShDb-App für macOS bietet noch eine weitere Möglichkeit: Den Servermodus. Die App lässt sich selbst als Server verwenden und mobile Endgeräte im gleichen Netzwerk können die Mac-Variante wie eine Serverinstanz konfigurieren.

Tutorial-Ausschnitt: Servermodus (YouTube, externer Link)

Multi-Benutzerbetrieb

Mittels Replikation können auch mehrere Benutzer gleichzeit mit dem gleichen Projekt arbeiten. Im Prinzip ist es dazu nur notwendig, dass sich beide Geräte mit der gleichen Serverinstanz synchronisieren. Dann muss der Projekteigentümer nur noch den weiteren Benutzer freigeben.

Tutorial-Ausschnitt: Freigabe neuer Benutzer im Projekt (YouTube, externer Link)

Einschränkungen der Replikation

Ein Projekt kann prinzipiell auch mit mehreren Servern synchronisiert werden. Allerdings muss darauf geachtet werden, dass nur identische Projekte miteinander kompatibel sind.

Tutorial-Ausschnitt: Welche Projekte können synchronisiert werden? (YouTube, externer Link)

Backups und Vorlagen

Technisch gesehen sind Backups und Vorlagen sehr ähnlich. Beides sind Archive die die Konfigurationen und (beo Vorlagen teilweise) die Daten eines Projekts enthalten. Beide unterscheiden sich aber in den Details und vor allem in der Verwendung.

Tutorial-Ausschnitt: Backups und Vorlagen (YouTube, externer Link)

Backups

Backups sind dazu da, Projekte zu sichern und dich so vor Datenverlust zu schützen, falls mal etwas schief geht oder jemand ungewollt Daten löscht. Replikationen sind dazu nicht so geeignet, da sich die Daten ja meistens sofort synchronisieren, wenn man mal einen Fehler macht. Man kann Backups im Prinzip auch verwenden um zwischen den EIGENEN Geräten Projekte (z.B. per E-Mail) auszutauschen. Dazu sollte aber wenn möglich immer die Replikation verwendet werden. Die ist extra dazu da, Daten synchron zu halten. Wenn du Backups hin- und herschickst, dann musst du dich darum zum Großteil selbst kümmern. Backups enthalten immer ALLE Daten einer Datenbank, die Daten sind dabei signiert, d.h. wenn jemand, der kein Datenbankeigentümer oder -administrator ist das Backup wieder einspielen möchte, wird es zu Signaturfehlern kommen. In einem Backup bzw. beim Wiederherstellen wird die Datenbank-ID erhalten, d.h. wenn ein Projekt aus einem Backup wiederhergestellt wurde, dann kann man dieses wieder mit einer bestehenden Instanz des gleichen Projekts synchronisieren.

Vorlagen

Vorlagen sind dazu gedacht lediglich die Struktur eines Projektes (also vor allem die definierten Typen und Ansichten) ohne Daten weiterzugeben. Teilweise gibt es aber Daten, die eigentlich zur Struktur gehören (z.B. die Einträge für "Genre" bei einer Bücher oder Filmliste). Deshalb können bei der Erzeugung von Vorlagen die Typen ausgewählt werden, für die die Daten mit in die Vorlage übernommen werden. Bei der Erzeugung einer Vorlage werden alle Signaturen entfernt, d.h. eine Vorlage kann von jedem eingespielt werden, allerdings wird eine neue Datenbank-ID erzeugt und das erzeugte Projekt lässt sich nicht mehr mit der ursprünglichen Datenbank synchronisieren.

Kompatibilität

Es ist geplant, dass sich SketShDb mit der Zeit immer weiter entwickelt. Neue Versionen von SketShDb werden deshalb neue Funktionalitäten enthalten. Wenn in einem Projekt neue Funktionalitäten verwendet werden, dann kann das Projekt oder Teile davon (z.B. bestimmte Ansichten) nicht mehr mit älteren Versionen von SketShDb verwendet werden. Bei lokalen Pojekten stellt dies in der Regel kein Problem dar, falls das Projekt aber mit anderen geteilt wird dann kann es passieren, dass bei anderen Projektteilnehmern mit älteren App-Versionen die Meldung erscheint, dass das Projekt mit ihrer App-Version nicht mehr verwendet werden kann, obwohl dies vor Verwendung der neuen Funktionalität ohne Weiteres möglich war. Durch Verwendung neuer Funktionalitäten werden die anderen Projektteilnehmer also zur Verwendung einer neueren App-Version "gezwungen". Bitte bedenke dies bei der Administration von geteilten Projekten!


  1. "Apache" und "CouchDB" sind eine eingetragene Handelsmarken der Apache Software Foundation 

  2. "Couchbase" ist eine eingetragene Handelsmarke der Couchbase, Inc. 

  3. "IBM" und "Cloudant" sind eingetragene Handelsmarken der IBM Corporation