Einsatz von Datenbanken sinnvoll?



  • Wozu werden diese SQL-Datenbanken so eingesetzt? Bei mir reicht es bisher immer, die Daten unsortiert in einer Datei abzulegen und zur Programmausführung mit einer effizienten Datenstruktur bereitzuhalten.

    Braucht es Datenbanken nur in so komischen Business-Anwendungen oder bieten die einen echten Mehrwert für ein allgemeines Programm?



  • Und du bist sicher nicht blurry?

    Keine Ahnung, ob es Sinn macht, darauf zu antworten, eigentlich ist die Frage völliger Schwachsinn. Was ist ein "allgemeines" Programm? Eine Datenbank brauchst du dann, wenn du eben eine Datenbank brauchst. Ein "allgemeines" Programm wird nicht automatisch besser, wenn du dem eine Datenbank gibst.
    Es gibt aber sehr viele Programme, die so etwas wie eine Datenbank brauchen. Das müssen nicht nur Business Anwendungen sein. Eine Datenbank kann unterschiedliche Vorteile gegenüber "keiner Datenbank" haben. z.B. kann die Suche nach bestimmten Daten schneller sein, weil man in der Datenbank Indexe erstellen kann. Könnte man auch selber programmieren, wäre aber viel aufwändiger und dann hätte man auch wieder sowas wie eine Datenbank, die aber halt nichts kann. Oder die ist schneller, weil du plötzlich so viele Daten hast, dass sie nicht mehr in den Arbeitsspeicher passen und eine Datenbank hat intelligente Pufferverwaltung.
    Oder vielleicht braucht man an verschiedenen Stellen im Programm unterschiedliche gefilterte und zusammengestellte Daten, das kann man in SQL ganz einfach formulieren, selber müsste man das aber umständlich ausprogrammieren. Und dann wäre die selbergebastelte Lösung nur in Sonderfällen schneller, weil eine Datenbank die Anfragen optimiert und da z.B. Statistiken über die Tabellen verwaltet und heranziehen kann. Hast du nur einen ganz speziellen Fall von Anfragen, kannst du das schneller machen, alles was ein bisschen flexibler sein muss kann die Datenbank wahrscheinlich viel besser.
    Oder du willst vielleicht keine inkonsistenten Daten haben. Du fängst an, deine eigene Datenstruktur zu speichern, dann gibts einen Stromausfall und du hast nur noch Daten, mit denen man nichts anfangen kann. Mit einer transaktionalen Datenbank passiert sowas nicht.
    Kann auch tausend andere Gründe geben. Man muss im Einzelfall entscheiden, ob man das braucht und ob es sich lohnt.



  • In meinen Alltagsprojekten, hauptsaechlich Spiele und Parser, habe ich es bisher noch nie gebraucht und auch sonst kommt viele Software ohne Datenbanken aus.



  • Ich kenne so Programme, die ihre Einstellungen in sqlite statt in einem config-File abspeichern und ich hasse das.



  • heradfz schrieb:

    Ich kenne so Programme, die ihre Einstellungen in sqlite statt in einem config-File abspeichern und ich hasse das.

    Das ist z.B. etwas wo ich mir auch denke, da hat sich jemand gedacht, Datenbank ist cool, muss ich überall einsetzen. Wenn man keine braucht, braucht man eben keine und sollte es nicht übertreiben.



  • Datenbanken bieten sich vor allem an wenn viele Anwendungen mit den Daten arbeiten (das wäre mit nackten Files die Hölle).
    Aber auch wenn die Daten sehr komplex abgelegt werden müssen, zb bei einer Board-Software.



  • Ich mache mir vorher Gedanken welches Datenschema ich so brauche und baue mir eine entsprechende struct. Daraus erzeuge ich mir dann konstante Objekte und lade sie in den RAM. Da die Objekte konstant sind, wird der RAM in einem ROM (Read Only Memory) umfunktioniert, weshalb die Daten auch Neustarts überleben (klar, oder?).
    Wenn ich Daten ändern will, erzeuge ich einen neuen konstanten struct mit einem neuerem Zeitstempel. Beim Zugriff auf identische Keys wähle ich einfach den Eintrag mit dem neuesten Zeitstempel.
    Wichtig ist, sich vorher über das Datenschema Gedanken zu machen, denn nach meiner Erfahrung kann man den RAM-ROM nur drei mal mit 10 Volt flashen, bevor er dann wegen Lesefehlern unbrauchbar wird. So ein RAM-Riegel hält bei mir deswegen um die 18-24 Monate. Dann muss ich mir einen neuen kaufen.
    Momentan schreibe ich mir einen Treiber mit dem ich einzelne Speicherblöcke flashen kann, so dass nur diese nach dreimaligem Flashen unbrauchbar werden. Das klappt auch schon ganz gut. Momentan habe ich 6,79 GB von ursprünglichen 8 GB zur Verfügung.

    L. G.,
    IBV



  • IBV schrieb:

    Ich mache mir vorher Gedanken welches Datenschema ich so brauche und baue mir eine entsprechende struct. Daraus erzeuge ich mir dann konstante Objekte und lade sie in den RAM. Da die Objekte konstant sind, wird der RAM in einem ROM (Read Only Memory) umfunktioniert, weshalb die Daten auch Neustarts überleben (klar, oder?).
    Wenn ich Daten ändern will, erzeuge ich einen neuen konstanten struct mit einem neuerem Zeitstempel. Beim Zugriff auf identische Keys wähle ich einfach den Eintrag mit dem neuesten Zeitstempel.
    Wichtig ist, sich vorher über das Datenschema Gedanken zu machen, denn nach meiner Erfahrung kann man den RAM-ROM nur drei mal mit 10 Volt flashen, bevor er dann wegen Lesefehlern unbrauchbar wird. So ein RAM-Riegel hält bei mir deswegen um die 18-24 Monate. Dann muss ich mir einen neuen kaufen.
    Momentan schreibe ich mir einen Treiber mit dem ich einzelne Speicherblöcke flashen kann, so dass nur diese nach dreimaligem Flashen unbrauchbar werden. Das klappt auch schon ganz gut. Momentan habe ich 6,79 GB von ursprünglichen 8 GB zur Verfügung.

    L. G.,
    IBV

    Dafuq. 😕



  • Ethon_ schrieb:

    Aber auch wenn die Daten sehr komplex abgelegt werden müssen, zb bei einer Board-Software.

    Nö, umgekehrt. Datenbanken nur, wenn die Daten sehr einfach strukturiert sind, zb bei einer Board-Software.

    Bei SQL-Datenbanken zahlt man gerne mal 1000-mal so lange wie für native Datenstrukturen. Dafür bekommt man auch beim unglücklichen Stromausfall keinen kompletten Datenmüll und kann die Daten leicht persistent halten. Und dazu Nebensächlichkeiten wie SQL-Abfragen auch mit Sortierungen und Gruppierungen, parallelen Zugriff, Rest der Transaktionen,…



  • Selbst erstellte Lösungen sind meist flexibler und auch schneller, es sei denn man hat es wirklich mit enormen Datenmengen + Benutzerverwaltung zu tun.

    Aber selbst so was hatte mein damaliger Chef in C runter geschrieben. Die LinuxTerminals arbeiten immer noch Weltwelt zusammen mit vielen Filialen, Benutzern und Kunden. Da hat ein Mann ein Riesenprojekt in den Jahren entwickelt und kann bis heute keinen SQL-Syntax. Der hat sogar seine Treiber selbst geschrieben, für Kassenautomaten, wo es keine Treiber gab. Alles allein und er hat nicht mehr Probleme, in den 30 Jahren gehabt, wie andere Entwickler auch.

    Die Produkte sind in einer gewissen Branche sehr bekannt und er ist immer noch ziemlich konkurrenzlos und das nicht nur in DE. Er hat damit soviel verdient, dass er schon lange nicht mehr arbeiten bräuchte.

    Ein Mann, nur C und eine eigene Datenbank. Das geht alles und muss nicht schlechter sein, als das zusammen schustern von Frameworks etc. mit modernen Hype-Sprachen.

    Mir brauch keiner mehr erzählen was man für größere Projekte alles brauch, da ich auch der Praxis das Gegenbeispiel über Jahre kennen gelernt habe. Achja und seine IDE hieß steht Vi über irgendeine SSH-Sitzung und er hat wirklich jeden gemeldeten Fehler in ein paar Minuten bis zu einem Tag fixen können.

    Achja und grobe Fehler kann er sich gar nicht erlauben, denn mit der Software setzten die Kunden Millionen um. Das Basispaket kostet so um die 10 000 EUR Wartung und Hardware exkl. und die Leute kaufen dass weil es sich seit vielen Jahren bewährt hat und einfach wie ein Schweizer-Uhrwerk funktioniert und minimale Anforderungen an die Hardware stellt.


  • Mod

    SelbstIstDerMann schrieb:

    ...

    Du klingst wie eine Werbeanzeige für Vollbitverschlüsselung. Da sollte man doch lieber bei bewährter Qualitätssoftware vom Weltmarktführer aus Redmond bleiben.



  • SelbstIstDerMann schrieb:

    irgendeine SSH-Sitzung und er hat wirklich jeden gemeldeten Fehler in ein paar Minuten bis zu einem Tag fixen können.

    Jo. hot fixes sind *viel* besser als ihr Ruf. Ich ärgerte mich mal riesig, als ich wo (in ein kleines Forum) einen Dreizeiler einbauen wollte und der Admin war zwar dafür, aber wollte von mir, daß ich eine Testumgebung aufbaue, seinen kompletten Code kopiere, meine Änderungen einbaue, den Testbetrieb dokumentiere und bla, langweil, wasserkopf… Hab dann für diesen Chef auch nie mehr angeboten, irgendas zu reparieren.

    SelbstIstDerMann schrieb:

    VI

    Ach, wie produktiv wäre der Mann noch geworden, wenn er einen ordentlichen Editor gehabt hätte!



  • Er ist immer noch produktiv und hat seinen Firmensitz jetzt in England. Soweit ich mich erinnern kann, hat er alles mit der Maus verabscheut. Er hat zwei Titel einen in Mathematik und einen in Informatik und anscheinend C mit der Muttermilch aufgesogen. Wenn wir Prototypen von Siemens-Nixdorf in Form von Termodrucker, Barcodleser, Kassensystemen etc bekamen, hat er sich ran gesetzt und erst mal dafür Linux-Treiber geschrieben. Der war beim Programmieren definitiv viel schneller als ich beim normalen Schreiben.

    So einen Menschen habe ich aber danach nie wieder kennengelernt, leider. Sich organisiert hat er mit einer Todo-Textdatei. Wir waren damals für die Webanbindung zuständig.

    Auf jeden Fall hat mir die jahrelange Arbeit mit ihm gezeigt, was man wirklich braucht und wie man auch an Sachen ran gehen kann und damit über Jahrzehnte erfolgreich ist. Einfach C + Linux und damit hat der wirklich gezaubert. Pragmatismus in seiner reinsten Form.

    Auch wenn ich Firma und seinen Namen nicht nennen will, habe ich doch immer noch Hochachtung vor Herrn ..... Schade dass die Zusammenarbeit irgendwann zu Ende war.



  • SelbstIstDerMann schrieb:

    Einfach C + Linux und damit hat der wirklich gezaubert. Pragmatismus in seiner reinsten Form.

    Nö. Pragmatismus sieht ganz anders aus.



  • hustbaer schrieb:

    SelbstIstDerMann schrieb:

    Einfach C + Linux und damit hat der wirklich gezaubert. Pragmatismus in seiner reinsten Form.

    Nö. Pragmatismus sieht ganz anders aus.

    Im Pragmatismus bemisst sich die Wahrheit einer Theorie an ihrem praktischen Erfolg, weshalb pragmatisches Handeln nicht an unveränderliche Prinzipien gebunden ist.

    Aus Wiki. So gesehen dürfte das Wort Pragmatismus schon auf diesen Herrn zutreffen.... 😃



  • Billiger Troll. OP stellt eine Nicht-Frage, die für einen anderen Unreg Vorlage für ein paar lustige Geschichten bietet und taucht dann nicht mehr auf. Tip: Sowas wirkt mit mehr OP-Beteiligung überzeugender.



  • Da liegst du völlig falsch. Meine Erfahrung mit dem Entwickler, der nur seine eigene Datenbank nutzt passte halt gut zu dem Thema. Nicht alles ist eine Verschwörung hier. Und ja es gibt Leute die machen alles alleine ohne Superduperplaung und den ganze Buzzword-Hype-Kram. Er war zwar der einzige den ich so kennen lernen durfte, aber das hat mich halt extrem beeindruckt. Da kann man dann hinterher nur noch lächeln wenn man so ließt was man heute alles für ein erfolgreiches Softwareprojekt braucht. Er hat aber auch viel Erfahrung bei einem sehr großen Autohersteller, vor seinem Ein-Mann-Groß-Projekt, sammeln können, dort hat er eine Interpretersprache entwickelt und vertrieben, auch alles reines C gewesen.



  • nman schrieb:

    Billiger Troll. OP stellt eine Nicht-Frage, die für einen anderen Unreg Vorlage für ein paar lustige Geschichten bietet und taucht dann nicht mehr auf. Tip: Sowas wirkt mit mehr OP-Beteiligung überzeugender.

    Ich lese hier interessiert mit.

    Es ist halt keine Verständnisfrage, sondern eher nach Erfahrungen und Geschichten, daher habe ich nicht viel hinzuzufügen.

    Bevor der Thread nach Pragmatismus und Trollvorwürfe abgedriftet ist, fand ich die Antworten sehr spannend!



  • Die denken hier nun einmal in ganz engen Schienen und dabei kommt folgender Unsinn heraus, deren Gegenbeweis ich gesehen habe, also brauche ich mir hier keinen Bären aufbinden lassen in der neuen tollen Buzzword IT Welt.

    - Große Projekte müssen im Team erarbeitet werden
    - Man implementiert nicht mehr alles selbst(gut er nutzt Ncurses, im Terminal Mode, GUI soll wohl dazugekommen sein für die Standautomaten weiß ich jetzt haben nicht. Ich kenne nur die Schnittstelle zum Web, denn die habe ich mit umgesetzt, allerdings von der PHP Seite her, aber noch ohne OOP)
    - C ist schlecht für große Projekte
    - Seine Datenbank schreibe man nicht selbst
    - Man braucht eine GUI/IDE für größere Projekte
    - Man braucht für große Projekte den OOP-Schnickschnack von C++



  • Natürlich _kannst_ du dein Pseudo-DBMS selbst schreiben. Nur ist es nicht "pragmatisch" Zeit damit zu verbringen, eine schlechtere Version von etwas zu schreiben, was es schon in sehr guten Varianten fertig verwendbar gibt.

    Das heißt nicht, dass man das nicht machen darf, oder dass ein echtes DBMS immer besser als eine selbstgestrickte Lösung sein muss. Aber ich habe schon solche Unmengen mittelmäßige handoptimierte Eigenbau-DBMSs gesehen, dass mich solche Beschreibungen nicht mehr sehr beeindrucken. (Häufig haben die Leute, die sowas selbstgestrickt haben und sehr stolz darauf sind, einfach keine Ahnung von Datenbanksystemen und den Problemen, die sie lösen.) Klar _kann_ man sowas selbst basteln. Die Frage ist, ob es auch sinnvoll ist.

    Wenn ich ein DBMS schreiben möchte, schreibe ich ein DBMS. Wenn ich ein Projekt machen möchte, das ein DBMS braucht, dann verwende ich ein fertiges DBMS.

    Zum OP: Ja, ein echtes DBMS bietet in vielen Situationen einen "echten Mehrwert für ein allgemeines Programm".



  • Ja schon klar, dass in den meisten Fällen fertige Lösungen besser sind. Ich persönlich würde auch was fertiges nutzen. Nur der Mann hat damals sogar Benchmarks mit seiner DB-Lösung gemacht und diese verglichen. Seine war um Längen ressourcenschonender und schneller. Sie war halt perfekt auf sein Produkt maßgeschneidert und es wurde nichts verschenkt. Wie gesagt, es ging nur um die Daten EINER Anwendung, er hat nie was anderes programmiert mit dieser DB und seine Sachen sind halt mit dem Projekt gewachsen. Ich glaube das Buzzword ist evolutionäre Entwicklung, oder so. Wie beim Linux-Kernel, keine große Planung, sondern einfach auf einen zu kommen lassen und die Probleme lösen.

    Es sollte halt nur erwähnt werden, dass es durchaus auch heute noch erfolgreiche Projekte gibt die jenseits der Buzzword-Entwickler existieren, die um wirklich alles einen Riesen Hype machen.

    Viele Wege führen nach Rom und nicht nur der den die meisten in der aktuellen Zeit beigebracht bekommen. Die denken dann wirklich es geht nicht anderes, bis sie vor zehn Schichten und Generalisierung den Wald voller Bäumen nicht mehr sehen.


Anmelden zum Antworten