A schema is the heart of any hierarchical database such as Novell Directory Services (NDS). The schema is essentially a list of classes, attributes, and syntaxes used to instantiate objects in a database tree. NDS is also a distributed database. Because the data is spread across many servers, each server must have an identical copy of the schema.
If the schema on one server is different than another server, then all kinds of elusive bugs emerge. In the past, Novell technical support has spent many wasted hours tracking down schema problems. Comparing schemas is easy, like comparing two dictionaries. Unfortunately, it's also laborious and boring (again, like comparing two dictionaries). The comparison is time-consuming and error-prone.
Although the algorithm is the same in C++ and DemeterJava, the C++ solution
took 4 man-weeks and DemeterJava 2.5 man-weeks. In addition, Java
gives us cross-platform independence and DemeterJava gives us re-usability
for non-Novell schema comparisons. The application takes two reference
files (schemas listings) and compares them for unique classes and attributes,
and modified classes and attributes. Using a batch file, the customer
could (several have already) compare every server in their database.
The 5-hour manual process has been replaced by a 2-minute automation.
Phase 2
Compared classes, and printed out the unique classes of each schema.
(Nathan Jensen)
Phase 3
Compared class definitions of the non-unique classes, and printed out
definition differences. (Nathan Jensen)
Phase 4
Compared attributes & syntaxes, and printed out the unique attributes
and syntaxes of each schema. (Scott Danielson)
Phase 5
Combined Phase 3 and Phase 4 (Nathan Jensen & Scott Danielson)
Phase 6
Read a schema live from the server. Read a list of servers in
a list file (.lst) and recursively compared each one.
Two weeks of public beta testing on the web. One customer complained
(correctly so) about some incorrect error messages. The customer
should have gotten the messages, but the messages didn't correctly explain
the problem or how to fix it. Re-released it. No complaints.