RocketBase (SQL Datenbank rund um die BEANS)

Soooo liebe Leute, da ich mich gerade mit relationalen Datenbanken beschäftige, ist mir in den Sinn gekommen, wie nützlich es doch wäre, eine funktionelle SQlite Datenbank mit wichtigen Informationen rund um den BEANS Kosmos zu haben.

Warum SQLite?
Die Wahl des jeweiligen Datenbanksystems hat exakt den Grund, dass einige hier gerne Apps für Smartphones schreiben…und wie es der Zufall so will, kommt Android ziemlich gut mit SQLite klar, im Gegensatz zu anderen Systemen ^^
Zudem lässt sich SQL leicht in Rich-Client Anwendungen implementieren. Ich kann zwar nur für Java Anwendungen sprechen, denke aber, dass es auch in anderen Sprachen kein Problem sein dürfte, da SQL seit Ewigkeiten standardisiert ist.

Was für Informationen sollen in der Datenbank enthalten sein?
Hauptziel der Datenbank soll es (sehr viel) später einmal sein, sämtliche von den Bohnen gelieferte Inhalte kategorisieren zu können. Für mich bedeutet das, dass bestehende Youtube-System quasi um Informationen zu erweitern, die früher einmal im Blog auf gameone.de gestanden hätten. Aber was genau meine ich damit? Für mich fehlen im Youtube-System grundlegende Informationen: Zwar steht im Titel, wer in einem Video vorkommt, aber will man spezifisch nach Mitarbeitern suchen, haut Youtube nur Mist raus. Beispiel: Ich schaue gern LP mit Dennis R., weshalb ich ab und an einfach danach suche. Was haut Youtube bei dieser Suche raus? Drölfzig Teile von Civ 6. Wäre es nicht viel besser, wenn einem die Reihen angezeigt werden würden, die er mal gespielt hat? Anstatt hundert Teile der gleichen Reihe?
Und wäre es nicht nett, wenn einem zusätzlich dazu eine kurze Zusammenfassung angezeigt werden würde, was in der Folge so passiert? Wäre es nicht nützlich zu wissen, ob die Reihe noch läuft oder ob sie abgeschlossen/abgebrochen ist? Oder wenn ich gerade ein Video schaue, warum kann ich dann nicht einfach schnell den Namen des Mitarbeiters anklicken und mir werden ein Bild und eine kurze Beschreibung angezeigt? Oder auf welche Spitznamen er hört?
Was ist, wenn ich nach Themen suchen will? SciFI, Western und Konsorten? Kann ich das auf Youtube? Was ist, wenn ich nur Laberformate suchen will? Oder wenn ich nur Videos sehen will, in denen ein bestimmter Mitarbeiter eben nicht vorkommt, weil er mir, warum auch immer, unsympathisch ist/ich seiner gerade überdrüssig bin?

Kurzum nochmal zusammengefasst: Die geplante Datenbank soll für Programmierer rund um den BEANS Kosmos zusätzliche Informationen bereitstellen. Wenn sie einmal fertig ist, soll sie bspw. alle Videos der Beans mit zusätzlichen Informationen versehen. Da die Beans weiterhin munter Inhalte produzieren, ist das ein Kampf gegen Windmühlen, weshalb ich mir noch was überlegen muss, um zumindest das Eintragen der jeweiligen Videos und ein paar der Informationen zu automatisieren. Das ist allerdings noch Zukunftsmusik.

Ein Beispiel:

Hier ein Entwurf für eine Relation die alle Mitarbeiter der Beans enthält. Der Entwurf ist nicht final und da es gerade spät ist, enthält er sicherlich auch noch Fehler, aber er zeigt zumindest einen ersten Ansatz.
Bspw. würde ich das Attribut „Spitzname“ in eine eigene Relation auslagern, da jeder Mitarbeiter mehrere Spitznamen haben kann.
Da sie nur einen ersten Eindruck schaffen soll, habe ich bisher nur 5 Einträge vorgenommen. Außerdem ist sie auch noch nicht 100% richtig eingestellt.
Die angegeben Bilder sind Teile der URLs hier auf der Bohnen Seite. Zusammen mit https://www.rocketbeans.tv/wp-content/uploads/
ergeben sie dort angegebenen Bilder der Mitarbeiter.
Die Beschreibung wurde als Rich text gespeichert und auch der Seiter hier entnommen.

