These questions are designed to introduce you to the notations, question styles, and topics that will be tested on the final. The percentage proportions associated with each topic will be the percentages allocated to the questions on the final.
The final exam will consist of questions only on these topics. Most questions will be in a style very similar to these but they will typically focus on specific details or present an instance of this topic and ask you to analyze it. There may also be one or two questions of an entirely different style, to test your ability to respond to a new situation.
I will not be providing answers to these review questions, so please do not ask for answers. You are encouraged to discuss your answers to this review with as many other students in the class as you wish.
What do the letters CAP stand for?
What is the main limitation highlighted by this principle? Express it in a sentence.
What trade-off have databases historically emphasized?
What is the new trade-off chosen by cloud-based systems?
What is the trade-off chosen by the designers of F1?
Given the following diagram, draw the line separating the two regions separated by the CAP Principle. Note: The axes are oriented differently from their counterparts in the “Distributed Algorithms for NoSQL Databases” diagram.
What is the difference between eventual (weak) consistency and strong consistency?
Is the Tea Emporium 3 (the final project) system partition-tolerant? If yes, how does it successfully respond to a partition? If no, how does it fail when partition occurs?
Using the N, R, W notation from the lectures, characterize My Little Image Sharer.
Imagine that we wanted to make Tea Emporium 3 (the final project) more partition-tolerant. How would the notion of primary instance for an entity have to be revised?
How do vector clocks work? When are they useful?
Give an example of a series of calls to the Tea Emporium 3 (final project) system that produce an eventually consistent result. Your answer should consist of a sequence of GET and PUT calls, with the results of the GETs:
Call | Arguments | EC read? | Response (if a GET) |
---|---|---|---|
PUT | foo-tea, 4, {'c1':120} | NA | NA |
GET | foo-tea | Yes | [A number] |
Explain how your sequence demonstrates eventual consistency.