Seite 1 von 1

Große Datenmengen mit PGDBE

Verfasst: Mi, 27. Mai 2020 13:57
von SDaniel
Ich möchte ein Xbase-Projekt bei dem z.T. große DBF-Tabellen einer ADS-Datenbank verwendet werden, auf PostgreSQL umstellen. Ich konnte bisher kleinere und mittelgroße Tabellen importieren und über DacSqlStatements darauf zugreifen was jedoch mit großem Anpassungsaufwand in den Sourcen verbunden ist und zudem sind die Datenzugriffe bei größeren Datenmengen extrem inperformant.
Hat jemand Erfahrung wie man mit der PGDBE am besten große Tabellen (mit mehreren Mio. Records) in einer Workarea öffnen und mit SEEK (oder DBSeek()) auf bestimmte Datensätze positionieren kann ?

Re: Große Datenmengen mit PGDBE

Verfasst: Mi, 27. Mai 2020 14:10
von Marcus Herz
Ich glaub, da musst du wirklich auf SQL gehen.
Die ISAM Emulation in Verbindung mit PGDBE ist da zu langsam.
Da stimmt auch das Konzept nicht mehr. Da PostgreSQL keine Satzzeiger hat, sollte man dann mit SELECT ... WHERE die Ergebnismenge eingrenzen.
Allein schon weil der PostGreSQL Server auf seiner Seite eine Kopie der Daten in sein RAM legt.

Re: Große Datenmengen mit PGDBE

Verfasst: Mi, 27. Mai 2020 14:55
von Tom
Die PGDBE ist während der letzten Monate dramatisch besser geworden, aber bei sehr großen Datenmenge stößt die ISAM-Emulation immer noch an ihre Grenzen. Es spricht aber nichts dagegen, zwei DBEs zugleich zu verwenden; das kann Xbase++. Organisatorisch müsste man aber Tabellen, die man zwar mit PG, aber nicht mit PGDBE nutzen möchte, in einer gesonderten Datenbank unterbringen, würde ich meinen.

Re: Große Datenmengen mit PGDBE

Verfasst: Do, 28. Mai 2020 13:35
von ramses
SDaniel hat geschrieben: Mi, 27. Mai 2020 13:57 Hat jemand Erfahrung wie man mit der PGDBE am besten große Tabellen (mit mehreren Mio. Records) in einer Workarea öffnen und mit SEEK (oder DBSeek()) auf bestimmte Datensätze positionieren kann ?
Am besten vergisst du die ISAM Emu so schnell wie möglich. Ich kann dir aus eigener, mit viel Aufwand gewonnenen Erfahrungen nur empfehlen normale PG Tabellen zu benutzen. Ob du dies über die PGDBE oder gleich direkt mit eigenem Code nativ machst ist die nächste Frage.

Allerdings musst du für diese Varianten deinen gesamten Source-Code überarbeiten. Wirst dafür auch mit einer schnell und perfekt funktionierenden Datenbank belohnt.

Ich habe eine Tabelle mit ca. 800 Mio. Datensätzen das läuft einwandfrei. Allerdings mit eigenem Nativen Code ohne nutzen der PGDBE, ISAM-EMU und UPSIZE.

Ist die PGDBE in den letzten Monaten wirklich besser geworden? Es gab in den letzten Monaten ja gar *NICHTS* neues von Alaska. Die letzte Version ist die vom Januar 2020.