Anbindung Datenbank (DB2) / XML / Miniprogramm, welche Sprache? - Selbststudium

Sc12

fühlt sich hier wohl
Huhu

Bin gerade dabei, mich ein wenig zu bilden in Richtung Datenbanken. Dabei kommt DB2 zum Einsatz (später berufsbedingt, ggf. auch Oracle) sowie XML als Art der "Dokumentenverwaltung" (DB2 kann mit XML intern umgehen und man kann XML generieren mittels DB2).
Ich habe durch meine Squeezebox eigentlich einen wunderbaren Stock an Daten. Knapp 2000 Alben mit gut 20.500 Titeln, kann also auf gut 20.500 Datensätze zurückgreifen. Mittels Export habe ich die Daten auch in der DB bereits.

Was ich möchte, ist eigentlich ein kleines Programm, was mir die Daten einliest und dass ich die Daten auch ändern kann mittels Programm, also nicht über die DB2-Oberfläche direkt. Ich denke, das Ganze wird dann sicherlich intern über SQL ablaufen, was mir fehlt ist eine Programmiersprache zur Anbindung an die DB.

Was nutzt man denn heutzutage so an Sprachen? Wäre Java hier etwas, was man nutzen würde? Java-Script in HTML? Klassische Programmiersprachen wie C++ etc. sind doch sicherlich hier "over the top", oder? bzw. "maschinennah" muss es nun nicht sein, webbasierend wäre denke ich in der Tat hier interssant.

Bin momentan noch am Suchen für mich, was hier am sinnvollsten wäre, komme aber irgendwie nicht so recht auf ein Ergebnis. Auf jeden Fall sollten folgende Dinge integrierbar sein:
- Datenbankanbindung
- Datenmanipulation (löschen, ändern, neu)
- XML generieren / auslesen
- SQL-Einbindung

Hat da jemand von Euch eine Idee, die mir weiterhilft?
Wäre Euch dankbar. :)
 
C# ;)

Zwar an das .NET-Framework gebunden, aber da findest du alles, was du brauchst. ^^

Bietet mehr als genug Funktionen, mit denen du praktisch alles mit XML machen kannst.
Mehrere Techniken zur Datenbank-Anbindung. Ich weiß von diesen bereits integrierten Providern: SqlClient, OleDb, Odbc und Oracle
Du kannst da via LINQ eine ziemlich angenehme Datenmanipulation implementieren, die allerdings sehr steif ist, dafür aber typisiert und objektorientiert. Es gibt auch noch das typisierte DataSet, oder du machst es auf der ganz unteren Ebene: Du schickst stur SQL-Commands an die Datenbank. Dann hast du die größt mögliche flexibilität, allerdings auch die meisten Fehler-Quellen.

Außerdem bietet das .NET-Framework sehr viele andere Techniken (wenn XML nicht reicht, gibts auch Soap), es gibt eine sehr umfangreiche MSDN-Doku und sehr viele Bibliotheken, die es online so gibt, sind direkt für C# verfügbar.

Und wenn du mal was Hardware-nahes brauchst, im Framework gibts schon einige Klassen, oder du kannst auch Bibliotheken, die in C oder C++ geschrieben wurden, einbinden.

Nachteil ist halt, dass es an Windows gebunden ist.



Wenn du Web basierend was haben willst, dann ist wohl PHP dein Freund, da findest du auch genug Möglichkeiten, eine Datenbank-Anwendung zu schreiben, allerdings kenne ich mich da nicht mit den Möglichkeiten aus.
 
Da danke ich doch schonmal für. :)
C# sagt mir so gar nix, werde ich mir auf alle Fälle mal anschauen. Problem bei uns. Wir müssen uns an Firmenvorgaben halten in Bezug auf Applikationen, Sprachen etc. pp. Also, es wäre sinnlos mit was zu programmieren, was die Firma dann nicht unterstützt. Soll ja erstmal für mich zur Übung sein, aber es soll dann später logischerweise in die Firmenstruktur passen. :)
Muss ich mal schauen, ob da C# mit drinnen ist. PHP werde ich mir auch mal genauer anschauen. Muss mal gucken, was die Vor- Nachteile beider Sprachen sind.
Auf jeden Fall ist das mal ein Anfang. :)

