SAS存储过程服务器与工作空间服务器



SAS有一个运行存储进程的存储进程服务器和一个运行SAS代码的工作区服务器。但是存储的进程只不过是SAS代码语句的组合,那么为什么工作区服务器不能运行SAS代码呢?

我试图理解为什么SAS开发人员提出了仅用于存储进程的独立服务器的概念。

存储进程服务器在运行之间重复使用SAS进程。它是一个无状态服务器,用于运行预先编写的小型程序并返回结果。服务器维护一个进程池,并将请求分配给该池。这最大限度地减少了运行作业的时间,因为没有启动/关闭进程开销。

工作区服务器是为1个用户启动的SAS进程。每个用户连接都会在服务器上获得一个新的SAS进程。该服务器旨在运行更多的交互式进程,其中用户运行一些东西,查看输出,然后运行其他东西。代码不必预先编写并存储在服务器上。在这种情况下,启动时间不是一个限制因素。

此外,工作空间服务器可以提供对服务器的额外访问。程序员可以使用该服务器访问SAS数据集(通过.NET中的ADO或Java中的JDBC)以及服务器上的文件。

因此有两个用例,这些服务器解决了它们。

从开发人员的角度来看,两个最大的区别是:

  1. 身份存储进程服务器在SAS General Servers组中配置的系统帐户(&sysuserid)下运行,默认情况下为sassrv。这将影响操作系统级别的权限(例如数据库访问)。工作区会话始终在客户端帐户(已登录用户)凭据下运行
  2. 会话存储过程服务器上提供了通过使会话保持活动一段时间(并使用会话id再次访问同一会话)来保持"状态"的选项,但是-请不惜一切代价避免这种模式!原因是,这个会话将占用您的一个多桥端口,并破坏负载平衡。这也是一个糟糕的设计选择

存储的进程和工作区服务器都可以配置为提供池会话(保持活动状态以便重复使用的通用会话,避免频繁请求的启动成本)。

为了进一步解决您的问题,存储过程是一个元数据对象,它指向(或也可以包含)原始sas代码。存储进程可以在任何一种类型(存储进程或工作区)的服务器上运行。其选择将取决于您的上述功能需求,以及根据池和负载平衡配置的性能考虑因素。

最新更新