年前读完了屯了很久的 Stonebraker 大神的文章 What Goes Around Comes Around,补一下读后感。这篇文章介绍了数据模型35年来(到今天则是53年... 半个多世纪,令人感叹)的演化历史,通过分析层次、网络、关系、ER、扩展关系、语义、面向对象、对象-关系和半结构化(XML)模型的特性和流行程度,总结数据模型取得成功的必要条件,并告诫业界许多看似全新的模型实则是重演历史,失败是它们既定的宿命。
1. 我一直以为存储过程 stored procedure 是随着SQL的诞生就流行起来的应用编写方式,直到最近业务逻辑才回归到应用层。然而事实并非如此:早期应用都是将业务逻辑置于应用层,直到1980年 Sybase 才首先倡导了将逻辑下推到存储过程的方法。厂商们发现这样做可以省掉很多RTT从而显著提升在TPC-B(TPC-C的前身)下的性能,于是这样的做法才逐渐流行。如今提倡的逻辑向应用层回归和对存储过程的批评,其实是盘旋上升的历史又回到了原点。
2. 没有人预料到JSON很快便取代XML成为了数据交换的事实标准,并使半结构化模型空前地流行,开启了长达数十年的NoSQL运动。早期对半结构化模型优点的分析聚焦在「半结构」本身,指出现实世界中的事物(例如简历)难以用单一模式来描述,而忽视了更有力的原因,即模式很难在开发的初期就确定下来。
3. 纵观数据模型发展史,几乎可以断定:只有新模型能大幅提升性能、或支持旧模型很难模拟但又急需的特性时,后来者才有成功的可能。存储过程对性能的提升和NoSQL将可扩展性作为一大优势都能说明这点。或许在我看来十分有潜力的图模型也将挑战关系模型的统领地位,最终形成关系、NoSQL、图三足鼎立的局面。
4. Postgres 对用户自定义函数(UDF)和类型(UDT)的良好支持源于已然消亡的面向对象模型。Oracle 率先发现将一些数据挖掘算法作为 UDF 实现远比将数据来回搬迁高效,这些 in-database ML (例如之前提到过的 Teradata ML Engine)可能会给现有实现带来深刻的变革。
5. 在文章的最后,两位作者写道 Moreover, it seems to us that designing a DBMS which made code and data equal class citizens would be a very helpful. If so, then add-ons to DBMSs such as stored procedures, triggers, and alerters would become first class citizens. The OR model got part way there; maybe it is now time to finish that effort. 不过时至今日也鲜有 “finish that effort” 的成型产品,可能SQL就是这么扶不上墙吧,真是令人感叹。 #selected
1. 我一直以为存储过程 stored procedure 是随着SQL的诞生就流行起来的应用编写方式,直到最近业务逻辑才回归到应用层。然而事实并非如此:早期应用都是将业务逻辑置于应用层,直到1980年 Sybase 才首先倡导了将逻辑下推到存储过程的方法。厂商们发现这样做可以省掉很多RTT从而显著提升在TPC-B(TPC-C的前身)下的性能,于是这样的做法才逐渐流行。如今提倡的逻辑向应用层回归和对存储过程的批评,其实是盘旋上升的历史又回到了原点。
2. 没有人预料到JSON很快便取代XML成为了数据交换的事实标准,并使半结构化模型空前地流行,开启了长达数十年的NoSQL运动。早期对半结构化模型优点的分析聚焦在「半结构」本身,指出现实世界中的事物(例如简历)难以用单一模式来描述,而忽视了更有力的原因,即模式很难在开发的初期就确定下来。
3. 纵观数据模型发展史,几乎可以断定:只有新模型能大幅提升性能、或支持旧模型很难模拟但又急需的特性时,后来者才有成功的可能。存储过程对性能的提升和NoSQL将可扩展性作为一大优势都能说明这点。或许在我看来十分有潜力的图模型也将挑战关系模型的统领地位,最终形成关系、NoSQL、图三足鼎立的局面。
4. Postgres 对用户自定义函数(UDF)和类型(UDT)的良好支持源于已然消亡的面向对象模型。Oracle 率先发现将一些数据挖掘算法作为 UDF 实现远比将数据来回搬迁高效,这些 in-database ML (例如之前提到过的 Teradata ML Engine)可能会给现有实现带来深刻的变革。
5. 在文章的最后,两位作者写道 Moreover, it seems to us that designing a DBMS which made code and data equal class citizens would be a very helpful. If so, then add-ons to DBMSs such as stored procedures, triggers, and alerters would become first class citizens. The OR model got part way there; maybe it is now time to finish that effort. 不过时至今日也鲜有 “finish that effort” 的成型产品,可能SQL就是这么扶不上墙吧,真是令人感叹。 #selected