In-Database:就像这个名称所暗示的那样,SAS好比一个插头,插在Teradata这样高性能的database上,并利用其多节点多线程的优势,将数据分散到各个节点,然后上面进行计算。SAS的程序如何在数据库中运行的呢?其实就是以UDF(User Defined Function)的机制进行运算的,类似使用sql server是,用户可以通过C#之类的语言写一个自定义函数的dll,并注册到数据库中,这样就可以像使用系统函数一样使用它了。SAS就是将SAS的Language转换成C语言包,并注册到数据库中供用户使用。但这里有两个很明显的缺点:
UDF存在于用户的数据库中,大数据的计算下,会占有数据库的资源,从而影响数据库日常的管理维护。
SAS Language到C程序包的转换依赖于各种数据库的底层接口,不同的数据库各不相同,而且同一数据库也存在版本之间的差异,这些都将SAS置于一个十分被动的地位,即使再好的合作伙伴也难免有翻脸的时候,虽然说没有永远的敌人,只有永远的利益,你还是有变成敌人的危险的。