Michael's Research for Berkeley DB
Amazon
Berkeley DB is a well-known database management service provider. It is developed by
Sleepycat Software and it has been quite successful.
Berkeley DB contains implementations
in a wide variety of platforms, including C, C++, and Java.
In a class I took we
were assigned the task of writing a GTM, or global transaction manager, so that
the system can do distributed database management in the presence of failures.
Every distributed database is associated with an LTM, or local transaction
manager, to manage the local database. Anyone working in the database field
knows that getting a database management system (DBMS) to work correctly
without
having to consider failures is extremely simple.
Taking into account the
possibility of failures, however, makes the system ultra extremely (am trying
to think of a word even more intense than extremely...) difficult to build. The
point is that every distributed database must agree upon an action for an
unresolved transaction; it either aborts or commits. A GTM or LTM could fail at
any point in time (could get down to instruction-level failure).
In building
the system we need to consider every possible failure, or as many of them as
possible. Very often switching two lines of code yields totally different
results.
With many years of experience in programming and attention to fine
detail, we were able to build a successful system. We also wrote sample
applications that could communicate interactively with the LTMs, which was used
to test the failure-handling aspect of our system.
The following is a diagram describing the model of our system and the message
types: