Object Oriented Databases: The Relational Solution
The Relational Solution: Relational database theory promised to end the problem of moving data by eliminating physical dependence. Instead, logical “keys” maintain relationships between objects, completely independent of physical location. Furthermore, to keep the size of each object (row) more static, objects that have a relationship to many other objects do not keep a list of those keys; instead each referenced object will keep the key of its referencer as described earlier in the “Customer” and “Order” relationship.
The indirect primary and foreign key strategy won’t be as fast as a direct physical pointer to the location of the orders, but by putting all the customer IDs in an index so that one can perform a binary search, the performance will not suffer much compared to the benefit of physical independence.
This is a good general solution, but it does present a trade-off of convenience against performance and scalability. As described previously, indexes and “joins” are not free. In general, the biggest problem is that the indexes become too large to manage and too slow to update as the amount of data and users grows.
As the numbers of rows in the tables (e.g. orders and customers) grow, it takes longer to look up the orders for a particular customer because the index is getting bigger. As the indexes get larger, they have trouble fitting into memory. The database ends up consuming large amounts of memory to keep performance reasonable.
