Welche Datenbankart empfehlt ihr?

  • Allgemein

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von GambaJo.

    Welche Datenbankart empfehlt ihr?

    Hallo Leute,

    ich brauche in meinem Projekt eine Datenbank.

    Die Datenbank sollte:
    • Local sein
    • mit einem Passwort schützbar sein

    Das wichtiges ist die Verarbeitungsgeschwindigkeit (oder wie man das nennt) bzw. das Lesen und Schreiben.

    Welchen Datenbanktyp könnt ihr mir empfehlen?

    mfg JeyBe
    Wenn das zum Beispiel nur ein Programm für den Familien PC wird würde ich dir empfehlen beim Schreiben der Datei die Endung .lnk (das L nicht mit I verwechseln ;) ) zu verwenden.
    Windows interpretiert das als Verknüpfung, die man nicht einfach mal so mit Notepad öffnen kann (mit zb. einem StreamReader aus dem Namespace IO kann man alle Dateien ohne weiteres lesen). Weiters kannst Du aus jedem Zeichen mit AscW() eine Zahl machen (vermute Unicode Kodierung), diese von einer anderen Zahl abziehen, multiplizieren (Mit zb den Zahlen des Passwortes) und dann mit ChrW() wieder ein Zeichen daraus machen, welches Du dann abspeicherst. Wenn man das Passwort eingibt wird das Multiplizieren und so weiter wieder rückgängig gemacht und man erhält den original Text.
    Allerdings ist das eine sehr unsichere Methode, denn ausgefuchste Hacker kommen leicht hinter den Algorythmus.
    Aber das mit der .lnk Datei könnte durchaus funktionieren. Zusätzlich könnte man die Datei auch irgendwo im System32 Ordner mit einem unauffälligen Name verstecken, da in dem Ordner so viel Schrott ist, dass diese Datei schlecht zufällig gefunden werden kann.

    PS:
    Ich möchte noch darauf hinweisen, dass mit einem FileSystemWatcher nachvollzogen werden kann, was beim Speichern der Datenbank passiert. Also wenn der/die Hacker/in auf Speichern klickt sieht er/sie auf welche Datei zugegriffen wurde. Das sollte mit einbezogen werden.

    Ich hoffe für Deine Datenbank das Beste :thumbup:
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Für größere lokale Daten nehm ich nur Access. Es ist zuverlässig, schnell, indexierbar, etc. und viele Funktionalitäten kann man in die Datenbank einbauen.

    Kleinere Datenbestände gehen auch in Text oder XML. Aber da musst du dich um "Kleinigkeiten" wie Sortierung, Eingabekontrolle, etc. im Programm kümmern.
    Hi,

    Ich würde dir die "MS SQL Server Compact" (ist fast gleich wie SqLite, jedoch auf .NET Basis) empfehlen!
    Die ist klein, schnell und du kannst sie mit deinem VisualStudio(auch Express version) erstellen, bearbeiten und in deine Anwendung leicht Integrieren!

    Ciao...

    Adam schrieb:

    ist fast gleich wie SqLite, jedoch auf .NET Basis


    Stimmt nicht.

    Adam schrieb:


    Die ist klein, schnell und du kannst sie mit deinem VisualStudio(auch Express version) erstellen, bearbeiten und in deine Anwendung leicht Integrieren


    Kann man auch mit SQLite. Vorteil von SQLite ist, dass Du die Datenbank, falls irgendwann mal nötig auf verschiedenen Plattformen weiter nutzen kannst (Linux, Android, ...)
    Für sowas ist SQLite eigentlich sehr gut, allerdings kannst du die Datenbankdatei nicht ohne weiteres mit nem Passwort schützen. Solche Sachen wie "Datei im System32-Ordner verstecken" oder "Dateiendung .lnk" sind doch Quatsch.

    Wenn dir MySQL "too much" ist, bleibt ja eigentlich nur noch Access über, da kannst du die Datenbank mit nem Passwort schützen. Mit zu großen Datenbanken jenseits der Gigabyte-Marke ist Access aber irgendwann überfordert.

    Trudi schrieb:


    Die Befehle dafür sind ja auch nicht sooo schwer ...


    SQL ist ja größtenteils standardisiert. Die jeweiligen Eigenarten findet man ja sehr schnell im Netz. Bei MySQL ist das garkein Thema, das ist super dokumentiert: MySQL 5.5 Reference Manual

    SQLite erstellt üblicherweise eine *.db bzw. *.db3-Datei, die sich aber nicht so einfach mit einem Passwort schützen lässt. Wie da intern gearbeitet wird, weiß ich nicht genauer.

    Trudi schrieb:

    Speichert SQLLite die Daten nicht auch in Textdateien ab ?


    Nein. SQLite ist eine schlanke und sehr performante SQL-Datenbank.
    Ob die Dateiendung *.db oder *.db3 oder *xyz ist, ist egal. Man kann sich das beim Erstellen aussuchen. Man muss nicht mal eine Endung angeben.

    Man kann SQLite sehr wohl mit einem Passwort schützen: Klick mich

    Schau dir einfach mal das Video an. Es entwickelt sich mit SQLite fast genau so, wie mit einem MS SQL Server.

    Schau dir auch das SQLite-Addon für Firefox an. Sehr nützliches Tool und einfach zu bedienen.


    Ich kenne derzeit keine bessere relationale Datenbank für kleine Anwendungen und Embedded-Systeme.
    Sie ist einfach zu bedienen, flott, braucht keinen Server, kann auf Windows, Linux, vermutlich Mac, Handys usw. kostenlos genutzt werden.
    Du erstellst die Datenbank ein Mal, kannst Sie mit deiner Applikation unter Windows und/oder Linux nutzen, kannst die Datei einfach z.B. auf ein Android-Handy kopieren und dort mit deiner App ansprechen…
    Die meisten von euch werden sie sogar täglich nutzen, denn Firefox nutzt SQLite zum Verwalten von Bookmarks.
    Einfacher und flexibler geht’s kaum.
    Versuch das mal mit MS SQL, MySQL oder Access.

    Alles, was man zum Entwickeln mit VS braucht, findest Du hier.

    Was Objekt-Datenbanken angeht, mag ich db4o ganz gerne. Braucht auch keinen Server, ist eine echte Objekt-Datenbank, kann auch vielen Systemen eingesetzt werden (auch auf Handys).
    Echte Objekt-Datenbanken haben so ihre Vorteile gegenüber relationalen Datenbanken. Vor allem das Speichern von Daten ist sehr einfach (man erstellt einfach ein Objekt und speichert es als Objekt), und sie sind performanter, wenn man Abfragen über viele „Tabellen“ hat (Objekt-Datenbanken haben eigentlich keine Tabellen).

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

    GambaJo schrieb:

    Ob die Dateiendung *.db oder *.db3 oder *xyz ist, ist egal. Man kann sich das beim Erstellen aussuchen. Man muss nicht mal eine Endung angeben.


    Stimmt, ich hab mich von meinem SQLite Database Manager hier verleiten lassen. Der schlägt nämlich als Endung *.db bzw. *.db3 vor.


    Man kann SQLite sehr wohl mit einem Passwort schützen: Klick mich


    Super! Das wusste ich garnicht. Ich hatte mal nen Bericht über ein kostenpflichtiges Tool gelesen, dort ist felsenfest behauptet worden, es gäbe nur diese eine Möglichkeit. Ich hab dann auch nicht weiter danach gesucht.

    Demnach kommt für den Threadersteller eigentlich SQLite in Frage ;).

    Fonsi schrieb:

    Super! Das wusste ich garnicht. Ich hatte mal nen Bericht über ein kostenpflichtiges Tool gelesen, dort ist felsenfest behauptet worden, es gäbe nur diese eine Möglichkeit. Ich hab dann auch nicht weiter danach gesucht.


    Das ist auch eine Option, die im Laufe der Entwicklung auf Wunsch der Community eingebaut wurde.

    GambaJo schrieb:

    Zitat von »Adam« ist fast gleich wie SqLite, jedoch auf .NET Basis
    Stimmt nicht.


    Quelle -> codeplanet.eu/tutorials/csharp…er-compact.html?showall=1

    Auszug:
    Mit Visual Studio 2005 erkannte Microsoft erstmals die große Nachfrage nach einer schlanken, in die Anwendung integrierbaren SQL-Datenbank und veröffentlichte die SQL Server Compact 2005 Edition. Dabei handelt es sich um die .NET Variante von SQLite...

    Ciao...
    Die haben sich einfach nur falsch ausgedrückt. Merkt man alleine daran, dass sie schreiben „…ist eine .NET Variante von SQLite“. Das hat nichts mit SQLite zu tun. Ist ja ein anderer Hersteller. Das ist eher eine Non-Server-Variante vom MS SQL Server.

    Die Tatsache, dass man die Assembly in .NET-Anwendungen einbinden kann, heißt nicht, dass die Datenbank mit .NET programmiert wurde. SQLite ist auch mit C++ programmiert, trotzdem kann ich den Wrapper einfach als Assembly in meine .NET-Applikation einbinden (siehe mein Link von oben).

    Es ist eher wahrscheinlich, dass der bestehende MS SQL Server genommen wurde, abgespeckt und auf NON-Server umgebogen wurde, und dass man dann einen Wrapper dazu erstellt hat, den man als Assembly in seine .NET-Applikation einbinden kann.

    Was aber tatsächlich unter der Haube steckt, weiß nur M$ allein. Bei SQLite kann man das genau sagen.


    Ist aber eigentlich auch unwichtig. Von der Handhabung her sind beide gleich. SQLite bietet allerdings den von mir genannten Vorteil, dass die Datenbank ohne jeglichen Aufwand auf verschiedenen Systemen nutzbar ist, und die Assembly nicht mehrere MB groß ist.
    Wenn ich mich z.B. irgendwann entscheide aus meiner Applikation eine Android-App zu machen, oder meine Applikation auch für Linux anzubieten, kann ich die Datenbank einfach mitnehmen. Nur der DAL muss dann für die jeweilige Sprache angepasst werden, sofern man einen hat.