DBMS ConteXt |
|
IntroductionAnother approach appeared about 10 years ago, when object-oriented programming languages came into fashion. Object-oriented databases allow programmers to define any needed data types. They store objects and methods rather than records and fields. They make life much easier for the application programmers since no intermediate data manipulation language is necessary. From the other hand, object-oriented databases themselves are even more difficult to work with for the end users that pay the money after all. To make them happy, application programmers have to work even harder on the user interface. Consequently, the development time increases. |
FeaturesSee also: Architecture of DBMS ConteXt Application developers know that enterprise databases tend to include a significant amount of overlapping data. A typical relational solution of this problem would involve yet another table creation, together with primary key and corresponding indexing mechanism, so that other tables could refer to that data using secondary keys. In ConteXt, a decision has been made to implement a reference (POINTER) data type instead. A reference field contains a record number from another file (table). That renders unnecessary both key creation and potentially time-consuming search in order to get the related info from the sub-table. This is achieved because the reference data points exactly where the data we are looking for are located. Sub-table does not even "know" about those references. The only integrity constraint is that deleting records from a sub-table can ruin somebody's references. This is similar to pointers in C programming language. ConteXt references are one-way pointers, so it is easy to develop complex evolutionary tables bottom up. Obviously, database hierarchy is relative in a sense that each table can contain references to itself, down and up all the way to the top table. Another ConteXt idea, complex fields or structures, has been borrowed from C as well. Typically, most information stored in a database is inherently hierarchical. For example, a business day of a convenience store consists of three shifts, and each shift has its own data on income, expenditures and taxes. Taxes, for Canada, consists of GST and PST etc. In ConteXt, this kind of hierarchical structure is built in the field itself - no multiple tables needed. Users does not need to know about that, but for the application programmer this data model can be much easier to work with. Since data are stored in the database directly in their binary representation, application software gets all it needs in a complete and easy to digest form right after reading the upper level structure. This may be not an object in a classical sense of the word, but something very much similar. With time, ConteXt evolved to include non-static references and fields. Non-static reference (VARIANT) can point from different records to different tables, whereas non-static field (COMPLEX) structure can depend on other fields values. Non-static fields can be completely controlled by the application developer, quite in object-oriented style. This makes some people say that ConteXt is an object-oriented database, although others objects that it is not - depending on how strict their definition of object-oriented database is. Strictly speaking, ConteXt has elements of hierarchical, network and relational data model, but differs from either of them. Apparently, it is object-oriented after all.
|
ImplementationDBMS ConteXt front page: DBMS ConteXt |