You've no need to change the storage behavior then. You're not dealing with storage at all. You'd be using a CB Code Field and PHP. So all you need to do is json decode the fieldgroups and processing their JSON data into whatever format you need. Example as follows.
Code:
$fieldGroupData = json_decode( '[FIELD_NAME]', true ) ;
In the above $fieldGroupData will just be arrays of data. Example as follows.
Code:
array(
0 => array( 'FIELD_NAME_survey' => 'test_1', 'FIELD_NAME_gat' => '123' ),
1 => array( 'FIELD_NAME_survey' => 'test_2', 'FIELD_NAME_gat' => '456' ),
2 => array( 'FIELD_NAME_survey' => 'test_3', 'FIELD_NAME_gat' => '789' )
)
Each sub array is a row so with my above example there's 3 rows. Each row contains its fields prefixed by the field group fields name instead of cb_. So you'd have for example cb_references_survey for cb_survey.