Hi Hong,
It depends on your use case. If you are simply trying to sync IDs of your campaigns, ad groups, ads, etc. to your local database, then you can just use reports. If instead you need every attribute of every object within all of your campaigns, then reports alone won't help. However, you may still be able to use reports to get the set of IDs you want to process later using the API, e.g.,
2. Use
CampaignService.get to batch together requests for sets of campaign IDs into manageable request and response sizes.
Another option is to use
CustomerSyncService to detect which campaigns, ad groups, feeds or criteria changed since your last full sync, and only fetch the details of those objects through the API.
Cheers,
Josh, AdWords API Team