You are not allowed to discuss the questions with anyone!
1. Transactional Queues:
a) There are three transactions used in the basic transactional queue
protocol. For each one, explain the problems that it prevents.
b) Explain the minimum requirements to acheive "exactly once" delivery
of a message. Don't say "use transactional queues". Instead
argue what you need to provide "at least once", and then "at most once",
and then both. You must handle network, client, and server failures.
c) How can you guarantee in-order execution of items in a transactional
queue? Is it enough to start them in order? If not, explain
what else you need to do.
2. Locks
a) What is wrong with releasing a lock held by a dead process?
b) What should be done with such locks?
c) Under what circumstances can you switch to lock-free synchronization
(i.e. atomic memory operations) to avoid this problem?
3. Logs: LFS and Aries
a) At any given moment, what disk-resident information constitutes
the "master copy" of all data in LFS? In Aries? Be sure to
include any disk-resident metadata that helps you identify the real data.
b) Describe differences in disk traffic in LFS and the Aries log.
c) Describe how to reclaim space in LFS and in an Aries log.
4. Most RPC systems do not correctly support true "pass-by-reference".
a) What problem must be overcome to ensure correct behavior?
Give an example of this problem.
b) Describe a scheme to overcome this problem.
5. Concurrency and Isolation
a) Degree 2 consistency -- as defined by Gray in the paper we read
-- is a popular usage mode in modern database systems. Why is this
so?
b) Can degree 2 consistency be achieved easily in a system implemented
with Optimistic Concurrency Control? If so, what minor modifications
to O.C.C. would need to be made? If not, why not? [Hint: In
either case, you should be able to prove your point with example transaction
schedule.]
6. Filesystems and Databases
Oracle is busy designing a network file system that is implemented
on top of Oracle's Relational Database Management System. Your task
is to be Oracular, and design such a file system.
a) Describe the relational tables and any indexes you need to build
to capture the data and metadata in a file system.
b) Describe how an arbitrary existing directory (including pathname)
is listed ('ls') in your scheme. You needn't use SQL or relational
algebra, but informally describe the operations used to do this, clearly
delineating all the I/Os required.
c) Contrast your answer to (b) with what happens in FFS, and discuss
the performance implications of the contrast.
d) Describe how to correctly implement FFS 'rename' in your Oracle
file system; be sure to give all the relevant Oracle details.
e) Other than ACID features, what is a main benefit of using
an RDBMS for the filesystem? Give 2 examples of that benefit.