Re: Client Cursor oder Server Cursor?
From: Elmar Boye (ElmarB_at_gmx.net)
Date: 10/04/04
- Next message: Elmar Boye: "Re: kurdische zeichen einlesen"
- Previous message: Frank Kalis: "RE: Datenbankgröße"
- In reply to: Thomas Östreich: "Re: Client Cursor oder Server Cursor?"
- Next in thread: Thomas Östreich: "Re: Client Cursor oder Server Cursor?"
- Reply: Thomas Östreich: "Re: Client Cursor oder Server Cursor?"
- Messages sorted by: [ date ] [ thread ]
Date: Mon, 4 Oct 2004 10:01:19 +0200
Hallo Thomas,
Thomas Östreich <bla@bla.de> schrieb ...
>>> Was ist besser bei ADODB/OLEDB beim Zugriff auf MSSQL / MSDE
>>> ClientCursor oder ServerCursor?
>>
>> Favorisiert wird seit längerem der Clientseitige Cursor.
>> Und Du solltest Dich anschliessen, denn die neueren Technologien
>> wie .NET unterstützen ausschliesslich clientseitige Cursor.
>
> Ist denn ADO.NET kein Layer über OLEDB?
Nein! Ähnlichkeiten in Namensbestandteilen sind rein zufällig
und vom Marketing erfunden ;-))
ADO.NET hat zwar einen OleDb Client, der auf dem OleDb API aufsetzt.
Es wird aber nur ein sehr kleiner Teil der OleDb Spezifikation genutzt.
Im Prinzip wird nur noch die Vorwärts/Nur-Lese Variante (adForwardOnly/
adLockReadOnly) verwendet, das ist dann der DataReader.
Und die Daten ansonsten wie bei der Client Bibliothek in Form von
.NET Komponenten (DataSet/DataTable), was vollkommen unabhängig von
OleDb ist. Die Bearbeitung erfolgt dort abgekoppelt von der Datenbank.
Änderungen an der Datenbank werden durch explizite Befehle vorgenommen,
wobei auch Prozeduren zulässig sind. Wobei der DataAdapter den Mittler
zwischen DataTable und Datenbank darstellt.
Es gibt zwar einen sog. CommandBuilder, der das automat. Erstellen von
Aktualisierungs-Befehlen übernehmen kann. Der implementiert aber
nur Teile der Möglichkeiten, wie sie ADO kennt.
Insgesamt ist es konzeptionell äquivalent zur OleDb Client Bibliothek
mit adLockBatchOptimistic Einstellungen - allerdings im Detail mit
reichlich Unterschieden.
Mehr dazu findest Du in der .NET Framework Dokumentation - Online:
http://msdn.microsoft.com/library/default.asp?url=/library/deu/cpguide/html/cpconaccessingdatawithadonet.asp
Summa summarum dürfte es jemanden, der seine Programmierung auf ADO die
Client-Bibliothek eingestellt hat, aber deutlich leichter fallen,
später ADO.NET einzusetzen.
> Bei einem test zwischen Server-Cursor und Client-Cursor stellte ich
> fest das bei einen Open (ADODB) beide genauso schnell sind, obwohl
> ich dachte das eine Client-Cursor alle Daten hollt.
> Oder?
Holt der Client Cursor auch.
Nur auch ein Server Cursor erfordert - je nach Abfrage mehr oder weniger -
Vorleistung und zwar beim Server. So erstellt der SQL Server ein internes
Recordset in der tempdb zumindest über die Schlüsselinformationen.
Während der Client Cursor für den Abruf ein ForwardOnly/ReadOnly
Recordset verwendet, dass beim SQL Server meist kaum Ressourcen
belegt und somit wesentlich schneller abgearbeitet wird.
Wesentlich langsamer wird ein Client Cursor erst wenn die Rückgabe
so gross ist, dass der Hauptspeicher des Clients überläuft. Aber
dann hat man auch mit dem Server Cursor meist schon das eine oder
andere Problem, wie Sperren, Timeouts uam.
> Hm da gibt es ja noch ein weiteres DBPROPSET und zwar DBPROPSET_ADC
> welches ich nur durch zufall fand. Da dieses nicht im Index bei der
> MSDN / PSDK auftaucht nur durch suchen in der Hilfe.
Näheres steht im Appendix C der Ole DB Hilfe. Wobei ADC als Akronym
wohl für ADO Cursor Service steht. Und in der Regel wird das eben
als Client Cursor Bibliothek angesprochen.
Gruss
Elmar
- Next message: Elmar Boye: "Re: kurdische zeichen einlesen"
- Previous message: Frank Kalis: "RE: Datenbankgröße"
- In reply to: Thomas Östreich: "Re: Client Cursor oder Server Cursor?"
- Next in thread: Thomas Östreich: "Re: Client Cursor oder Server Cursor?"
- Reply: Thomas Östreich: "Re: Client Cursor oder Server Cursor?"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|