Sochi was chosen because of massive corruption in the IOC. Nothing more, nothing less.
The Olympics before that (2006) was still reeling from the corruption which had been publicized so it was informally decided that it was Europe's turn. Turin, Italy beat the only other bidder (Sion, Switzerland) that year.
The low-key 2006 affair was in response to the 2002 award to Salt Lake City when it was reveled that bribery and free stuff went into the 1998 award to Nagano, Japan which had beat Salt Lake City by 4 votes in the final round. The IOC has hoped to keep their way of doing business off the radar screen by awarding Salt Lake City the 2002 edition by an overwhelming 54-14 vote over its nearest competitor in the first round.
The sheer margin of that vote aroused suspicions. The Nagano bid team and the Salt Lake City bid team compared notes and both decided to go public. But that was then and this is now, so the IOC has gone back to business as usual.
Correct, Russia spread $ around. The IOC makes a Haitian election look democratic.