Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Grundsatzfrage zu Datenbankprojekt (https://www.delphipraxis.net/165090-grundsatzfrage-zu-datenbankprojekt.html)

jobo 16. Dez 2011 10:02

AW: Grundsatzfrage zu Datenbankprojekt
 
OT
Zitat:

Zitat von Bernhard Geyer (Beitrag 1141719)
Zitat:

Zitat von jobo (Beitrag 1141718)
... alle können autark, nebeneinander auf einem System installiert sein.

Eigentlich nicht. Oder schon mal geschafft den 32 und 64-Bit Client parallel und ohne weitere "Tricks" (Instant Client) parallel lauffähig installiert zu haben.

Nein, in die Verlegenheit bin ich noch nicht gekommen. (Ich geh mal davon aus, dass Du ein Win7 System meinst). Ich bin bis jetzt immer damit ausgekommen, Umgebungsvariablen anzupassen.
Meine Aussage war aber ganz allgemein. Separate Konfigurationsdateien sind zunächstmal die Voraussetzung für parallele Installationen.
Ich werde mir mal den Spaß machen und Dein Beispiel ausprobieren. :)

Ez Connect
Zitat:

Zitat von Bernhard Geyer (Beitrag 1141719)
Unterstützt das auch 100% alle Feature der Konfigdatei? Ansonsten wäre es eine Möglichkeit wenn die Zugriffskompos das unterstützen.

Das kann ich mir kaum vorstellen. Wahrscheinlich muss ich mich entscheiden, ob ich es einfach haben will (Easy Connect) oder eine große Bandbreite an Konfigurationsmöglichkeiten (Net Connect/Services). Die Doku dazu hat über 200 Seiten.
Easy connect ist davon nur ein paar Seiten, Parameter gibts nur 5 oder 6, URL Host, Port. usw

p80286 16. Dez 2011 11:03

AW: Grundsatzfrage zu Datenbankprojekt
 
Das ist doch wohl ein Witz??
Nachdem ich mich von ODBC gelöst habe, jetzt wieder zurück weil es ein
Zitat:

de-facto standard client connectivity API
ist?

Ein wenig bin ich ja ein ODBC-Fan, aber wenn ich soetwas lese fühle ich mich schon veräppelt.
(Wenn man mehrere DBs an eine Oberfläche koppeln muß ist ein natives API nicht so der Bringer, vor allem wenn es natürlich nichts kosten darf!)

Gruß
K-H

Bernhard Geyer 16. Dez 2011 12:18

AW: Grundsatzfrage zu Datenbankprojekt
 
Zitat:

Zitat von p80286 (Beitrag 1141751)
Das ist doch wohl ein Witz??
Nachdem ich mich von ODBC gelöst habe, jetzt wieder zurück weil es ein
Zitat:

de-facto standard client connectivity API
ist?

Ein wenig bin ich ja ein ODBC-Fan, aber wenn ich soetwas lese fühle ich mich schon veräppelt.

ODBC ist Standard weil es diese Schnittstelle auch außerhalb der Windows-Welt gibt. Bei ADO/OLE DB ist das nicht der fall.

Zitat:

Zitat von p80286 (Beitrag 1141751)
(Wenn man mehrere DBs an eine Oberfläche koppeln muß ist ein natives API nicht so der Bringer, vor allem wenn es natürlich nichts kosten darf!)

Sehe ich nicht so. Haben hier 5 DB-Systeme darüber abgebildet und sind froh darüber das man bei einigen gar nix (ODBC/OLE-DB)-Technisch installieren muss.

stahli 20. Jan 2012 14:03

AW: Grundsatzfrage zu Datenbankprojekt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nochmal eine Frage:

In meinem BDE-Projekt habe ich einfach eine TTable und ein DBGrid verwendet. Entsprechend konnte man prinzipiell durch die gesamte Mastertabelle (40T Datensätze) scrollen - was natürlich aber niemand tut.
Aber man kann die Tabelle unterschiedlich sortieren und leicht zu benachbarten Datensätzen wechseln.

Weiterhin gibt es ein Eingabefeld für einen Suchtext. Dieser wird bei jeder Änderung (bei jedem eingegebenem Zeichen) neu interpretiert und der passendste Datensatz lokalisiert.
Dazu wird der Suchtext zerlegt und zunächst ein passender Straßenname gesucht (wobei die einzelnen Worte abgekürzt sein können) und anschließend nach einer passenden Hausnummer in der Straße. Die über die Suchfunktion gefundene Grundstücksnummer wird dann in der TTable lokalisiert.
Der Suchtext "n p9" führt dann z.B. zu "Neustädter Passage 9".

Das ist im Handling sehr angenehm und von allen gern angenommen.

Nun stellt sich für mich die Frage, wie man die Aufgabenstellung in Multi-Tier-Anwendungen löst. Hier hat man ja im Client keinen Zugang auf eine komplette Tabelle mit 40T Datensätzen, bzw. wäre es sicher nicht zweckmäßig, solche Mengen über das verwendete Protokoll zu übertragen. Oder bietet hier z.B. DataSnap intern die Möglichkeit, nur die notwendigen (weil z.B. in einem DBGrid sichtbaren) Datensätze zu übertragen? Ich denke wohl nicht.

Die gleiche Fragestellung stellt sich bei Browseranwendungen. Hier ist ja nicht denkbar, eine Tabelle mit 40T Einträgen aufzubauen, auch wenn der Inhalt der Tabelle scrollbar wäre.

Insofern hat eine klassische Datenbankanwendung (mit direkter Anbindung an einen Datenbankserver über Netzwerk) auch seine Vorzüge.

Wie seht Ihr das?

jobo 20. Jan 2012 15:15

