Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » BIRT » DataEngine dataset cache
DataEngine dataset cache [message #991718] Wed, 19 December 2012 22:22 Go to next message
donino donino is currently offline donino donino
Messages: 160
Registered: July 2011
Senior Member
Hi,

I'm not sure to understand how this dataset cache works in Report Engine 4.2, please is there any resource or documentation which could help? Is this cache shared across several reports executions, or only used within a single execution (when a dataset is accessed multiple times in a report)?
We checked all our datasets have a property "Needs cache for data-engine" set to true, though it appears only a few of them actually create a dataEngine Object in the tmpDir Birt engine folder, using RE API. In fact it seems only datasets which have a row limit defined use a dataEngine cache.

Any link to documentation/information will be much appreciated!
Thanks
Re: DataEngine dataset cache [message #992006 is a reply to message #991718] Thu, 20 December 2012 11:44 Go to previous messageGo to next message
donino donino is currently offline donino donino
Messages: 160
Registered: July 2011
Senior Member
Well,

I kept investigating and i found out this dataset cache can be enabled like this:

config.getAppContext().put(EngineConstants.APPCONTEXT_DATASET_CACHE_OPTION,true);
config.getAppContext().put(DataEngine.DATA_SET_CACHE_ROW_LIMIT, -1);

With this property, we can see most of the time a report runs, it creates 3 files in a DataSetCacheObject temp folder:

data.data
meta.data
time.data

It seems BIRT tries to reuse a dataset cache previously built, even across different user sessions, this is very interesting. Is there an expiration time? I assume it is related to this "time.data", is it possible to control this through an API or a property?

Thanks!
Re: DataEngine dataset cache [message #992050 is a reply to message #992006] Thu, 20 December 2012 14:01 Go to previous messageGo to next message
Jason Weathersby is currently offline Jason Weathersby
Messages: 9167
Registered: July 2009
Senior Member

That cache option should only be used in a design situation:

DataEngine.DATA_SET_CACHE_ROW_LIMIT
This setting allows user to cache a data set in disk. If set to negative value, all rows in data set will be cached. If set to zero, the function is disabled. If set to positive number, specific number of rows will be cached. Should only be used in a design situation.
Change setting to clear.

You probably want to try:
DataEngine.MEMORY_BUFFER_SIZE
Memory per Query that is used before caching to disk. Defaults to 10 MB. Used inside and outside of designer.

Jason


Jason Weathersby

BIRT Exchange
Re: DataEngine dataset cache [message #992070 is a reply to message #992050] Thu, 20 December 2012 14:51 Go to previous message
donino donino is currently offline donino donino
Messages: 160
Registered: July 2011
Senior Member
This is what i wanted to know, thank you Jason.
Previous Topic:Dynamic sql
Next Topic:.getExpressionValue("row[CUSTOMERNAME]" returns a NULL ! WHY?
Goto Forum:
  


Current Time: Sun Apr 20 06:50:38 EDT 2014

Powered by FUDForum. Page generated in 0.01807 seconds