Servereinsatz könnte halt eben aber auch in Zukunft vermehrt Linux neben Windows sein...
 
Wie schon gesagt: Ist an Windows gebunden :/

Es gibt zwar auch Versuche, das .NET-Framework für Linux bereit zu stellen, aber das ist eher sowas wie "Fan-Made", nix offizielles und soll immer noch Macken haben. Genutzt habe ich es selber aber auch noch nie.


Was sind denn die Vorgaben?


Wenn es System-Unabhängig funktionieren soll, ist so oder so immer Java eine Sprache, die zumindest genannt werden sollte. Das Framework von Java hinkt meiner Meinung nach dem .NET-Framework weit hinterher, aber dafür ist es komplett unabhängig.
PHP ist auch unabhängig und läuft überall, wo PHP installiert werden kann. Also praktisch überall :D Über das Framework weiß ich allerdings nichts.


Ich weiß nicht, wie gut du dich auskennst, aber solltest du PHP nehmen, ist es vielleicht sinnvoll, dass du vorher weißt, dass PHP im Gegensatz zu Java und der C-Familie nicht typisiert ist. Das bringt eine menge Flexibilität mit sich, kann meiner Meinung nach aber auch nerven. Da glaube ich aber, dass diese Abneigung vielleicht einfach daher kommt, dass ich mit C# angefangen habe und seit dem nur mit typisierten Sprachen gearbeitet habe. Hauptsächlich C# und Java.
 
An Sprachen kenne ich nur die alten Sprachen wie Pascal und Co. ;)
Ich muss mich erstmal reinfuchsen in das Thema. Ich schau mir auf alle Fälle mal beides an und muss mir mal die Unterschiede anschauen.
Die Anforderungen selber kenn ich noch nicht, muss mich erst erkundigen.

Danke aber schonmal für Deine Hilfe. :)
 
Na mir ging es dabei mehr darum, wie gewandt du bei dem Thema Programmierung bist und auch etwas mit dem Begriff Typisierung anfangen kannst. Aber wenn du bereits programmieren kannst, wird das Lernen von den neueren Sprachen schon einmal deutlich leichter.


Und was die Anforderungen angeht: Erkundige dich besser vorher. Nur nicht gleich mit der Tür ins Haus fallen, sonst kommt der Chef noch auf die Idee, dir das direkt als Auftrag zu verpassen und dann wars das mit dem eigenverantwortlich ein bisschen "spielen". :D
Aber wenn du die konkreten Anforderungen kannst und du weißt, dass das ganze Projekt irgendwann auch für die Firma nutzbar sein soll, dann ist es durchaus von Vorteil, die konkreten Anforderungen zu kennen, bevor du dich entscheidest.
 
Na ja, meine "Programmierkunst" ist nun bald 20 Jahre her, Cobol, Turbo Pascal. ;)
Danach etwas shell-scripting, das war es dann aber auch.
Also, man kann mich quasi als "newbie" bezeichnen, aber irgendwo muss man ja mal anfangen. :D

Momentan ist das rein privat, da ich momentan in and. Projekten tätig bin, die mit dem Ganzen nix zu tun haben; später aber mal wechseln will und mich vermehrt in Datenbanken vertiefen will. Um das Ganze für mich verständnisvoller zu machen, also den Input und den Output, dachte ich mir, dass ich das am besten so lerne wie angedacht. Ich war auf der Suche nach einer Sprache, da ich nicht wusste, wie ich hier überhaupt anfange...
 
Ok, mehr oder weniger kompletter Neueinstieg, dann nimm bloß kein C++ :D


Hier mal eine Übersicht der wichtigsten Sprachen: Die wichtigsten Programmiersprachen unserer Zeit

Da steht auch noch Python dabei, die hab ich natürlich vergessen. :D

Python kenne ich nicht, daher kann ich dazu nichts sagen.
Java hat teilweise spürbare Performance-Probleme, relativ viele Bugs und Lücken, und ein (meiner Meinung nach) unausgereiftes Framework
PHP wird hauptsächlich für dynamische Webseiten gebraucht und ist (meiner Meinung nach) auch für nichts Anderes wirklich gut zu gebrauchen
JavaScript ist eine Client-Seitige Script-Sprache für den Browser und fällt damit raus
C++ ist für den Einstieg ungefähr so, als würde ein Fahr-Anfänger seine erste Fahrstunde im Rennwagen versuchen
C ist imperativ, weshalb sie auch raus fällt

