The current best practice is to create fields on the target object that reference the index fields on the source object. Index fields (up to 5) form the unique key on the Big object. This is not the same as the Id on a regular object and not necessarily dangerous.
To Query Big Objects you use standard SOQL or Async SOQL. Standard SOQL is recommended when:
You want to display the results in the UI without having the user wait for results
You want results returned immediately for manipulation within a block of Apex code.
You know that the query will return a small amount of data.
You use Async SOQL when:
You are querying against millions of records.
You want to ensure that your query completes.
You don’t need to do aggregate queries or filtering outside of the index.
There are two main ways to use Async: Filtering and coarse aggregations.