Datenbanken Typen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Datenbanken Typen

    Hallo

    Ich suche eine Datenbank ähnlich wie SQLite nur soll es für 3 oder 5 Benutzer gleichzeitig funktionieren.

    Die Datenbank sollte auch Kostenlos sein.

    Ich möchte aber kein Server wie z.b. MySQL, Microsoft SQL Server oder andere.
    der Grund dafür ist das ich keinen Extra Server laufen lassen will.

    Als Server benutze ich eine Fritzbox die eine Festplatte angeschlossen ist.
    Auf diese Netzwerkfestplatte soll die Datenbank gespeichert werden. Wo sich dann jeder im Netzwerk drauf zugreifen kann.

    Die Datenmenge wird groß sein.

    Welche Datenbank wäre da am Besten. die auch in Visual Basic.Net Sehr gut einpflegen lässt.

    Danke schon mal im voraus

    Gruß

    DeMa
    Was soll den bitte eine große Datenbank sein? Definiere "groß". Das war eine rethorische Frage, eine Antwort wird definitiv nicht erwartet.
    Wie schon hier steht, solltest Du dich um eine "echte" Datenbank bemühen, sobald Du eine Multiuser-Umgebung hast. Es gibt Workarounds, die sich allesamt nicht als Handhabbar erwiesen haben.
    Eine "echte" Datenbak ist immer mit einem Dienst (Service) verbunden, die diese DB verwaltet. Was Du da mit deiner Fritzbox vorhast und absolut nicht ideal für SQLite, um es vorsichtig auszudrücken.
    Wenn es wirklich nicht anders geht, dann mach das so, aber programmiere Dir irgendwas womit Du sicherstellst, dass nur eine Anwendung /Rechner gleichzeitig die DB benutzt bzw. benutzen kann.
    Ich habe mal gehört das es eine Datenbank ähnlich wie SQLite gibt die auch mehrere Benutzer gleichzeitig erlaubt zum Lesen und Schreiben.
    Leider finde ich diese nicht mehr und weiß auch nicht mehr wie diese Heißt irgendwie dbasic oder so.

    Hatte gehört das es für 3 oder 5 Benutzer kostenlos ist und wenn es mehrere Benutzer gleichzeigt sein soll das man eine Lizenz bezahlen muss.

    Ist das Richtig?
    Ich hoffe mal nicht, dass du dBASE meinst. Ich wußte nicht mal, dass es das Zeugs noch immer gibt....
    Zudem, selbst das alte dBASE Classic ist ein komerzielles Produkt. Und ich glaube nicht, dass du hier viel Hilfe zu so einem DBMS erhalten wirst.
    Warum nicht SQL Server Express von MS? Oder eine der Open Souce Datenbanksysteme?
    Ob es Connectoren gibt, die du in Visual Studio einbinden kannst, musst du nachforschen.
    Den MS SQL-Server kannst du auch auf einem der Clients laufen lassen. Der muss dann halt an bleiben.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    dema schrieb:

    Ich habe mal gehört das es eine Datenbank ähnlich wie SQLite gibt die auch mehrere Benutzer gleichzeitig erlaubt zum Lesen und Schreiben.
    Ja. Heißt SQLite ;)

    SQLite kann sehr wohl für mehrere Benutzer concurrent eingesetzt werden.
    Parallele Lesezugriffe sind sogar sehr schnell.
    Nur bei vielen parallelen Schreibzugriffen auf dieselbe Tabelle geht die Performance in die Knie.

    dema schrieb:

    für 3 oder 5 Benutzer
    Das ist jetzt nicht besonders viel. Da würde ich einen Versuch mit SQLite durchaus wagen.


    dema schrieb:

    Die Datenmenge wird groß sein.
    Ich habe hier eine DB mit 10TB Daten und ein paar Billionen Records.
    Das ist für mich zumindest groß.
    Google wird so was als klein betrachten.
    Was bedeutet "groß" bei dir?
    Und wie hoch ist deine Schreibfrequenz?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Multi-User ist ohne zentralen Server einfach nicht möglich. Und selbst mit zentralem Server ist multi-User dennoch nicht einfach. Stell dir folgendes Szenario vor:

    User 1 meldet sich an, öffnet eine Form, die mit einer bestimmten Tabelle verknüpft ist, und beginnt diese zu bearbeiten.

    In der Zwischenzeit meldet sich User 2 an, öffnet denselben Datensatz, ändert ein oder zweio Details, und speichert den Datensatz ab.

    Nun ist User 1 mit seinem Bearbeiten fertig, und speichert ebenfalls den Datensatz ab.

    Nun hast du effektiven Datenverlust, da die Änderungen, die User2 vorgenommen hat, verloren sind, ohne dass jemand (außer User2 natürlich) mitbekommen hat, dass die Änderung jemals da war.

    Natürlich gibts dafür Lösungen, die einfachste davon, die auch mit Dateibasierten DBs einigermaßen funktioniert, dass man immer eine spalte update mitführt, die die Anzahl an updates die an jedem Datensatz vorgenommen mitzählt. in deinem Update-Befehl baust du die dann in den WHERE part ein, und inkrementierst im SET um eins. Wenn dann jemand bereits dran gearbeitet hat, wirft dir SQL nen Fehler, und du kannst dem User sagen "Yo, es hat schon jemand dran gearbeitet."

    EaranMaleasi schrieb:

    Multi-User ist ohne zentralen Server einfach nicht möglich
    Ja. Einen DB-Server oder ein File-Server. Im Netzwerk oder in der Cloud. Varianten gibt's viele.

    Die Problematik konkurrierenden Schreibzugriffs hast du immer, ob du eine serverbasierte DB oder eine filebasierte DB verwendest.
    Der einzige Unterschied ist die zentrale oder verteilte Nutzung der CPU.
    Die Datenzugriffs- und Lockmechanismen sind ähnlich.
    Nur benötigst du weniger lokale Ressourcen, wenn du diese Mechanismen auf einem Server rechnen lässt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --