logging reads/writes

j4n

Member
hi there,

has anyone got an idea if I can tell progress to log every read and write to any table? I need more than _tablestat though. I want to know exactly which record has been read/written.
I had a quick glance through the other VSTs but couldnt find anything usefull. Any ideas?

Cheers,
Jan
 

LarryD

Active Member
Yes you can.

You can add db triggers for both reads (find) and writes as long as you don't need the user.

Depending on which version of Progress you have, you could use the Progress Audit facility to do this also.
 

j4n

Member
db triggers are not an option.

i've been looking into the auditing. sounds very promising...
 

RealHeavyDude

Well-Known Member
You don't tell anything about your Progress/OpenEdge version. This is essential information as there is an auditing functionality built into the database engine available as of 10.1A.

HTH, RealHeavyDude.
 

j4n

Member
10.2b
I'm not sure though if auditing gives me enough information. what i essentially need is something like a log that shows which user has read which records at which time.
 

RealHeavyDude

Well-Known Member
The built-in auditing can give you much more than that. The key lies in the audit policies you define. Setting up the whole thing and defining your audit policies is not something you just do in an hour. It needs a concept as to which data you want to audit in which way and what context information do you need. Just switching it on for "everything" is no solution.

But, if you don't like the built-in audit then you have two options depending on how your application is designed (I suppose you just want to audit some tables and not all):
  • If the logic that's used to retrieve data for those tables is encapsulated and in one place - then you can add your audting just there.
  • If the logic is spead all over your application then you best option is using database triggers - even if you don't like 'em.
In any case, you need to be aware that, if you audit data retrieval there might be a significant hit on performance - it will not come for free.


Regards, RealHeavyDude.
 

Casper

ProgressTalk.com Moderator
Staff member
what i essentially need is something like a log that shows which user has read which records at which time.

Read? Do you have any idea how many records are being read by a user in a normal working environment?
What is your definition of reading the data? You don't mean the process of reading records in the database I suppose?

What do you want to accomplish with this information?

Casper.
 

j4n

Member
actually I do want to log EVERY read and I'm aware that it doesn't come for free.

I'm thinking about developing a graphical tool that shows the database as grid and tables as nodes in this grid. depending on reads/writes the nodes get highlighted. it's not something that has to make sense in a professional environment. I just like to visualize stuff and I thought I could do that for progress DB reads/writes.

and no. I wont do the grraphical part in progress.
 

TomBascom

Curmudgeon
If you just need to know the number of reads/writes etc for each table it is easy -- just use the _tablestat VST.
 

j4n

Member
well. I'd also like to visualize dependencies. e.g. order of customer...

Don't ask me how I plan to do that though ;)
 
Top