Bleibt nur noch C#. ^^
Es ist eine sehr umfangreiche Sprache mit einem sehr umfangreichen Framework und ist selber auch ziemlich mächtig, bleibt dabei aber leicht zu lernen.
Sollte es mal auf Linux von Nöten sein, gibt es Mono als "Ersatz"-Framework. Nicht schön, aber es geht.

Wenn Unabhängigkeit zwingend nötig ist, dann kann ich persönlich nur noch Java empfehlen, weil ich ansonsten nur mit Java mehr gemacht habe und nicht weiß, wie die anderen Sprachen arbeiten.



Auch gibt es noch weitere Sprachen aus dem Hause Microsoft, wie z.B. F#, oder Visual Basic.
F# kenne ich nicht, Visual Basic allerdings hat eine sehr verschiedene Syntax, ist ansonsten aber kaum anders neben C#. Ich habe bisher noch nie mit Visual Basic programmiert oder mir diese Sprache angesehen, kann geschrieben Code aber relativ gut lesen, nur weil ich C# kann. Auch verwenden beide das selbe Framework.
 
Zuletzt bearbeitet:
Mensch, da gibt sich aber einer Mühe. (y)

Ich glaube aber, Du hast die 2 wichtigsten Sachen schon erwähnt. PHP und C#
Es kann durchaus sein, daß eben Java auch genutzt wird, obwohl ich das hasse in der Anwendung, da es sich genauso verhält, wie Du es sagst. ;)

Wäre ich am Host, wäre Cobol gar nicht mal so schlecht, dazu noch Fortran oder so. :D

Okay, ich habe was gefunden. Hah. :D

IBM DB2 9.7 for Linux, UNIX and Windows Information Center

C oder C++ (eingebettetes SQL oder CLI)
COBOL
Java (JDBC oder SQLJ)
C# und Visual Basic (IBM® Data Server Provider für .NET)
PHP
Perl

Also, dann weiss ich Bescheid, da ich diese Sprachen nutzen darf; also jene, welche offiziell unterstützt werden von DB2. :)

Das engt das Ganze ein und es gibt sogar was für's .NET offiziell von der Herstellerfirma.
Das passt denke ich.
Nun werde ich mir mal alle Sprachen anschauen und hier die Vorteile und Nachteile raussuchen. Ich denke mit C direkt fange ich erstmal nicht an, aber C#, PHP und Perl werde ich mir hier genauer anschauen.
Von Java bin ich kein Fan, Cobol brauche ich maximal am Host, wo ich früher mal gearbeitet habe, aber die Zeiten sind zumindest bei mir vorbei. :)

Danke Dir für Deine wertvollen Tipps!
 
ot:
Java hat teilweise spürbare Performance-Probleme, relativ viele Bugs und Lücken, und ein (meiner Meinung nach) unausgereiftes Framework

Würdest du DAS bitte mal näher erläutern? Ein paar Details bitte!!!

So sehr ich das SNF liebe, ich bekomme jedes Mal wieder die Kriese, wenn ich lese, was bei Programmierung & Webdesign für ein Blödsinn verzapft wird. Und das meine ich nicht nur auf das Zitat oben bezogen sondern zieht sich durch das Gesamte Programmier-Forum. Manche Leute sollten mal aufhören sich als Programmier-Guru aufzuführen, nachdem sie zwei Jahre hobbymäßig mal ein paar Zeilen Code geschrieben haben. Andere Leute glauben das zeug sonst noch, was hier verzapft wird...


