Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
610
UltraWinGrid with BigData - DataTables or WinDataSource
posted

We are developing a WinForms application using UltraWinGrid. that will display very large datasets.

The application will receive it's data in the form of flat ADODB recordsets, some of which may approach 2GB in size.

The user may wish to drill through from any UltraWinGrid row into another tables data which would invloves adding child bands to WinGrid on the fly, later removing them and replacing them with other child bands on the fly.

Question

Given the above application scenario, what would be the best datasource for UltraWinGrid:

1) Infragistics WinDataSource, or

2) ADO.Net DataSets with data tables and relations.

The ability to handle very large datasets and performance are top priority.

Thanks in advance

 

 

 

  • 610
    Verified Answer
    Offline posted

    Hi There

    I have been involved in other projects and have only just gotten back to this.

    We downloaded the same chunk of SQL Server data into 3 different datasources and then bound those data sources to ultraWinGrid and then measured the memory consumed.
    The results were as follows:

    Data Source                      Memory Consumed
                                 
    Untyped dataset                          112 MB
    Strongly typed dataset                305 MB
    UltraWinDataSource                   713 MB

    So it would appear that untyped datasets are the best peformers from a memory usage point

  • 469350
    Suggested Answer
    Offline posted

    Hi,

    This is a very tough question to answer with so little information.

    If you are concerned about the performance of the grid, the first thing I recommend is that you read these two forum posts. The first one is a general discussion about the performance of the grid regardless of the data source. The second is a question specifically comparing a DataTable/DataSet to a BindingList<T>.

    WinGrid Performance Guide

    Wingrid Performance and DataSources - Infragistics Forums

    Personally, I don't think that binding any UI control to a very large set of data makes a lot of sense. No human user can reasonably deal with a grid that is displaying a million rows. So, depending on the application, I'd probably create some sort of search UI so the user can bring back only the rows they want to deal with at the moment.

    If you must bind to the entire set of data, then the biggest performance hit your application is likely to take is loading the data from the database in the first place rather than anything the grid does.

    Adding and removing child bands with so many parent rows shouldn't be a problem - or at least not a performance problem. It's kind've an unusual thing to do, so it could some weird behavior, and I would probably avoid it if you can. Maybe show the child data in a separate grid, rather than adding and removing bands in a single grid.

    If you are concerned about memory usage, then you can use the grid in a sort've on-demand mode by using both a DataSet and an UltraDataSource. There's a sample of this included in the WinGrid Samples Explorer called the Virtual Mode sample. It demonstrates a grid that displays a million rows. But you will lose any benefit from this load-on-demand technique if you do anything that forces the grid to load all of the rows, such as filtering or summaries. Sorting will do it, by default, but you can set up the grid to sort externally and avoid this problem.

    My advice to you would be to prototype what you want to do first and try it out. Create a DataSet/DataTable in code and bind it to the grid and see how it works. Sometimes, there's just no better way to know.

    If you have any more specific questions, let me know and I will try to answer them.