Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
SQL vs. XML
der-Webdesigner
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

SQL vs. XML

beantworten | zitieren | melden

Hi zusammen!

Ich habe mir ein Tool geschrieben, mit dem ich Dateien runterladen kann. Zu jeder Datei lege ich bisher eine XML-Datei an, in der dann alle Informationen dazu gespeichert werden. Jetzt bin ich aber auf die Idee gekommen, dass dies mit einer Datenbank doch wesentlich effizienter wäre, da ich so jede XML-Datei öffnen und auslesen muss. Sicherlich ist dies durch XPath schon recht gut geworden, jedoch sind Datenbanken ja meist noch mächtiger was die Anfragen angeht.

Was denkt ihr darüber? Würdet ihr eine lokale Datenbank verwenden und was nimmt man da? Access? Weil man dort dann vollständig ungebunden von einer Datenbank-Software ist? Denn meines Wissens reicht es ja da, die Access-Datei mit zu "installieren" und schon kann der Nutzer diese Datenbank verwenden. Macht ICQ es nicht sogar auch so?


Danke für eure Meinungen,
Manuel
private Nachricht | Beiträge des Benutzers
GMLOD
myCSharp.de - Member

Avatar #avatar-2654.jpg


Dabei seit:
Beiträge: 1.200

beantworten | zitieren | melden

SQLite oder Firebird sind sehr beliebt. Eventuell ist auch eine XML Datenbank wie eXist etwas für dich. Guck dir das doch mal an.
Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!
private Nachricht | Beiträge des Benutzers
der-Webdesigner
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Sind diese Datenbanken denn portabel? Weil wenn ich diese vorher noch installieren müsste würde es natürlich für mich keinen Sinn machen. Ich persönlich kenne mich recht gut mit MySQL und PostgreSQL aus, daher wäre natürlich etwas Ähnliches total klasse. XML klappt jetzt wie gesagt auch, aber irgendwie habe ich das Gefühl, dass es nicht wirklich optimal ist, vor allem da ich nur schlecht beispielsweise an die Anzahl der Datensätze komme, was mit einem einfachen Query ja recht schnell möglich ist.

Danke schon mal für deine Antwort
Manuel
private Nachricht | Beiträge des Benutzers
tscherno
myCSharp.de - Member

Avatar #avatar-2584.gif


Dabei seit:
Beiträge: 630
Herkunft: Nürnberger Land

beantworten | zitieren | melden

Hallo,

datenbanken wie SQLite oder Firebird Embedded muss man nicht installieren. Du benötigst einfach nur eine DLL die im Anwendungsverzeichniss liegt. Die Datenbank selber wird in einer einzigen Datei Verwaltet.

Gruss
tscherno
To understand recursion you must first understand recursion
-
http://www.ilja-neumann.com
C# Gruppe bei last.fm
private Nachricht | Beiträge des Benutzers
der-Webdesigner
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Wunderbar, genau danach habe ich gesucht, nur scheinbar nach den falschen Schlagwörtern.

Dankeschön euch beiden!

Gibts da eigentlich eine von den beiden, die ihr eher empfehlen würdet? Also SQLite oder Firebird Embedded? Von Firebird habe ich bisher nur Positives gehört, vor allem was die Stabilität angeht und SQLite glaube ich ist von der Syntax näher am Standard oder irre ich mich da?
private Nachricht | Beiträge des Benutzers
tscherno
myCSharp.de - Member

Avatar #avatar-2584.gif


Dabei seit:
Beiträge: 630
Herkunft: Nürnberger Land

beantworten | zitieren | melden

Hallo,

ich habe bis jetzt nur mit SQLite gearbeitet und bin vollstens zufrieden. Vorallem weil es schnell ist und mir die Architektur gefällt (mehr Infos auf der Homepage). Desweiteren unterstützt es sogar Transactions. Firebird wird auch oft verwendet, kann dazu aber nichts sagen. Es gibt auch noch den Microsoft SQL Server Compact den du dir ebenfalls ansehen kannst. Dort wird die Integration mit Visual Studio vermutlich am besten sein.

Nachtrag:
Was noch für SQLite spricht ist, das es bereits in vielen bekannteren Projekten eingesetzt wird. Unter anderem auch in den LKWs der amerikanischen Firma Oshkosh.

Gruss
tscherno
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tscherno am .
To understand recursion you must first understand recursion
-
http://www.ilja-neumann.com
C# Gruppe bei last.fm
private Nachricht | Beiträge des Benutzers
der-Webdesigner
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Klingt auf jeden Fall echt gut. Schaus mir auch gerade an. Nur gibts da nicht ne andere Möglichkeit, als die Datenbank und die Tabellen über DOS-Befehle zu erstellen? Ich meine so schlimm ist es jetzt auch nicht, nur für riesen Datenbanken ist mir das ehrlich gesagt insgesamt zu langsam vom "Workflow" her. Oder gibts da vielleicht wiederum Tool für, mit denen sich das einfacher machen lässt?

Dankeschön,
Manuel
private Nachricht | Beiträge des Benutzers
tscherno
myCSharp.de - Member

Avatar #avatar-2584.gif


