Jay's suggestion of using a concatenated key to represent a composite key is probably the easiest and quickest route to go down if you need to get this done quickly.
Where the colon delimits the two keys to form a composite key. The other alternative would be to implement a getId method on the Ext.data.Record object and instead of accessing .id directly throughout our internal framework code to access the getId method.
The other hurdle that would need to be jumped over would be adding functionality to the readers to be able to interpret composite keys and to know where to retrieve the individual keys from within the data that is loaded. Currently we do this through idProperty which can point to a simple value:
This could be something like:
All and all I'd say this would be a lot of work to get the functionality that you are looking for. I'd suggest going the route of concatenating the keys into a single composite value on the server-side and then use the reader to split the value into the appropriate fields.