A global gaming company stores player profiles in Azure Cosmos DB. Each profile document contains PlayerID (unique), PlayerName, Email, and a nested array of Achievements. The most common query is to look up a player by PlayerID and retrieve their achievements. The company needs strong consistency for reads and writes to ensure that when a player earns an achievement, it is immediately visible. Which partition key and consistency level should they choose?
PlayerID is an ideal partition key because it matches the application's point-lookup pattern: every read and write for a player can be routed to a single physical partition, avoiding cross-partition queries. Strong consistency in Azure Cosmos DB ensures that a write is acknowledged only after it is durably committed, and every subsequent read that uses the same partition key returns that committed value. This directly satisfies the requirement that profile updates be immediately and reliably visible. Note that strong consistency is supported only with single-region writes, which is an appropriate choice for this workload.
Why this answer
PlayerID is the natural partition key for the most common query (lookup by PlayerID), ensuring efficient single-partition queries. Strong consistency is required to guarantee that when a player earns an achievement, the write is immediately visible to all subsequent reads, which is critical for the gaming scenario.
Exam trap
The trap here is that candidates may confuse 'most common query' with 'partition key' and pick a non-query column (like Achievements or Email) or choose a weaker consistency level, not realizing that Strong consistency is required for immediate visibility and that PlayerID is the optimal partition key for the lookup pattern.
How to eliminate wrong answers
Option A is wrong because Eventual consistency does not guarantee immediate visibility of writes, which violates the requirement that achievements are immediately visible after earning. Option C is wrong because Achievements is a nested array, not a top-level property, and using it as a partition key would cause inefficient cross-partition queries and potential hot partitions. Option D is wrong because Email is not the primary query key (PlayerID is), and Bounded staleness, while stronger than Eventual, still allows a configurable lag, which does not meet the strict 'immediately visible' requirement.