@alzaimar has a point, millions of records loaded into memory on a 32bit platform is going to be a challenge whatever the dataset component you use.
So memory on the box is crucial.
We do similar things with applications written in Delphi 2006. What we do is run them on Windows7 64 bit or server 2008 64 bit.
Taking advantage of the additional memory for the OS and other applications.
Try The best memory manager for Delphi
Also put {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} in the Source of yur project to get up to 4GB out of 32bit delphi on a 64bit box.
program Project15;
uses
Forms,
Unit15 in 'Unit15.pas' {Form15};
{$R *.res}
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
Application.Initialize;
Application.CreateForm(TForm15, Form15);
Application.Run;
end.
Doing the above will let you see which is best for your application TDataSet or TClientDatset.
You might also consider using some third party data connection components that have improved performance and memory management over the basic Delphi data objects.
We use Devart components and SQL tools and they really are worth the money. Devart Data tools website