1 „Gefällt mir“

und wie möchtest du die Datenbank Synchronisieren? Ne Datenbank ist kein Datenaustauschprotokoll. Viel praktischer für Programmierer wäre nen Webservice, der die Daten aus deiner SQlite oder whatever Datenbank anbietet. Neue Daten können dann zentral im backend gespeichert werden. Vermutlich wäre ein REST-Protokoll dafür ganz nice.

Apps könnten dann eine anfrage ähnlich “gib mir alle Einträge zu Bohnen, die seit dem geändert worden”.

Deine Arbeit ist dadurch nicht vergebens - man kann die Daten halt auch in SQLite im Backend bereithalten

Oder aber jemand der bei den Beans arbeitet hält die Seite hier aktuell. Denn hier kann man unter Bohnen sehen bei welchem Format diese beteiligt war.

Sieht aus, als gäbe es da bereits Probleme mit Umlauten :slight_smile:

Ansonsten will ich deinen Enthusiasmus nicht bremsen, aber das Projekt dürfte abhängig von genügend aktiven Helfen sein. Und irgendwie zweifle ich daran, dass Du die finden wirst.

Exakt das ist bisher mein größtes Problem. Mir ist durchaus bewusst, das ein Webservice dafür am Sinnigsten wäre, allerdings kenne ich mich 0.0 mit Webentwicklung aus. Das wird sich noch ändern, insofern ich die Zeit dafür finde, allerdings kann das dauern. REST wäre natürlich super für sowas geeignet.
Allerdings kann man bis dahin schonmal Informationen in die Datenbank hauen, die sich nicht mehr/kaum noch ändern wie bspw. Video-URLS und Informationen dazu.
Aber meine erste Idee dazu war tatsächlich, dass man die Datenbank in seine jeweilige App importiert.

@Timpingbert
Ja, ist mir bewusst, allerdings weiß ich auch, dass a) die Seite nur so halbwegs aktuell ist und b) wäre mir nicht bewusst, wie ich auf die Infos programmatisch zugreifen kann.

@Desotho
Es war spät/früh, ich hab’ die falsche Kodierung gewählt. ^^

Du willst per Hand alle Youtube Videos in die Datenbank schreiben? Viel Spaß.
Und selbst wenn du es schaffst, ich halte es für unrealistisch, dass das Projekt lange leben wird und alle regelmäßig alles eintragen.

Da würde ich eher zur Youtube API greifen und die Videos per Abfrage abgreifen und analysieren. (z.B. die Namen aus Titel und Beschreibung raus lesen)

Dann hast du eine durchgehend aktuelle Datenbank.

Ich habe das selber mal probiert und es hat auch ganz gut funktioniert, habe das Projekt aber dann nicht mehr weiter gemacht:
http://mediathek.insanity-interactive.com/index.php

Ich nutzte da wie gesagt die Youtube API und hole mir alle RocketBeans LP Videos und analysiere den Titel. (z.B. Filtere ich Namen raus um zu erfahren wer im Video dabei ist.)
z.B: bei Knallhart Durchgenommen - Horizon Zero Dawn #019 steht darunter Mit: Gregor, Fabian. Daher es wurde richtig erkannt.
Da ich das Projekt wie gesagt nicht weiter gemacht habe, buggt es derzeit auch etwas. Diverese Moderatoren sind nicht eingetragen und daher erkennt er dann auch nicht wer da mitmacht. (siehe z.B. Zelda)

