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:
- Text (einzeilig oder mehrzeilig)
- Zahlen
- Datum (nur Datum, nur Zeit oder Datum+Zeit)
- Schalter (Ja/Nein)
- Listen mit vordefinierten Werten bei denen nur ein Wert ausgewählt werden kann
- Listen mit vordefinierten Werten bei denen mehrere Werte ausgewählt werden können.
- Referenzen auf einen anderen Typ (einzeln, mehrfach)
- Auswahl von einzelnen / mehreren Personen, die am Projekt mitarbeiten
- Formel
- Ort
- Telefonnummer
- E-Mailadresse
- Fotos
- Audionachrichten
- Dateien
- Kommentare (mit oder ohne 0-5 Sterne-Bewertung)
- Like / Dislike
- Tags
- Link
- Farbe
- Bar- /QR-code
- (Zur Gliederung des Eingabeformulars steht zusätzlich noch ein Platzhalter zur Verfügung. Dabei handelt es sich im engeren Sinne aber nicht um ein Feld eines Typs.)
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.
- Daten welchen Typs angezeigt werden sollen (das wird beim Erstellen der Ansicht ausgewählt und kann später nicht mehr geändert werden)
- Ob du nur bestimmte Elemente angezeigt bekommen möchtest (Filter)
- Welche Benutzerrollen die Ansicht sehen dürfen (Zugelassene Rollen))
- Welche Berechtigungen für die Ansicht gelten. (Es haben aber nicht immer alle Berechtigungen eine Auswirkung.)
Andere Eigenschaften sind spezifisch für den Typ der Ansicht:
Listen
Listenansichten habe zusätzlich folgende Eigenschaften:
- Welche Daten des Typs in der Liste angezeigt werden sollen (Layout)
- Wie die Liste sortiert sein soll (Sortierung)
- Ob die Liste anhand bestimmter Daten in Abschnitte eingeteilt sein soll (Bereiche)
- Ob in der Fußzeile ein berechneter Wert angezeigt werden soll (Summen)
- Nach welchen Daten des Typs du in der Liste suchen kannst (Suche)
- In welchen Farben die Listenansicht erscheint (Farben)
- Welche Felder in der Formularansicht beim Einfügen bzw. Bearbeiten dargestellt werden und editierbar sind. (Felder)
Kartenansichten
- Welches Ortsfeld zur Darstellung der Position genutzt wird und welche Daten des Typs in der Landkarte nach dem Antippen angezeigt werden (Layout)
- Welche Felder in der Formularansicht beim Einfügen bzw. Bearbeiten dargestellt werden und editierbar sind. (Felder)
Graphenansichten
- Diagrammoptionen (z.B. welche Eigenschaft für x- und y-Achse des Graphen verwendet werden)
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:
- Das Projekt auf deinem Handy oder dem Handy eines Freundes
- Eine Datenbank auf einem Server bei dir zu Hause oder auf einem Laptop (mit einer Software, die das Apache CouchDB1-Protokoll unterstützt wie Apache CouchDB oder Couchbase2 Server)
- Eine Datenbank "in der Cloud", z.B. "vorgefertigt" bei IBM Cloudant3 oder selbst installiert bei einem Cloud-Hostingdienst
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:
- Die Daten liegen in der Cloud (falls es dich stört)
- Es kostet möglicherweise etwas extra, wenn man viele Daten und häufige Änderungen hat. Es gibt zum Zeitpunkt der Erstellung dieser Dokumentation aber auch einen komplett kostenlosen Serviceplan für geringe Nutzung. (ohne Gewähr)
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!