50岁SQL是一种小众技能?

这篇文章讨论了 SQL 的演变及其在当前技术领域中的作用。以下是文章的要点摘要:

2000 年代初,开发人员需要熟悉一系列技术,包括用于数据库交互的 SQL。然而,随着 IT 专业化的兴起,出现了前端工程师、测试人员、数据科学家、DevOps 工程师和 SRE 等角色,每个角色都有自己的专业技能组合。

SQL 已有半个世纪的历史,但它仍然是技术行业的一项重要技能。正如 TIOBE 指数所显示的那样,尽管各种编程语言层出不穷,但 SQL 的需求量仍然很大。

专家的崛起 随着九十年代运营的兴起,IT 行业的专业化程度也在不断提高。我们已经有了一段时间的 DBA,但 "开发 "逐渐被前端工程师、测试人员、数据科学家、DevOps 工程师,以及后来的 SRE、安全工程师......所取代。

之所以说这是一个延续,是因为这个过程从计算机出现时就开始了,从最初的物理学家和技术人员开始,他们维护和编程的机器有房间那么大,到 60 和 70 年代分化为 COBOL 和 FORTRAN 程序员,到 80 年代发展为系统管理员,然后是网络管理员,等等。

医学界也有类似的情况。从前,我们有一位 "船上的外科医生",他必须处理几乎所有你在拖着重炮迎战敌人时可能会遇到的疾病,以及(在和平时期)患有疾病的水手分享他们从岸上带来的任何疾病。几百年后的今天,我们有了专门从事耳部手术的整形外科医生(耳科医生)。

计算机工作似乎也发生了类似的情况。从前,每个在工作中与计算机打交道的人都可能需要输入(甚至编写)几个 SQL 查询,而现在有了数据科学家。现在,开发人员会参加 Scrum 会议并抱怨 JIRA(甚至不怎么写 JQL)。

年轻人可能没有学过 SQL 但他们往往精通 PromQL 和 GraphQL 等其他查询语言。这表明,与过去相比,SQL 的普遍教授或要求可能会减少。

使用关系数据库与使用 MongoDB 等 NoSQL 数据库的争论:

  • 一些开发人员更喜欢 NoSQL 数据库的灵活性,
  • 但是关系数据库和 SQL 所提供的结构对于有效管理和查询数据至关重要。

结构和数据管理: 数据库表结构也存在过于僵化的观念:

  • 人们认为结构 "难以更改",但这只有在有许多用户和代码依赖于数据库或有大量数据的情况下才会发生,而不是在最初建立系统时。
  • 更改数据库可能会很麻烦,因为不同厂商的语法各不相同,你经常需要查找是 ALTER TABLE ADD INDEX 还是 CREATE INDEX。
这其实是瀑布编程与敏捷的区别,事先规划设计好前提条件,然后跳进坑里面去,其实不假设任何前提或约束反而是更敏捷,至少不会自己束缚自己。

这种区别非常类似“#分离关注”,是在不了解问题全面情况下就能将关注分离吗?在不了解敌人有多少人的情况下,你就将自己的士兵分离成一股股小部队吗?送人头吗?

数据库结构设计是你在你认为全面了解了问题的情况下设计的,但是啪啪打脸是经常发生。

当然,结构对于控制数据和启用强大的查询是必要的。 使用 LLM(大型语言模型)来协助 SQL 查询编写,人工智能可以帮助完成数据库管理任务。

现实重点 当前,与数据相关的任务(包括编程和管理)通常被归咎于数据科学家,而不是被视为一般计算工作的组成部分。

虽然 SQL 的需求可能不那么普遍,但它仍然是数据操作和分析的一个有价值的工具。