Die Idee dahinter war es, dass man eine Datenbank mit allen Videos hat und wer wo mitmacht. So dass man via Suchfeld Tags eingeben kann und danach gesucht wird. (z.b. Lustiges Lets Play mit Colin)

Vll mache ich es ja irgendwann weiter.

Hi Silvermonkey,
Eine Datenbank per Hand zu erstellen, in dem du (unter anderem?) Bohnen zu Videos zu ordnest ist eine Mammutaufgabe, dessen Zweck, wie bereits von mir Beschrieben, fragwürdig ist.
Wenn du dich üben möchtest im Umgang mit Datenbanken, so versuche eine Reale Anwendung hierzu zu finden. SQLite ist geil - weil es eine ganze Datenbank in einer Datei ist. Und deshalb wird sie von Mobilen Betriebssystemen genutzt. Deine Idee ist durchsetzbar, keine Frage - jedoch ist eine Synchronisation der Daten mit Mobilen geräten auf diese Weise schlicht nicht schön bzw. unsinnig (per mobile Daten eine ganze Datenbank herunterladen? warum überhaupt die ganze Datenbank auf dem Gerät verfügbar halten, werden nicht sowieso immer nur teile der Datenbank benötigt?).

Daher mein Hinweis an dich:
Nimm den Rat von @Ziagl ernst und trage nicht alle Daten manuell (per INSERT!?) in die Datenbank ein, sondern schaffe dir Werkzeuge mit der Datenbank zu interagieren. So würde dies auch in realen Anwendungsbereichen geschehen, und so bringt es dir am Meisten sinnvolle Übung.

Geht es dir hingegen nicht um Übung, sondern um das Ergebnis - so gibt es Dienste, durch die der gesamte Backend-Teil als Dienst bereitgestellt werden kann. Heise, hatte da mal einen coolen Artikel zu, Stichwort “Backend as a Service”. Du hast dann zwar keine SQL Datenbank, aber praktisch eine REST Schnittstelle, bei manchen sogar eine Java/Swift/Objective-C-API zur Verwendung. Die Umsetzung bzw. die Nutzung durch Clients wird viel leichter, und das sollte das Ziel sein, wenn du möchtest, dass anwendungsentwickler die von dir bzw. von der community gepflegten Daten nutzen. Und das ist immerhin der Motor für die Langzeitmotivatiion und das Am-Leben-Bleiben des Projektes.

Bitte verstehe mich nicht falsch - ich will deinen Tatendrang nicht dämpfen, ich möchte nur nicht, dass du deinen guten Willen und deine Bereitschaft Arbeit für die Community zu leisten sinnfrei verpuffen lässt, bzw. es dir unnötig schwer machst, obwohl du in der gleichen Zeit entsprechend mehr erreichen könntest.

Wenn du fragen/Probleme hast zum Erstellen eines Webservices oder mit deiner Datenbank hast, egal welche Lösung du wählst, unterstütze ich gerne.

3 „Gefällt mir“

Nein nein, keine Sorge, so wahnsinnig bin ich dann doch nicht, das Alles per Hand da eintragen zu wollen ^^ Das hätte ich allenfalls für ein paar Einträge gemacht, um das DB Design mal zu testen. Ansonsten würde ich das über Java und JDBC erledigen.

Und bezüglich der Intention: Teils teils. Klar, will ich auch üben, aber es wäre schon cool, wenn dabei auch was Sinniges rumkommen würde.

Und danke für das Unterstützungsangebot, ich komme später gerne darauf zurück :wink:
Kennst du dich zufällig mit der Youtube API aus?

üüüberhaupt nicht :smiley:

Soooo, habe endlich mal kurz die Zeit gefunden, mal bei deinem Projekt vorbeizuschauen. Sieht doch so eigentlich schonmal ganz gut aus. Nur ist es nicht ganz, was ich meinte, aber es geht schon in die Richtung. Die Idee mit dem Titel hatte ich auch schon, macht ja auch komplett Sinn, da sie da ja neben der Teilnummer auch die Mods enthalten. Funktioniert so nur leider nicht bei jedem Video der Beans (wie z.B. "Chulip #6 mit Doktor Love ").


