First, the solution to the database maintainence was provided by simple data storage. The data is stored like the following:
f1|f2|f3|...|f10|f11|n f1|f2|f3|...|f10|f11|n+1 ... f1|f2|f3|...|f10|f12|m |'s separate the individual fields fk - the field (k is the kth field) n - the auto primary key m - m is the greatest primary keyAll queries had to work with the data as found above, and the data could be edited in any file editor (i.e. vi, pico, etc.).
After doing some reading on databases, we decided that indexing the file was not necessary. Speed was a concern, but it was not the main concern. If speed or complexity of queries (other questions needed to be asked of the information), then a different database would need to be used (see MSTS as an example). If JOIN or other, more complex queries were needed, as would be used in a relational database, then another database would better suited. However, the implementation of this operation is possible, but I did not get around to implementing an operation such as JOIN. The purpose of this database is to facilitate small storage of information with ease of maintenance without having to have the skills necessary to use that of a common commercial database.
I have also finished working on a sequence of webpages that may be used to edit a database built on this database engine.
Future work
The current code uses Perl's regular expressions for data manipulation. However, if more speed were desired with the current system, one could extend the setup file to make the code more efficient. Also, a trade-off would be to use Perl's pack and unpack functions (as alluded in Larry Wall's Perl book, 2nd ed.), at the expense of not being able to edit the data in an editor, such as vi (as was a goal in the original development). These additions can still be made/changed without breaking the code, through the use of the modularity of the design.
Principal Developers: Harold Grossman Nathanael Paul Home