Zum Thema:
Sc12, was genau ist dein Plan? Das hört sich einerseits an, als wolltest du privat ein wenig programmieren, andererseits sprichst du von Firmenvorgaben.
Softwareentwicklung ist wie ein Handwerk, das man lernen muss. Und nur weil man ein funktionierendes Programm geschrieben hat, ist das noch keine gute Software, das merkst du spätestens dann, wenn du Änderungen vornehmen musst. Meine Ratschlag ist daher, kauf dir ein wirklich gutes Buch für eine Programmiersprache und arbeite es durch. Ich empfehle immer gerne Programmieren mit Java von Schiedermeier. Natürlich findest du - gerade für Java - auch im Internet viele Tutorials, aber ich habe noch nichts gefunden, was einem Java-Anfänger einen so guten Einstieg ermöglicht wie dieses Buch. Es gibt auch praktische Übungen im Buch. Wenn du das Buch durch hast, solltest du alle Grundkenntnisse besitzen, auf die du aufbauen kannst.
Was die Sprache angeht würde ich dir Java empfehlen. Der Einstieg ist dort relativ einfach. Die Performance ist für Desktop-Anwendungen mehr als ausreichend. Du willst schließlich keine 3D Grafiken verwenden. C# ist auch ganz nett und hat ein paar tolle Features, Java bietet dir aber mehr Flexibilität.
An die Webentwicklung solltest du dich erst in einem späteren Schritt zu wagen. Bei der Webentwicklung gibt es immer ein paar Sonderfälle, die es zu beachten gibt.
Java und XML funktionieren auch zusammen.
Was SQL angeht: Ja, du kannst direkt von Java aus SQL-Befehle absetzen. Jetzt kommen wir aber an den Punkt, wo ich der Meinung bin, man sollte Konzepte und somit sein Handwerk beherrschen. Denn dann überlegt man sich vorher, was das bedeutet und ob das eine gute Idee ist. Ich würde das wenn möglich immer vermeiden. Warum? Du bist an die eine ausgewählte Datenbank gekoppelt und musst sehr viel SQL schreiben, was dich bei komplexeren Befehlen absolut in den Wahnsinn treiben wird. Du kannst kaum Fehlerprüfung betreiben und musst auf einem echt niedrigen Level programmieren. Dafür ist das super schnell. Wenn du die Möglichkeiten einer moderne objektorientierte Sprache nutzen möchtest solltest du einen OR-Mapper wie Hibernate (für Java) oder NHibernate (für C#) verwenden. Dadurch hast du die Möglichkeit Objekte zu persistieren und musst nicht mit SQL rumhantieren. Wenn du jetzt denkst "Oh, ich möchte aber gerne SQL verwenden", beschäftige dich irgendwie anders damit aber versuch SQL aus deiner Programmlogik rauszuhalten. Wer einmal die Vorteile von Hibernate genossen hat (und auf dem Weg dahin leider erst mal 1000 Fach über die Hibernate-Fehlermeldungen geflucht hat) möchte sie nie wieder missen. Das Leben eines Programmierers wird dadurch unglaublich erleichtert. Um mal ein Beispiel zu nennen: Ich habe vor einiger Zeit ein Programm geschrieben und dazu einen Persitenzmanager - also eine Softwarekomponente die dafür verantwortlich ist, mit der Datenbank zu kommunizieren - geschrieben, der mit Hibernate gearbeitet hat. Da es ein sehr einfaches kleines Programm war, habe ich zunächst als Datenbank SQLite verwendet. Dann kam auf einmal die Anforderung, dass mehrerer Instanzen des Programms gleichzeitig auf verschiedenen Rechnern gestartet werden und auf eine Zentrale Datenbank zugreifen soll. Mit SQLite keine Chance. Es hat nicht mal 30 Minuten gedauert um die Software auf eine andere Datenbank (MqSQL) umzustellen (Daten mussten keine übernommen werden). Das schreibe ich jetzt nicht, um mich als tollen Programmierer hinzustellen, sondern um zu zeigen, dass es sich lohnt, sich vorher Gedanken zu machen und zu planen.

Dadurch, dass du die Datenbank bereits mit Daten gefüllt hast und das DB-Schema nicht in Zusammenhang mit deinem Programm geplant hast, hast du dich übrigens sehr bei der Programmierung eingeschränkt - mehr als dir gerade vermutlich klar ist.

Mein Tipp: Java, ein gutes Buch und dann los... Programmieren lernt man nur durch praktische Anwendung. Viel Erfolg bei deinem Projekt :)

Gruß
tobim1986
 
Erstmal Danke für Deine ausführliche Darlegung. :)

