- Architectural Principals
- Data Management
- Database Management
- Data Interaction
- Other Design Issues
- Conclusions
- References
Database Management
If your application stores data in a database, you must choose a database paradigm. (If you are using files, persistent memory, or groupware, you can skip this step.)
Contemporary Database Paradigms
Most new applications use a relational database. Multidimensional databases are also important for some data warehouse applications.
-
Relational databases. A relational DBMS presents data in the form of tables. Commercial products include Oracle, DB2, and SQL Server. Microsoft Access is also suitable for small databases. Relational databases are the dominant paradigm for new applications, and have been used for most applications developed within the past decade. Because the core features of relational databases have been standardized, you should choose a vendor according to throughput, market share, and price. Figure 6 characterizes the kinds of applications that should use a relational database.
-
Multidimensional databases. Multidimensional databases are organized about facts that relate to dimensions. A fact measures the performance of a business. Sample facts include sales, budget, profit, and inventory. A dimension specifies one of the bases for facts. Sample dimensions include date, product, customer, salesperson, and store.
-
Multidimensional databases run faster than relational databases for some data warehouses. However, there are no multidimensional database standards, and the products lack a theoretical basis. Because of their underlying design, multidimensional databases don't scale up to large volumes of data.
Figure 6 Relational database applications. Most modern data-intensive applications use relational databases.
New Database Paradigms
Object-oriented and object-relational databases are new paradigms that can be significant for specialty applications.
-
Object-oriented databases. Object-oriented databases are loosely based on concepts embodied in object-oriented programming languages. The primary advantage of object-oriented databases is that they integrate cleanly with programming languages, unlike relational databases. Unfortunately, object-oriented databases lose some relational databases strengths such as a theoretical foundation and mature standards.
-
Object-oriented databases are fading in the marketplace [3], so you should only use them for compelling situations in which they clearly surpass relational databases. For example, some engineering and multimedia applications can benefit from an object-oriented database.
-
Object-relational databases. The relational database vendors have noted the popularity of object-oriented technology, and are adding object-oriented features to their products. For example, Oracle 8 supports abstract data types, object views, object tables, and references. Some of the added features (abstract data types) are worthwhile; use them carefully. Others are technically unsound (references), and mar otherwise solid products.
Obsolete Database Paradigms
-
Hierarchical databases. The IBM IMS product is the most prominent example of a hierarchical database. Hierarchical databases are obsolete, and you should normally avoid them for new applications.
-
Network databases. Most network databases adhere to the CODASYL standard. (Do not confuse network databases with communications networks. These are different uses of the term network.) Network databases also are obsolete, and you should normally avoid them for new applications.
Hybrid Approaches
Sometimes, it is helpful to use multiple database paradigms within the same application. For example, an application might use a relational database as its primary data store, but use an object-oriented database for a complex subsystem. Table 1 summarizes the recommendations for the different kinds of databases. There are several possible paradigms, but normally you should just use a relational database.
Table 1 Recommendations for Database Paradigms
Database Paradigm |
Recommendation |
Relational |
The default choice. Use this for new applications, unless there is a compelling reason to use another paradigm. |
Multidimensional |
A viable option for data warehouse applications. Use when a relational database does not deliver adequate performance. |
Object-oriented |
Use for compelling situations for which a relational database is too rigid, and you need programmatic flexibility. |
Object-relational |
A mixed benefit. Use with great care. |
Hierarchical/Network |
Normally avoid these for new applications. Convert existing applications when there is a specific need. |