Advantages
- Getting the relationships in SQL Azure would be faster than getting the relationships from table storage
Disadvantages
- As @Ic. stated; you have no easy way of maintaining referential integrity
- Slow performance due to having to pull the relations into memory from SQL Azure; then enumerate through them to get the correct table storage entries
- Table storage itself is dramatically slower than SQL Azure (See this question)
- There is still a cost to maintaining an SQL Azure database; even if it is a small one
I have heard of users using Azure Table Storage to store relationships as well; for example:
- Table1: Users (PartitionKey:
UserID
) - Table2: Books (PartitionKey:
BookID
) - Table3: UserBooks (ParititonKey:
UserID
, RowKey:BookID
) - Table4: BooksUsers (PartitionKey:
BookID
, RowKey:UserID
)
UserBooks
and BookUsers
act like an explicitly defined index; and would allow you to perform faster searches as the PartitionKey and RowKey are the fields you will be using for the association.
However the clear disadvantage is having to maintain 2 extra tables alongside your data.
Really it boils down to whether the performance drop (And it will be a severe drop) from using Table Storage instead of SQL Azure is worth the costs saved.