Dabei seit:
Beiträge: 630
Herkunft: Nürnberger Land

beantworten | zitieren | melden

Hallo,

unter .NET werden Datenbanken über die ADO.NET API angesprochen. Standardmässig ist nur ein ADO.NET Treiber für Micorosft SQL Server und Oracle dabei. Du musst dir also eine DLL für .NET besorgen die eine ADO.NET Schnittstelle zur Datenbank deiner Wahl herstellt. Für SQLite gibt es hier einen guten Treiber.

Tutorials für ADO.NET findest du im OpenBook oder in Google .

Gruss
tscherno
To understand recursion you must first understand recursion
-
http://www.ilja-neumann.com
C# Gruppe bei last.fm
private Nachricht | Beiträge des Benutzers
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

beantworten | zitieren | melden

Zitat von der-Webdesigner
Oder gibts da vielleicht wiederum Tool für, mit denen sich das einfacher machen lässt?
Wie tscherno schon gesagt hat musst/solltest du die Datenbanken über ADO.NET ansprechen.
Wenn du Tools zum Bearbeiten der Datenstruktur/Daten meinst/brauchst: Ja, die gibt es haufenweise, für SQLite zum Beispiel den SQLite Administrator: http://sqliteadmin.orbmu2k.de/

Ich hab mich längere Zeit mit SQLite, Firebird (embedded) und SQL Server CE befasst und bin zu folgenden Erkentnissen gekommen:

ALLE drei sind recht gut und zu empfehlen

1.) SQLite ist vor allem bei kleineren Datenmengen sehr schnell und auch von den Anforderungen (Speicherplatz, RAM) sehr effizient. Für größere Datenmengen würd ich an den Optionen etwas schrauben. Recht langsam ist SQLite allerdings bei Joins mit sehr großen Datenmengen, da sind die anderen zwei (Firebird, SQL Server CE) besser.

2.) Firebird (embedded) ist auch recht gut und bietet sehr, sehr viele Features, die sonst nur vollwertige Datenbankserver bieten (Transaktionen, Trigger, stored Prozedures, verschiedene SQL Dialekte ...)

3.) SQL Server CE -> ist auch recht schnell, vor allem mit großen Datenmengen - groß für embedded Verhältnisse versteht sich, denn bei 4 GB ist Schluss -> Limitierung von Microsoft; aber sonst auch empfehlenswert, vor allem sehr leicht zu benutzen und integriert sich prima ins Visual Studio

Hoffe das hilft bei deiner Entscheidung

Liebe Grüße
Preli
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von preli am .
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1.114
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Wo man vielleicht noch erwähnen sollte: Wenn die Datenmengen unerwarteter Weise doch wachsen sollen (und das tun sie aus eigener Erfahrung immer :-) ), ist ein Upgrade von Firebird Embedded zu Firebird rsp. von SQL CE zu einem vollwertigen SQL Server sehr leicht. Bei SQLLite ist man da etwas eingeschränkt.

Ich persönlich tendiere für kleine, einfache Sachen eher zu Firebird anstatt zuSQLLite, wegen der Transaktionsunterstützung. Auch im Singleuserumfeld können Transaktionen sehr praktisch sein.
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3.764
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Ich würde den Microsoft SQl Server Compact (SQL CE) empfehlen. Der unterstützt auch Transaktionen.

Wenn man die Anwendung dann im Netzwerk laufen lassen will kann man auf SQL Server Express umbauen, das ist dann aber etwas Arbeit.

Siehe auch http://www.seven-c.de/files/datenbankenhowto.htm

Grüße Bernd
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von BerndFfm am .
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
private Nachricht | Beiträge des Benutzers
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

beantworten | zitieren | melden

Zitat von Jelly
Ich persönlich tendiere für kleine, einfache Sachen eher zu Firebird anstatt zuSQLLite, wegen der Transaktionsunterstützung.
Auch SQLite unterstützt Transaktionen! Mit der einzigen Limitierung, dass es immer nur eine Transaktion zur gleichen Zeit geben kann.
Aber grundsätzlich werden Transaktionen und damit auch die Datenintegrität sogar sehr ernst genommen bei SQLite.

Liebe Grüße
Preli
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1.114
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Zitat von preli
Auch SQLite unterstützt Transaktionen
Ui, das wusst ich jetzt noch nicht. Man lernt nie aus... Danke für die Info
private Nachricht | Beiträge des Benutzers
der-Webdesigner
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Also bisher habe ich mehr Doku zu SQLite gefunden, daher werde ich das jetzt einfach mal verwenden. Es klappt auch schon ganz gut alles, nur nicht auf anderen Rechnern. Da schmiert das Programm dann sofort ab.

_Con.ConnectionString = "Data Source=" + System.Windows.Forms.Application.StartupPath + "\\database.s3db;Version=3";

So rufe ich das auf und die Datenbank liegt dann in meinem Debug-Ordner. Auf meinem Rechner klappt das ganz gut und alles wird richtig erkannt. Nur wenn ich den Debug-Ordner auf einen anderen Rechner kopiere klappts nicht und das Programm schmiert sofort ab. Die DLL-Datei von SQLite habe ich jedenfalls auch mit kopiert. Diese liegt auch im Debug-Ordner, heißt daran dürfte es dann eigentlich nicht liegen.

