Toon posts:

Data Warehouse; van Progress 10 naar MySQL

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer samen met een collega van mij(delphi dev'er) een datawharehouse te maken op basis van data in een Progress DB

De situatie:

Wij werken met Omnivers van Unit4 Agresso, en op dat pakket hebben we een aantal rapportage's gebouwd. Deze zijn nogal traag omdat er nogal veel historische data verwerkt moet worden. Deze rapportage's hoeven echter niet "live" te zijn. Vandaar dat we spelen met het idee van een datawharehouse.

De doelstelling:

We willen in Delphi een programma schrijven die specifieke velden uit verschillende tabellen uit de Progress DB haalt, verzameld, en wegschrijft in een enkele tabel in een MySQL DB.

Het probleem:

Tot op zekere hoogte hebben we dit nu werkend. We trekken ca. 800.000 records uit Progress, en willen deze wegpompen naar een tabel in MySQL.
Echter dit gaat gruwelijk traag!
Het opvragen duurt lang, maar dat wisten we, omdat de bestaande rapporten ook traag zijn. Maar het wegschrijven duurt ook erg lang, en dat brgrijp ik niet. Is dat normaal? Ik praat dus echt over meerdere uren!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Staan er indexen op de betreffende tabel? Het steeds bijwerken van indexen kost erg veel tijd. Probeer dan de indexen tijdelijk te disablen, of indexen verwijderen -> importeren -> indexen opnieuw aanmaken.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12-02 13:44
Je hebt toch een slow query log? Staat daar niets in?

Verwijderd

Topicstarter
hmm, ik ga beide punten even checken, ik kom erop terug

Verwijderd

Hoe benader je de databases? via ODBC?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je kan overwegen om de data naar een csv(-achtig) formaat weg te schrijven en dan dmv load data-constructie in te laden.

Voordeel is dat MySQL dan wat trucjes kan uithalen om de boel vlotter in te laden, bovendien bespaar je behoorlijk wat round trips naar je server en flink wat query parsing overhead.

Lees in ieder geval op mysql.com nog wat bij over batch inserts.

Btw, als je geavanceerde queries op grote recordsets wilt uitvoeren ben je mogelijk beter af met PostgreSQL, in mijn ervaring kan die veel beter met grote hoeveelheden records overweg in zijn query-planner en zo efficienter ermee werken.
Voor de batch-insert zul je dan overigens ook de copy into (batch insert) moeten gebruiken voor fatsoenlijke performance. Wat wel handig is, is dat je dat ook vanuit je client kan doen, zonder een csv-file te hoeven schrijven.

[ Voor 4% gewijzigd door ACM op 07-08-2006 16:08 ]

Pagina: 1