Punkt a) Ich möchte mich privat weiterbilden
Punkt b) dieses Wissen soll meine DB2 und XML-Kenntnisse vertiefen bzw. Verständnis zu Schnittstellen / Anwendung aufbauen
Punkt c) Ich möchte später in die DB-Entwicklung wechseln, wobei in der Firma eben nur firmeneigene SW und "genehmigte" Sprachen benutzt werden dürfen, bei DB2 siehe oben.
Die firmeninterne DB ist DB2, andere Projekte verlangen ggf. Oracle. Der Servereinsatz geht von Windows vermehrt auf UNIX-Derivate über. Heisst, DB2 wird mit hoher Wahrscheinlichkeit später auf einem UNIX-Derivat laufen. Zuhause für mich habe ich DB2 aber auf Windows laufen, der Einfachhalt wegen. Ich kann zuhause eh nicht eine komplette Serverumgebung nachstellen, aber zumindest kann ich mir Grundlagen im Zusammenspiel DB <-> Interface <-> Anwendung aneignen.
Welche Programmiersprache dann später im Jobeinsatz genutzt wird, das hängt dann vom jeweiligen Projekt ab.
Heisst, irgendwo muss ich ja nun anfangen; das Ganze soll auch lediglich demonstrieren, daß ich mich mit dem Thema beschäftige bei einem evtl. Vorstellungsgespräch. Da ich kein Informatiker bin, muss ich mir das irgendwie jetzt alles selber aneignen... ich brauch halt den ersten Schritt, den ich gerade suche.

Ggf. muss ich tatsächlich in den JAVA-Apfel beissen, da eben einige Programme (warum auch immer) bei uns auf JAVA aufbauen und ich die Performance der Anwendung alles andere als toll finde. Aber das ist wieder eine andere Sache. ;)

Also. Hauptsächlich soll es für mich eine Übung sein, um die Komponenten besser zu verstehen; zum Anderen möchte ich aufzeigen, dass ich das Thema "Programmierung" im Ansatz verstanden habe, wenn ich mich bewerbe.

Die DBs kann ich fix neu erstellen; Ladescripte zum Anlegen der DBs und Füllen etc. sind vorhanden. Tablespaces etc. muss ich sowieso im Livebetrieb testen...

Die praktische Anwendung ist meine Musik-Datenbank. :)
 
Hi!

auf welchem System die DB läuft ist ja später relativ egal, wenn es darum geht, die Datenbank aus einer Anwendung heraus anzusprechen.

Es kann viele Gründe für die schlechte Performance eines Programms geben - es muss nicht die Programmiersprache sein.

Zwei Tipps hätte ich noch:
1. Versuch nicht jede neue Technik gleich in ein komplexeres Programm, wie deine Musik-DB, zu integrieren. Bau dir zunächst kleine Prototypen, in denen du einzelne Funktionalitäten testest. Zum Beispiel ist es hilfreich, zunächst zu versuchen Daten in eine kleine Datenbank mit drei Tabellen zu schreiben, lesen und updaten, bevor man auf einer DB mit zig Tabellen und tausenden Datensätzen arbeitet. Wenn das dann funktioniert, versuch es in dein Programm einzubauen. Kleine Schritte.
2. Beschäftige dich nicht nur mit der Programmiersprache, sondern auch mit Konzepten, Entwurfsmustern und so weiter. Kurz Software Engineering. Das wird sich sehr positiv auf deine Software auswirken.

Gruß
tobim1986
 
Stimmt.
Zu 1. Korrekt. Hatte ich auch schon gemacht, um SQL zu üben. Wenn man aber n bissel was testen will, also mehrere DBs verknüpfen will und die DBs haben zum Teil Schiefstände, die man dann checken will, da machen sich mehr Datensätze halt besser und mehr DBs zum reinen Testen.
Für das reine Programm dann, werde ich "abspecken", das ist klar. Das Programm ist ja dann erstmal wichtig, nicht die Menge der Datensätze.
2. Genau. Das mache ich als erstes. Datenbank- und SW-Design / -konzeption als Grundlage. Darauf baue ich dann die Anwendung auf.
Also, ich werde da nach klassischem Muster vorgehen. Hatte ich genauso vorgehabt. :)
 
Oben