Gsoc08-querybuilder-Internals

来自 PostgreSQL Wiki
跳转到导航跳转到搜索

pgAdmin 内部图形化查询构建器

以下文档是对 2008 年 Google 代码夏季活动 (GSoC) 中为 pgAdmin 开发的图形化查询构建器改进的技术解释。

主要思路

图形化查询构建器背后的主要思路是创建 SQL 语句,这些语句可以作为我们实际语句的基础,甚至可以成为我们实际语句,并且应该以比手动创建语句更快的速度完成。但是,从屏幕上绘制的图形创建 SQL 语句是一个挑战,可以用多种方式解决,其中一些非常容易实现但缺乏灵活性,而另一些则为 GQB 的方程式增加了不必要的复杂性。但我们也应该注意其他限制,例如可移植性、可用性和易于维护。

因此,从一开始,主要思路就是利用我之前项目的经验教训来创建 GQB 的初始设计,但始终要注意 pgAdmin 项目的开发风格,并且尽可能地重用源代码。这使我想到了源代码应该以允许第三方维护并且易于理解的方式编写,同时共享一种简单的通用语言来描述软件结构,因此使用软件模式来构建 GQB 的重要部分,例如迭代器和模型视图控制器 (MVC),两者都在开发阶段使用,但在下一节中将详细解释。

每周开发工作

第 1 周

开发刚刚开始,还有很多事情要做,但 GQB 的基础应该确定下来,这一步让我创建了 GQB 的开发标准。

  • 所有头文件应该创建在文件夹 pgadmin\include\gqb 中。
  • 头文件的实现应该创建在文件夹 pgadmin\gqb 中。
  • 所有文件应该使用前缀 gqb。
  • 初始界面非常简单,由以下部分组成:
    • 树,用户可以在其中显示/存储可用于查询的所有对象(例如表、视图)。
    • 画布区域,用户可以在其中使用树中的对象绘制他们的查询。



本周为 GQB 的实现创建了以下对象:

  • 用于存储从数据库反向工程的对象的基本对象
    • gqbObject
    • gqbDatabase
    • gqbSchema
    • gqbTable
    • gqbColumn
  • 用于存储对象集合的基本对象
    • gqbCollectionBase (接口)
    • gqbIteratorBase (接口)
    • gqbCollection
    • gqbArrayCollection
    • gqbArrayIterator
    • gqbQueryObjs
    • gqbQueryObject
  • 模型视图控制器
    • gqbController
    • gqbView
    • gqbModel
  • 用户界面
    • gqbBrowser

[类部分中对象的解释]

工作原理

The

推荐书籍

  • Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra, Head First 设计模式,O’Reilly,2004
  • Jack Greenfield, Keith Short, Steve Cook 和 Stuart Kent。软件工厂。Wiley 出版公司,2004 年。
  • 对象管理组。模型驱动架构指南,2003 年。(http://www.omg.org/mda)
  • Gamma, E.,Helm, R.,Johnson, R.,Vlissides, J. 设计模式。Addison-Wesley,2003 年。
  • Craig Larman。UML 和模式。Prentice-Hall,第 2 版,2003 年
  • W. H. Brown 等人,反模式,John Wiley & Sons,1998 年
  • M. Fowler。重构:改善既有代码的设计,Addison-Wesley,1999 年
  • M. Fowler。分析模式,Addison-Wesley,1996 年
  • M. Fowler。企业应用架构,https://martinfowler.com.cn
  • F. Buschmann 等人。面向模式的软件架构。模式系统。John Wiley and Sons,1996 年。

其他资源

参考文献