Popis: |
This thesis proposes a reusable architecture for extensible query optimization. A query optimization system is physically divided into three major components. The framework is designed to span across these components, where each contributes to a single purpose in the system. Design patterns and object-oriented techniques are used to de-couple these components and improve the flexibility within each component. This thesis also makes a clear separation of the search strategy and the search tree. This separation conforms to a design convention, that is, to separate interface from implementation. We believe this separation promotes the reusability of the system and is good for clarity. Also, we define a search strategy interface that allows different search strategies to be easily installed and be used interchangeably. Switching from one search strategy to another only requires modification of two lines of code within the same component. The design is further verified in light of implementation in C++. Moreover, we believe the documentation of a framework is as important as its design. |