ODBC vs. OleDB



  • Will/muß die von meinen Programmen erzeugten Daten in einer Datenbank speichern. Das Datenbanksystem steht nocht nicht fest, vielleicht Access oder mySQL. Betriebssystem ist Windows XP ohne Netzwerk.

    Sollte ich für mein Vorhaben eher die ODBC- oder doch lieber die-OleDB-Schnittstelle verwenden? Eine eindeutige Empfehlung habe ich bis jetzt nämlich nicht finden können.

    Würde mich über eure Erfahrung, Tips und natürlich auch Links sehr freuen.

    Ach so: ich programmiere (noch) in C, weil ich noch immer keine Zeit gefunden habe, mich in C++ einzuarbeiten.



  • Wenn du die DB nicht kennst dann nimm ODBC.

    Gibt für Access und MYSQl Treiber dazu.
    Nachteil: zu langsam



  • Nachteil: zu langsam

    Um welche Größenordnung handelt es sich hier?



  • Danke für eure Antworten 🙂

    Bisher speichere ich meine Daten für jede Anwendung getrennt einfach in Dateien, d.h. meine Adressenverwaltung hat ihre Adressendatei, meine DVD-Verwaltung hat ihre DVD-Datei usw. usw. Sehr lehrreich war es übrigens, als Structs geändert werden mußten .. 🙄

    Nun hatte ich gelesen, das SQL für Datenbanken normiert ist (glaube SQL-92 oder so) und habe mir überlegt, meine ganzen Dateien in solch eine SQL-Datenbank zu transportieren, weil sich dann auch relationale Verknüpfungen, z.B. Kumpel C leiht sich am xx.xx.2003 DVD p, q, s. - realisieren ließen.

    In diesen Büchern war auch die Rede davon, daß es Standard-Schnittstellen gäbe, mit denen diese Aufgabe datenbankunabhängig lösen läßt. Heute also alles in einer Access-Datenbank und später eben eine "richtige" Datenbank wie mySQL oder SAP-DB 😉

    Benannt wurden die beiden (Standard??) Schnittstellen ODBC und OleDB, ohne jedoch die Techniken, die Unterschiede und die Vor- und Nachteile zu erläutern.

    Deshalb hatte ich gedacht, frag mal hier, vielleicht erfährst du hier bei den Profis mehr 😕

    Richtig gute Infos, die meine Fragen ausführlich beantworten, habe ich im I-Net trotz intensiver Suche bisher leider auch nicht gefunden.

    @ HumeSikkins: richtige Größenordnungen gibt es keine - das ganze wächst noch ..



  • @ HumeSikkins: richtige Größenordnungen gibt es keine - das ganze wächst noch

    Du hast meine Frage mißverstanden 🙂 Ich wollte von Unix-Tom wissen, in welcher Größenordnung sich der Geschwindigkeitsunterschied zwischen ODBC und native DB-API bewegt. Ich überlege im Moment nämlich auch noch, ob ich meine MySql-DB über unixODBC (+ Wrapper) oder doch direkt über MySQL++ (+ Wrapper) ansprechen soll.



  • Icvh habe noch nie eine genaue Messung durchgeführt.
    Habe vor der MYSQL-API ODBC verwendet und da ich mit großen Datenmengen arbeite (> 2.000.000 Datensätze) habe ich damals versucht eine vergleich anzustellen.

    Einfügen in der Größenordnung von mehreren Minuten unterschied.
    Die API ist schlank und schnell was man von ODBC nicht behaupten kann.
    Bei vielen Datensätze wirkt sich eine Schleife mehr schon extrem aus.

    Ich weiß jetzt nicht genau ob es bei ODBC geht das die Tabelle im Server erstellt und von dort gefetcht wird.

    Ein Client sollte aber die Daten nicht in seinem Speicher erstellen da Clienten oft weniger Speicher haben und langsamer sind.

    Bei der API geht es. Abfrage und es müssen nicht alle Datensätze übertragen werden. Der Fetch wird dann am Server ausgeführt und immer nur ein Datensatz übertragen.

    Ich habe es aber so gelöst.
    Ich habe meine MYSQL-C++-Klasse genommen und auch auf ODBC abgebildet.
    Somit brauche ich in meinem Programmen nur mehr eine Klasse mit den gleichen Befehlen für ODBC und MYSQL verwenden.



  • Ich würde ODBC dem Ole-Kram vorziehen. ODBC gibt's auf mehreren Plattformen, und mann weiss ja nie was die Zukunft bringt 🙂 Ole klingt so nach Windows-Only...

    Was den Geschwindigkeits-Unterschied zwischen ODBC und Nativ angeht würde ich mal sagen das hängt davon ab, wie das Native API aussieht, also wieviele Verrenkungen der ODBC-Treiber machen muss, um das ODBC-API über die native Schnittstelle abzubilden.

    Bei DMBS wie DB2 oder (noch) SAP DB, wo das Native API mit dem ODBC API identisch ist, dürfte es keinen grossartigen Performance-Unterschied geben.


Anmelden zum Antworten