AW: Grundsatzfrage zu Datenbankprojekt
 
Sind denn die 40T Datensätze nicht mehr weiter "kleinzukriegen"?
Zunächst dachte ich ein Ort hat selten 40T Straßen, aber es geht ja offenbar um Mietparteien oder so.

Hast du Einfluss auf das Datenmodell? Wenn es normalisiert ist, steht ja nicht für jede Wohnung der Straßenname dabei, sondern lediglich ein Verweise (ID). Suchen müsstest Du dann nur noch auf den mal geschätzt 4000 Straßen einer Stadt, im 2. Schritt dann auf der Hausnummer. Steht die Hausnummer in einem separaten Feld?

Mir ist auch die Logik in der abgekürzten Suche nicht ganz klar.
"N[Leerzeichen]P9"
'Leerzeichen' steht für 'nächstes Wort'?
'N' (am Anfang) steht für (erstes) Wort beginnt mit 'N'?
'Ne' stünde für (erstes Wort) beginnt mit Ne?
Wird Großschreibung unterschieden?

Wenn Du mit einem DB Server sprichst, wäre der Like Operator gefragt.
Der funktioniert wie die Wildcards aus Dateilistings.

Wenn Du es schaffst, die Suchanfrage in einen Like kompatiblen Filter umzubauen, sehe ich kein Problem. Die meisten DB haben außerdem die Möglichkeit, schon serverseitig die Menge der zurückgegebenen Werte zu beschränken.

Um Web müsste man vielleicht mit Ajax arbeiten.
Datasnap kenne ich nicht.

mkinzler 20. Jan 2012 15:21

AW: Grundsatzfrage zu Datenbankprojekt
 
Die Frage ist, ob sich der Aufwand für ein BDE-Projekt lohnt und man nicht auf eine aktuelleres DBMS wechseln sollte, welches reguläre Ausdrücke unterstützt.

jobo 20. Jan 2012 15:43

AW: Grundsatzfrage zu Datenbankprojekt
 
Ich hatte stahli so verstanden, dass mit der Multi-Tier Frage auch der Wechsel von BDE auf DB-server einhergeht.

stahli 20. Jan 2012 16:54

AW: Grundsatzfrage zu Datenbankprojekt
 
Ja, es geht ja gerade um einen Umstieg von der BDE zu einem ordentlichen SQL-DB-Server.

Die Frage ist nun, wie man bei einer Multi-Tier-Anwendung oder auch einer Browseranwendung mit einer großen Tabelle umgeht. Man wird wohl - um in meinem Beispiel zu bleiben - immer erst eine Straße selektieren lassen und alle weiteren Funktionen auf diese Straße begrenzen. Oder?

Wobei ich einen solchen Ansatz aber nicht wirklich schön finde. Das wäre für mich auf jeden Fall ein PRO für eine klassische Datenbankanbindung.


@jobo

Mal zum Hintergrund (wobei es darauf weniger ankommt).
Die Tabellen sind normalisiert. Die Grundstückstabelle enthält die Straßenschlüssel und die Hausnummern. Es gibt ca. 40000 Grundstücke.

Der benötigte Straßenschlüssel wird zunächst in der Straßentabelle ermittelt. Die enthält die Straßennamen und "SortStraßennamen" (mit aufgelösten Umlauten und ss statt ß).

Leerzeichen im Suchtext stehen für ein Wortende. Groß/Kleinschreibung ist nicht relevant.

"n" findet z.B. "Nachtigallensteig"
"n " auch noch
"neu" würde dagegen "Neuragoczystr" finden (siehe Bild oben)
"n p" findet "Neustädter Passage" da es die erste/einzige Straße ist, bei der das erste Wort mit "N" und das zweite mit "P" beginnt.


Mir ging es aber nicht darum, diese Funktion in SQL umzusetzen, sondern einfach darum, wie man in Multi-Tier-Probjekten oder Browseranwendungen mit großen Tabellen umgeht.
Ohne eine "Vorselektierung" oder wenigstens "Datensatzbeschränkung" wird das wohl nicht funktionieren.
Ich fände das aber ziemlich unschön und würde dann eine native Datenbankanbindung wenn möglich bevorzugen. Für das GUI-Design stelle ich mir das einfach besser vor.
Der User kann somit "die gesamte Tabelle" vor sich sehen und muss sich nicht erst bestimmte Häppchen daraus laden.

WM_CLOSE 20. Jan 2012 17:11

AW: Grundsatzfrage zu Datenbankprojekt
 
Mach es doch so wie Google bei seiner Bildersuche:
Lade nur den Teil (nach) der gerade z.B. auf Grund der Scrollposition benötigt wird.

Phoenix 20. Jan 2012 18:00

AW: Grundsatzfrage zu Datenbankprojekt
 
Schieb doch einfach die Sucheingabe auf den Middle-Tier, lass den Suchen und liefer nur das gefilterte Ergebnis zurück.
Und nein, das geht nicht mit DataSnap, aber DataSnap ist auch kein Middle-Tier Server sondern will nur spielen. Für Real-World Anwendungen ist das Ding nicht zu gebrauchen. Mit einem selbst gebauten Middle-Tier der anständigen Frameworks ist sowas aber kein Problem.

Edit Nachtrag: Beispiel Finanzen.net
Geb mal in der Suchmaske "Mic" ein, warte dann auf die anzeige, und verfeiner dann z.B. mit " Fonds".
Das ganze wird zum Server (Middle-Tier) geschickt, eine Volltextsuche auf die Datenbank losgelassen, bestimmte Schlagworte sorgen für eine genauere Filterung, und der Client bekommt nur noch das Ergebnis zurück. Und dafür müssen nur minimal Daten übertragen werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz