It can be any DataSet (possibly also a datatable). I've developed these myself, very flexible! I used Datasets returned from the QueryInfoProvider.ExecuteQuery, but you can build your own dataset and use that.
THere are also different types of data source webparts you can create, including xml and the like, but a System.Data DataSet is pretty flexible.