Habe jetzt auch mal begonnen, mich mit der Youtube Data Api auseinanderzusetzen, wollte ich zwar vermeiden, aber ihr habt schon Recht, alles Andere ist wenig sinnig. Werde mal schauen, wie schnell ich damit vorankomme, danach kann ich mich dann mal mit JDBC auseinandersetzen. Habe mir überlegt, zunächst mal eine Client Software zu schreiben und damit dann erstmal die Datenbank zusammenzubasteln und zu testen. Danach, wenn die DB so im Design erstmal steht und vernünftig funzt, kann man immer noch darüber nachdenken, dass ganze über eine Website zugänglich zu machen ^^

versuche bei deiner client anwendung das gui bzw. die kommandozeile so dumm wie möglich zu halten und versuche den datenbankzugriff möglichst von der anzeigelogik zu trennen. (stell es dir so vor, dass dein GUI eine schnittstelle bedienen sollte, die in etwa die methoden aufruft, die später eine mobile anwendung oder ein entwickler an einer REST-Schnittstelle aufrufen würde)
Dann wird es einem eventuell einfacher werden in einem späteren schritt dein Client-Backend zu einem Server-Backend zu machen.

Die Regel GUI und Logik zu trennen, kenne ich :stuck_out_tongue_winking_eye:

Aber mal schauen, wie sich das Ganze realisieren lässt, muss mich jetzt erstmal durch die Youtube API beißen…die mir mit JavaScript deutlich simpler erscheint, was ich aber leider nicht kann :’(

Die allgemeine Suche per Youtube funktioniert zumindest schonmal ^^

Edit: Okay, inzwischen denke ich gerafft zu haben, wie ich an die Infos der Videos rankomme.
6265 + 4670 = 10935
Hmmmm…die Netzwerkstatistik auf dem RBTV Hauptkanal sagt, sie haben nur 10931 Videos hochgeladen…hat das was mit der Freigabe/Preupload zu tun? Werden da nur die freigegebenen Dinge angezeigt?

Edit2: Eine Idee, wie ich die Mitarbeiter automatisch aus den Infos der Seite hier auslesen könnte, habe ich auch.

Edit3: Da mir langwelig war, habe ich inzwischen mal ein Logo für den geplanten Client gebastelt:

Ist zwar schlicht, ich finde es aber dennoch recht ansprechend ^^

Dann brauchst du ja fast keine Datenbank mehr sondern kannst live mit der youtube-API suchen

So einfach läuft das leider net. Die Youtube API hat Quoten(Quotas) für Anfragen, die nicht sonderlich hoch sind. Außerdem müsste ich die Ergebnisse dann ja dennoch on the fly verarbeiten, um z.B. die Bohnen mit den jeweiligen Videos zu verknüpfen…wofür ich ja auch 'ne Liste der Bohnen brauche. Die DB macht mMn durchaus noch Sinn, allein schon um Quota zu sparen…und halt um die jeweiligen Vids mit Youtube Infos zu verknüpfen ^^

1 „Gefällt mir“

Auf die Gefahr sich hier unbeliebt zu machen, für die Liste der Bohnen würde ich einfach https://www.rocketbeans.tv/bohnen/ Scrapen und da kannst du dann auch die Verbindung zu den Videos raus parsen.
Dann hast du zumindest schon mal Bohnen + Videos und die Verbindung dieser.

Genau das war der Plan. Deshalb habe ich auch schon bei @TimoW angefragt ^^ (bisher kam noch leider keine schlüssige Antwort, wieviele Daten ich da rausziehen kann).

Die Verbindung zu den Videos kann man auch leicht aus dem Videotitel ziehen, und da ich die eh von Youtube abfragen muss…

ist ja nen job, den man nur 1 mal im monat ausführen muss. ich glaube nicht dass das auch nur in irgendeiner weise wild wär