Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: Lezen uit progress database
Prev Next
You are not authorized to post a reply.

Author Messages
Jan-Mark de WitteUser is Offline

Posts:11

04-03-2011 12:38:43 Alert 

Ons datawarehouse leest veel data uit een Progress database. Er is een  tabel met zo'n 20 miljoen records die maar liefst 3,5 uur uur duurt om uit te lezen.

Als er een filter wordt toegepast (ik heb maar een tiende nodig) worden er wel minder rijen uitgelezen, maar de doorlooptijd blijft even lang. Dat lijkt een index probleem..., maar de index bestaat wel. De connectie met de progress database gebeurt door middel van een odbc connectie geleverd door Progress. Wellicht dat deze op de een of andere niet alle indexen meeneemt. Zou dit met rechten te maken kunnen hebben?

Is er iemand die ervaring heeft met het lezen uit Progress en dit op een andere manier doet dan via een odbc connectie?

 

 

 

 

 

Stefan Oude VrielinkUser is Offline

Posts:3

10-03-2011 08:25:56 Alert 

Kan het zijn, dat het filter niet aan de Progress kant wordt uitgevoerd, maar aan de kant van SQL Server? Indien ja, dan wordt alle data alsnog overgehaald.

Progress heeft mij al meerdere malen kopzorgen bezorgd. In Progress wordt geen maximale datalengte afgedwongen. Stel je hebt een char veld met displaygrootte van 20, dan maakt de ODBC driver daarvan char(40). Als zo'n veld echter meer dan 40 tekens bevat, geeft de ODBC driver een foutmelding. Enige oplossing in zo'n geval is het aanpassen van de betreffende data in Progress...

Het handigste is wellicht om vanuit Progress een dump te maken en dat in te lezen in SQL Server.

Jan-Mark de WitteUser is Offline

Posts:11

10-03-2011 08:46:39 Alert 
Stefan,
Bedankt voor je reactie!
Het lijkt inderdaad zoiets te zijn. Je zou alleen toch zeggen dat de odbc connectie de hele query gewoon door Progress laat uitvoeren en zelf de data doorstuurd. Interessant is trouwens dat bijvoorbeeld een TOP(100) statement wel snel werkt.

Gelukkig ben ik er nog niet tegenaan gelopen dat de ingelezen veldlengte wordt overschreden, de dubbele grote nemen is inderdaad geen overbodige luxe van SSIS.

Een dump maken lijkt inderdaad het enige goede plan. Ik zou dan het liefst deze dump vanuit ssis willen triggeren. Dat lijkt alleen een beetje lastig te zijn. Heb je ervaring met dumpen uit Progress / ideeen hoe dit goed kan worden ingericht?

Een andere oplossing zou kunnen zijn om via een script component direct een 4gl connectie naar Progress te maken. Er is in de nieuwste Progress versie wel een verbinding dmv webservices mogelijk. Ik weet alleen niet wat de performance daarvan is.
Dave HoogendoornUser is Offline

Posts:8

15-03-2011 21:56:37 Alert 
Hoi Jan-Mark,

Wat voorkomt is dat Progress standaard niet optimaal geconfigureerd is. Mijn ervaring is dat met name de Progress Server Parameters erg van invloed kunnen zijn op een snelle(re) werking van de progress databases. Ik stel voor even goed naar de -S, -L, -B, -n, -N, -Mn, -Ma, -Mm & - spin parameters te kijken. Daarnaast geldt dat voor de Progress 10.1E omgeving specifieke inrichting van TYPE II storage area’s van belang is.

Indien je toegang hebt tot de Progress Software kun je mogelijk eerst een tekst export doen en deze tekstbestanden vervolgens weer importeren. Een tekst export in Progress is helaas sneller dan een ODBC export.

Daarnaast zou ik ook op een aantal andere zaken letten:

-Configuratie van de ODBC Driver binnen de registry (met name APILevel & SQLLevel)
-Het gebruik van de Progress versies (versie 10 is duidelijk sneller dan versie 9)
-Check op valide datums (1: een datum in Progress mag een ongeldige waarde hebben zoals b.v. #00-01-1374#. 2: datums < dan 1753-1-1 zijn toegestaan in Progress)

Succes.


Ronald SchellekensUser is Offline

Posts:1

25-03-2011 13:16:40 Alert 
Via een Openedge dataserver kun je Progress 4GL ook in een SQL database laten schrijven. Er is ook een .Net Data provider (althans in versie 9), deze koppelt .Net aan een Progress Appserver. Hier kun je dan een Progress query uitvoeren (.p) die een dataset teruggeeft.
Destijds was de snelheid van de aanroep via deze provider (bijna) net zo snel als een native aanroep naar de Appserver.
ODBC is echt niet aan te raden, zelfs niet via de eigen Datadirect optie.
Jan-Mark de WitteUser is Offline

Posts:11

13-02-2012 10:54:40 Alert 
Even een update op dit punt voor het geval dat iemand anders met hetzelfde probleem zit.

Na veel proberen en erbij halen van een progress consultant blijkt dat een index in progress alleen werkt als de volledige index wordt gerefereerd. Ook voor de query nutteloze kolommen moeten dus worden opgenomen. Als dit wordt gedaan levert de query wel een sneller resultaat.
You are not authorized to post a reply.
Forums > Forums > Business Intelligence > Lezen uit progress database



ActiveForums 3.6
  
Copyright (c) 2012 PASS Nederland   Privacy Statement  Terms Of Use