SQL反模式:避开数据库编程的陷阱
1. 引言
在完成加州大学计算机与信息科学学位后不久,我拒绝了第一份SQL相关工作。当时一位经理找到我,他有一家软件创业公司,正在开发一个可在各种UNIX平台间移植的数据库管理系统,需要我编写代码来识别和执行有限版本的SQL语言,他表示只需要支持 SELECT 语句。
那时学校没教过SQL,数据库也不像现在这样普及,像MySQL和PostgreSQL这样的开源数据库品牌还不存在。但我用shell开发过完整的应用程序,也了解一些解析器知识。我本以为解析SQL的单个语句不会太难,然而查阅相关资料后,我发现SQL与支持 if() 、 while() 等语句以及变量赋值和表达式的语言不同。仅仅支持 SELECT 语句,实际上意味着要开发一个功能齐全的关系数据库管理系统和查询引擎。最终,我拒绝了这个用shell脚本编写SQL解析器和RDBMS引擎的机会,那位经理可能没有充分认识到RDBMS的工作范围。
许多软件开发人员,即使拥有计算机科学学位,早期接触SQL的经历都和我类似。大多数人都是在项目需要时自学SQL,而不是像学习其他编程语言那样系统地学习。SQL是一种声明式编程语言,与C、Pascal等过程式编程语言以及C++、Java等面向对象编程语言不同。它以集合作为基本数据结构,而面向对象语言使用对象。这种差异让传统训练的软件开发人员望而却步,很多程序员因此转向面向对象库,避免深入学习SQL。
从1992年起,我在工作中大量使用SQL,开发过Perl和PHP的SQL编程库,为InterBase RDBMS产品提供技术
超级会员免费看
订阅专栏 解锁全文
1329

被折叠的 条评论
为什么被折叠?



