Datenbanken

Datenbanken

Posts 1-10 of 21
  • User photo
    Robert Marku
    The 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.
  • Post visible to registered members
  • Post visible to registered members
  • Heinz Axel Pürner
    Heinz Axel Pürner    Premium Member   Group moderator
    The 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
  • Jürgen Böhme
    Jürgen Böhme    Premium Member
    The 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
  • Post visible to registered members
  • User photo
    Jean Fiedler    Group moderator
    The 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.
  • Post visible to registered members
  • User photo
    Robert Marku
    The 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.
  • Post visible to registered members