Liebe Grüße,
Manuel

Edit: Also unter XP geht es auf jedem Rechner. Nur unter Vista gehts nicht: "Das Programm funktioniert nicht mehr ...". Aber ich verwende ebenfalls Vista, doch da gehts. Nur auf allen anderen Vista-Systemen geht es nicht.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von der-Webdesigner am .
private Nachricht | Beiträge des Benutzers
Jabe
myCSharp.de - Member



Dabei seit:
Beiträge: 57

beantworten | zitieren | melden

Ist das Vista 64-bit? Es gibt von System.Data.SQLite eine 32-bittige und eine 64-bittige. Entweder kompilierst du dein Programm nur auf 32-bit oder du musst die passende Assembly laden. Das steht auch noch auf meiner Liste. *grml* Kann mir da jemand einen schnellen Tipp geben?
private Nachricht | Beiträge des Benutzers
der-Webdesigner
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Ja, das ist Vista 64 Bit. Aber ich verwende zum entwickeln auch Vista 64 Bit und da gehts. Habs auf 2 anderen Vista-Systemen getestet, beide aber 64 Bit und da gings nicht. Heißt ich brauche 2 DLLs? Werden diese dann automatisch nach OS gewählt oder was muss man da tun?

Dankeschön,
Manuel
private Nachricht | Beiträge des Benutzers
Jabe
myCSharp.de - Member



Dabei seit:
Beiträge: 57

beantworten | zitieren | melden

Na ja wenn alls 64 ist, sollte es ja kein Problem sein. Vielleicht hast du aus versehn die falsche dll kopiert. Du musst "nur" die richtige Version kopieren, z.B. per Installationsprogramm (find ich richtig nervig).
Schau mal hier: http://sqlite.phxsoftware.com/forums/p/936/4022.aspx#4022
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Jabe am .
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo zusammen

Ich habe mich auch schon mit SQLite beschäftigt.
Sieht ganz gut aus, vorallem für kleinere Angelegenheiten.

Damits auch angenehm wird, würde ich dazu noch einen OR / Mapper empfehlen.
SubSonic bspw., der unterstützt auch SQLite:
- http://subsonicproject.com/


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1.114
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Was für ein DB Designer Tool würdet ihr denn empfehlen für SQLLite. Für Firebird gibts ja z.B. den hervorragenden IBExpert. Gibt es was Vergleichbares für SQLLite?
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Salute Jelly

Das hier (SQL vs. XML) angesprochene sieht bisher am besten aus.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.975

beantworten | zitieren | melden

Es gibt nichts, was auch nur annähernd an IBExpert herankommt.
private Nachricht | Beiträge des Benutzers
der-Webdesigner
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Hat man bei Firebird denn auch das Problem mit 32 und 64 Bit? Denn wenn nicht, würde das ja definitiv für Firebird sprechen, da ich so bereits 2 Versionen meines Tools zur Verfügung stellen müsste.

Lg,
Manuel
private Nachricht | Beiträge des Benutzers
Timur Zanagar
myCSharp.de - Member

Avatar #avatar-3412.jpg


Dabei seit:
Beiträge: 1.457

beantworten | zitieren | melden

Ich persönlich bevorzuge bei wirklich "kleinen" Applikationen VistaDB.NET. Bis heute hatte ich keine Probleme damit und Sie haben auch eine Express Variante (Bitte Lizenzbestimmungen beachten!).
private Nachricht | Beiträge des Benutzers
Corpsegrinder
myCSharp.de - Member



Dabei seit:
Beiträge: 401

beantworten | zitieren | melden

Hi,
Zitat von der-Webdesigner
XML klappt jetzt wie gesagt auch, aber irgendwie habe ich das Gefühl, dass es nicht wirklich optimal ist, vor allem da ich nur schlecht beispielsweise an die Anzahl der Datensätze komme, was mit einem einfachen Query ja recht schnell möglich ist.

wenn du alle Datensätze in einem XML-File speichern würdest sollte das doch kein Problem sein, oder? Natürlich möchte ich dich nicht davon abbringen eine Datenbank zu benutzen, aber wenn es nicht nötig ist kann man ruhig ein XML-File nehmen.
private Nachricht | Beiträge des Benutzers
der-Webdesigner
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Das stimmt schon generell, aber zum einen ist XML meines Wissens nach langsamer, was jetzt natürlich lokal nicht so wichtig ist und zum anderen finde ich SQL rein von den Funktionen her wesentlich besser, denn ein JOIN über mehrere XML-Dateien dürfte ziemlich aufwändig sein. Die Grundlagen von XML funktionieren jedenfalls, aber ich möchte da noch wesentlich mehr entwickeln und da wäre SQL, wenns denn mal läuft, insgesamt einfacher. Daher wäre das schon genial, wenns irgendwie laufen würde, wobei ich halt den Aspekt "64 Bit" nicht bedacht habe.
private Nachricht | Beiträge des Benutzers