Datenbanken
Posts 1-10 of 21
- Back
- Next
-
Robert MarkuThe company name is only visible to registered members.Welche Datenbanksoftware?
Sehr geehrte Damen und Herren,
ich stehe vor einer Entscheidung, die sich möglichst langfristig bewähren soll, aber mir fehlen da einige Erfahrungen, um das Ganze richtig einschätzen zu können.
Momentan arbeite ich noch mit einer Access-Datenbank. Ist einfach zu bedienen, keine Frage, aber die Performance ist ein meinen Augen schlecht. Als Zugriffsmethode nutze ich hauptsächlich DAO.
Nun will ich auf eine richtige Datenbanksoftware umstellen und habe da momentan SQL Server 2005 im Auge.
Meine Fragen (Allgemein, nicht nur auf SQL Server 2005 bezogen):
1. Kann ich die DAO Zugriffsmethoden weiter verwenden? Oder: Welche Zugriffsmethoden sind überhaupt am schnellsten?
2. Ist da ein sehr großer Performance Unterschied zu spüren?
3. Welche Datenbanksoftware ist einfach zu verwalten, also ähnlich wie Access?
4. Welche Datenbanksoftware ist überhaupt die schnellste? Gibt es da Benchmarks oder Vergleiche?
5. Welche ist so günstig wie möglich?
6. Welche Datenbank kann man mit VB.NET am einfachsten in den Programmcode intigrieren und zugreifen? Welche Treiber sind am besten und möglichst Bugfrei?
Zugriff soll gleichzeitig erst einmal mit ca. 10 Nutzern performant möglich sein, in einem normalen 100 M/Bit Netzwerk.
Das waren jetzt erst einmal einige Fragen und es wäre mir wirklich eine große Hilfe, wenn mir jemand dabei helfen könnte. Vielen Dank im vorraus!
Schönes Wochenende wünsche ich Ihnen allen.
Mfg
Robert Marku
EDIT:
Datenmengen: ca. 350.000 Datensätze, Anzahl bestimmt noch steigend
Datentyp: Textdaten und auch paar Zahlwerte drin, wenn das gemeint ist ;)
This post was modified on 31 May 2008 at 07:59 pm.- 30 May 2008, 4:35 pm
-
Post visible to registered members
-
Post visible to registered members
-
Heinz Axel Pürner Premium Member Group moderatorThe company name is only visible to registered members.Re: Welche Datenbanksoftware?
Ohne die Datenmenge und die Komplexität der Anwendung zu kennen, sind die Fragen kaum richtig zu beantworten. Dennoch einigen Anmerkungen dazu:
3. Welche Datenbanksoftware ist einfach zu verwalten, also ähnlich wie Access?
Meiner Meinung nach ist Access hart an der Grenze dessen, was man als DB-Software noch bezeichnen kann. Generell kann man wohl sagen, je weniger es auf Datenkonsistenz im Mehrbenutzerbetrieb und deren Wiederherstellung nach Fehlern und Abbrüchen ankommt, umso einfacher die Verwaltung. Wieviel Sicherheit für Ihre Anwendung erforderlich ist, können Sie ja selbst beurteilen.
4. Welche Datenbanksoftware ist überhaupt die schnellste? Gibt es da Benchmarks oder Vergleiche?
Auch hier gilt wie oben, je primitiver desto schneller. Den veröffentlichten Benchmarks liegen bestimmte Anwendungsszenarien und eine entsprechende Hardware-Konfiguration zugrunde. Eine genereller Vergleich wie "SQL-Server ist immer schneller als Oracle" existiert nicht und wäre auch unsinnig.
5. Welche ist so günstig wie möglich?
Es gibt lizenzkostenfreie Versionen von DB2, Oracle und SQL-Server, sowie zahlreiche leistungsfähige Open-Source-Produkte wie MySQL, MaxDB, Postgres etc. Die TCO müssen Sie aber selbst berechnen.
Zugriff soll gleichzeitig erst einmal mit ca. 10 Nutzern performant möglich sein, in einem normalen 100 M/Bit Netzwerk.
Das sollte für eine gute Datenbank-Software keine große Herausforderung sein, wenn deren Minimalanforderungen an die Hardware erfüllt sind.
Eine genaue Beurteilung, welches DB-Produkt für Ihren Anwendungsfall geeignet ist, ist nur möglich, wenn weitere Details dazu bekannt sind.
Beste Grüße
H.A. Pürner
- 31 May 2008, 10:15 am
-
Jürgen Böhme Premium MemberThe company name is only visible to registered members.Re^2: Welche Datenbanksoftware?
Zunächst möchte ich sagen, daß ich zwar schon einige Zeit mit Datenbanken zu tun habe, allerdings über keine Erfahrung mit DAO verfüge. Allerdings habe ich auch ein paar Access-Datenbanken im Einsatz und ein wenig mit der Anbindung an andere Datenbanksysteme experimentiert.
1) Der einfachste Weg, die Performance einer Access-Datenbank zu optimieren und über einen längeren Zeitraum konstant zu halten, ist für mich in den Optionen das Häkchen "Beim Beenden komprimieren".
2) Eine weitere Option ist es, eine bestehende Datenbank in ein Frontend und ein Backend aufzuteilen. Das Arbeiten mit temporären Arbeitsdaten scheint mir vorrangig im Frontend stattzufinden, sodaß mehrere Nutzer, die von unterschiedlichen Clients auf einen gemeinsamen Datenbestand zugreifen, dort eine Datenbasis vorfinden, die eine einigermaßen gleichmäßige Performance anbietet.
3) In Access 2003 gibt es einen "Upsizing Assistent", mit dem ich die DB-Engine einer Access-Datenbank auf einen MS-SQL-Server übertragen kann, ohne die Datenbank selber umprogrammieren zu müssen.
4) Eine weitere Lösung, die anscheinend sehr stabil arbeitet, ist Filemaker. Für Business-Anwendungen ist die Kombination Client/Filemaker-Server in Betracht zu ziehen.
http://www.filemaker.de
Laut der nachfolgenden Betrachtung liegt die Zielsetzung einer Filemaker-Anwendung eher im taktischen Bereich, während SQL-Datenbanken wie Oracle mehr auf den strategischen Bereich ausgerichtet sind.
http://www.filemaker.de/articles/guide/it_resources.html?cla...
5) Eine weitere überlegenswerte Variante ist der Einsatz der OpenSource-SQL-Datenbank "EnterpriseDB", die u.a. mit der Zielsetzung entwickelt wurde, eine kostengünstige Alternative zu Oracle-Datenbanken darstellen zu können.
http://www.enterprisedb.com
- 31 May 2008, 11:08 am
-
Post visible to registered members
-
Jean Fiedler Group moderatorThe company name is only visible to registered members.Re^3: Welche Datenbanksoftware?
Vielleicht sollte Sie auch in Erwägung ziehen. Die Datenbankanbindung über ODBC zu realisieren, bzw. eine API zum Zugriff zu benutzen mit der sie Herstellerunabhängig sind.
Bei nur 10 Nutzern ist es im Prinzip egal welche DB sie einsetzen. Alle werden sich wahrscheinlich sehr langweilen (es kommt natürlich immer auf die Anwendung an).
Eine DB unabhängige Programmierung sichert ihnen auf jedenfall eine flexible Zukunft.
Auch können sie dann Tests machen welche DB denn nun die beste für Sie ist. Denn letztlich kommt es auf ihre Anwendung an.
Vielleicht hilft ihnen aber auch schon eine Optimierung ihrer bestehenden Abfragen/Programmierung.
- 31 May 2008, 11:41 am
-
Post visible to registered members
-
Robert MarkuThe company name is only visible to registered members.Re^4: Welche Datenbanksoftware?
Erst einmal wirklich vielen Dank an alle für diese Mühe die Sie sich alle gemacht haben, das gibt einen schon erste Anregungen. SQL Express habe ich schon probiert, kam auch wunderbar damit klar, aber das Problem bei der Sache war, das ich nur lokalen Zugriff hatte, aber nicht von einem anderen Client aus dem Netzwerk. Habe aber alles aktiviert, das eigentlich der Remotezugriff funktionieren sollte, aber ging trotzdem nicht, was zur Folge hatte, das ich bald verzweifelt bin und das Ganze wieder deinstalliert habe!
Ich beschreibe mal ein Szenario, wo ich derweil mit einem akuten Zeitproblem zu kämpfen habe:
Datenbanken (Access):
- der gesamte Adressbestand inkl. Angaben unserer Bestandskunden (ca. 350.000)
- eine 2. DB, die die Namen, PLZ und Ort (für die Suche) enthält und Werte, die in der 1. DB geupdated werden sollen, wenn die entsprechenden Suchwerte gefunden wurden (ca. 170.000)
Das habe ich alles per DAO geschrieben. Ich könnte zwar SQL bzw. DLookup benutzen, alledings stimmen die Formatierungen nicht so 100% in den Firmennamen von der 1. DB im Vergleich zur 2. DB. Deshalb Nutze ich z.b. die Left() Methode, um nur die ersten 10 Zeichen zu überprüfen. Es ist sehr genau, aber frisst wahnsinnig Zeit. Und per SQL geht die Methode doch ihmo nicht oder? Kann aber auch sein, das ich gerade etwas auf dem Schlauch stehe. Ich poste hier mal den Code hinein, vielleicht fällt ja der eine oder andere vor Schreck vom Stuhl, weil der Quellcode doch nicht so gut ist. Aber man kann ja nur lernen ;)
-----------------------------------------------------------------------------
Option Compare Database
Option Explicit
Private Const DBPfad = "C:\xxxxxxxxxxxxxxx\xxxxxxxxxx.mdb"
Sub Datenabgleich_MA()
'Objekt für die DB wird angelegt
Dim db As DAO.Database
'Aktuelle DB wird dem angelegten Objekt zugewiesen
Set db = CurrentDb
Dim db2 As DAO.Database
Set db2 = DBEngine.OpenDatabase(DBPfad)
'Objekte für die einzelnen Tabellen werden angelegt
Dim rs_adressen As DAO.Recordset
Dim rs_masel As DAO.Recordset
'Die einzelnen Tabellen werden den jeweiligen Objekt zugewiesen
Set rs_masel = db.OpenRecordset("MATemp", dbOpenTable)
Set rs_adressen = db2.OpenRecordset("Adressen", dbOpenTable)
Dim zählerupdate&
' 'Zeitmessung
' Dim StartZeit As Long, Dauer As Long
' DoEvents
' StartZeit = Timer
DoCmd.Hourglass True
rs_masel.MoveFirst
'MsgBox CStr(zählerok)
Do
If rs_masel("OK") = "nein" Then
rs_adressen.MoveFirst
'Vergleichen auf Firmenname und PLZ
Do
' If rs_adressen("PLZ") = rs_masel("PLZ") Or LCase(rs_adressen("Ort")) = LCase(rs_masel("Ort")) Then
If StrComp(rs_adressen("PLZ"), rs_masel("PLZ")) = 0 Or StrComp(LCase(rs_adressen("Ort")), LCase(rs_masel("Ort"))) = 0 Then
'If CountEqualWords(rs_adressen("Firmenname"), Left(rs_masel("Firmenname"), 10)) > 0 Then
If Left(rs_adressen("Firmenname"), 10) = Left(rs_masel("Firmenname"), 10) Then
rs_adressen.Edit
rs_adressen("xxxxxxx") = xxxx
rs_adressen("xxxxxxx2") = xxxx2
rs_adressen("Bundesland") = rs_masel("Bundesland")
If rs_adressen("PLZ") = "00000" Then
rs_adressen("PLZ") = rs_masel("PLZ")
End If
rs_adressen.Update
zählerupdate = zählerupdate + 1
rs_masel.Edit
rs_masel("Found") = "ja"
rs_masel.Update
Exit Do
End If
End If
rs_adressen.MoveNext
Loop Until rs_adressen.EOF
rs_masel.Edit
rs_masel("OK") = "ja"
rs_masel.Update
End If
rs_masel.MoveNext
Loop Until rs_masel.EOF = True
rs_adressen.Close
rs_masel.Close
Set db = Nothing
'Sanduhr ausschalten
DoCmd.Hourglass False
DoCmd.Beep
'Zeitmessung beenden und ausrechnen und Meldung ausgeben
' Dauer = Timer - StartZeit
' If (Dauer < 60) Then
' MsgBox CStr(zählerupdate) + " Adressen wurden geupdated" & Chr(13) & Chr(13) & _
' "Dauer in s: " & Dauer
' Else
' MsgBox CStr(zählerupdate) + " Adressen wurden geupdated" & Chr(13) & Chr(13) & _
' "Dauer in s: " & Dauer & Chr(13) & "Dauer in h:m:s: " & _
' SekundenZuZeit(Dauer)
' End If
MsgBox CStr(zählerupdate) + " Adressen wurden geupdated"
End Sub
----------------------------------------------------------------------------
Vielleicht erkennt man da schon einige Bremsen, ich weiß momentan nicht so recht, wie ichs anders machen soll, liegt aber vielleicht an der Hitze, k.a. *g*
Vielen Dank auf jeden Fall nochmal. Wenn noch Fragen sind, was ich jetzt in der Hülle und Fülle vergessen habe zu beantworten, dann einfach nochmal ein kurzer Hinweis auf den entsprechenden Beitrag.
Schönen Sonntag dann,
Robert Marku
This post was modified on 31 May 2008 at 08:03 pm.- 31 May 2008, 6:00 pm
-
Post visible to registered members
