Presentation is loading. Please wait.

Presentation is loading. Please wait.

Concrete Architecture of PostgreSQL. Overview – Derivation Process – Conceptual Architecture Revisited – High Level Conceptual Dependencies – High Level.

Similar presentations


Presentation on theme: "Concrete Architecture of PostgreSQL. Overview – Derivation Process – Conceptual Architecture Revisited – High Level Conceptual Dependencies – High Level."— Presentation transcript:

1 Concrete Architecture of PostgreSQL

2 Overview – Derivation Process – Conceptual Architecture Revisited – High Level Conceptual Dependencies – High Level Observed Dependencies (Concrete Architecture) Expose high level unexpected inter-dependencies – Utilities Intradependencies Interdependencies – Final Arcihtecture Style & Conceptual Modification – Use Case Revisted – Concurrency & Team Issues – Limitations – Lessons Learned – Conclusion

3 Derivation Process – Map components to our proposed conceptual architecture With aid of OpenGrok online source code browser, Software Landscape Editor, online PostgreSQL Manual, and source code decomposition – Analysis of dependencies for the now-grouped components, making note of missing & unexpected dependencies – Investigate gaps between conceptual dependencies & extracted concrete dependencies (Reflextion Analysis)

4 Propose Conceptual subsystems Dependencies between SubSystems Mapping source entities to subsystems Extracted source dependencies Conceptual Architecture Concrete Architecture Compare Gaps Investigate Reflexion Analysis - Conceptual Figure 1

5 Conceptual Architecture Revisited - Layered Legend Expected Dependency Figure 2

6 Expected Subsystem Interdependencies Expected Subsystem Interdependency Legend Figure 3

7 Propose Conceptual subsystems Dependencies between SubSystems Mapping source entities to subsystems Extracted source dependencies Conceptual Architecture Concrete Architecture Compare Gaps Investigate Reflexion Analysis - Concrete Figure 4

8 Unexpected Subsystem Interdependencies Expected Subsystem Interdependency Legend Unexpected Subsystem Interdependency Figure 5

9 Legend Expected Dependency Unexpected Dependency Figure 6 Unexpected Subsystem Interdependencies

10 pl test tutorial include tools snowball tsearch regex port foreign bin Miscellaneous

11 Query Processor Process Manager Client Communication Storage Manager Catalog GeneralUtils Nodes/List Access Utility Inter-Subsystem Dependencies Unexpected Dependencies All External Subsystems Depend on Expected Dependency Query Processor dependency Process Manager Client Comm. Dependency Storage Manager Utility Component Subsystems Figure 7

12 Catalog GeneralUtils Nodes/List Access Utility Intra-Subsystem Dependencies Unexpected Dependencies Utility component Figure 8

13 Backend Utilities Time zone Library Numeric.c Unexpected Dependencies Utility component General Utilities Intra-Subsystem Dependency Figure 9

14 Propose Conceptual subsystems Dependencies between SubSystems Mapping source entities to subsystems Extracted source dependencies Conceptual Architecture Concrete Architecture Compare Gaps Investigate Reflexion Analysis – Investigate Gaps Figure 10

15 Architecture Style Revisited Initially: Layered– Each layer only talks to the layer above or below Maybe: Minimally layered ? - too much coupling Now: Object Oriented – Function calls within and across various subsystems

16 High Level Conceptual Remodeling – Object Oriented Figure 11 New Expected Dependencies Subsystem

17 Client Library Interfac e Server Parser Stage Rewrite r Planner/ Optimizer Executo r Storage Manage r Storage Manage r Request to Log in Request to Log in Server and communi- cation channel created Logged in Query Sent Query Sent Query Sent Query Sent Executed Query Returned Executed Query Returned Executed Query Returned Catalog General Utilities General Utilities Nodes Server Requested Grammar rules and actions looked up Grammar rules and actions retrieved Copy node tree function called Node tree returned Tree manipulation function called Manipulated tree returned Tree comparison function called Tree manipulation function called Manipulated tree returned Parsed Tree Modified Tree Most Efficient Tree sent Access & Modify Tree Semantics lookup Semantics retrieved Comparison results returned Format type function called SQL format language returned Data Sent back Current execution state of the query Executed Query Returned Legend: Components Data Flow Function Call Duration of running component User Figure 12

18 Concurrency &Team Issues Team Issues -CommitFests -Review and commit patches if up to par -If not committed, feedback given and changes made Concurrency – MVCC snapmgr.c (Utils - time) – Snapshot of data proc.c (Storage – Lock Manager) – Frees lock associated with current transaction

19 Limitations – Software Landscape Editor, although powerful, was primitive – hard to use – Determining how to map source files in accordance with our conceptual architecture – Lack of documentation on important code fragments – Was difficult to conslidate utilities into one shared component, as utilities were scattered throughout the various levels of the system

20 Lessons Learned – Best way to understand High Level dependencies is to understand their origins on the lower levels – Importance of clear and efficient commenting – Group effort needed at every stage – Divide and Conquer proved to be much more difficult given the nature of the contain files and Lsedit – Working in pairs of 2 at a time per task proved to be most effective

21 Conclusions – All components were much more intertwined than originally suspected – Importance of reflexion analysis – We now believe the architecture to be Object-Orientated


Download ppt "Concrete Architecture of PostgreSQL. Overview – Derivation Process – Conceptual Architecture Revisited – High Level Conceptual Dependencies – High Level."

Similar presentations


Ads by Google