跳至正文

【Tableau Server 101】多租户及其最佳实践

Tableau Server101 系列,旨在全面介绍 Tableau 服务器相关的内容,包括架构、许可证、多租户、部署等企业关注的核心内容。更多内容,可以访问如下的文章合辑:Tableau Server 101 :从这里了解敏捷数仓/BI平台

多租户(multitenancy)是区分应用软件复杂程度的标志之一,指的是单套软件实例能否支持多个用户组(user group)。当然,这里的“用户组”常常指不同特征的、抽象的企业主体。比如Linux环境支持多个用户登陆使用是多租户,Window 7就不是(这一特征常常用于SaaS云服务中,确保一套环境多人使用);Tableau Server可以创建多个站点(site)实现公司的区别管理是多租户,很多国产BI不支持就不是。

多租户技术上是评价BI平台能力的一个关键指标,它用技术架构上的复杂性,换取了很多显而易见的好处:

  • 数据隔离:每个站点都有自己的数据源、工作簿和仪表板。
  • 安全性:站点可以独立锁定,确保隐私和访问控制。
  • 资源效率:共享基础设施减少了开销,优化了资源利用率 。

当然,多租户有时候可以和其他特征进一步结合,形成更加复杂的企业架构,比较典型的是财务的集团架构。高级的财务软件既能支持分子公司的核算,又能在集团层面合并报表,这是多租户和特殊结构的结合。

一、Tableau Server的多租户:站点

说到Tableau Server,在 Tableau20周年:大事记与发展史 中,喜乐君讲到从2012年7.0版本开始,Tableau Server支持多租户,从而为企业提供了更高级的支持。

我们使用站点site来表示用户、组以及与任何其他组隔离的内容(工作簿、数据源)及相同 Tableau Server 实例上的内容的集合。另一种说法就是,Tableau Server 允许服务器管理员为多个用户和内容集在服务器上创建站点,从而支持多租户

In Tableau-speak, we use site to mean a collection of users, groups, and content (workbooks, data sources) that’s walled off from any other groups and content on the same instance of Tableau Server. Another way to say this is that Tableau Server supports multi-tenancy by allowing server administrators to create sites on the server for multiple sets of users and content.

Tableau Help

默认情况下,整个server的用户、内容被视为一个默认的站点(default),服务器管理员可以在设置中轻松创建新站点(site)。之后就可以在登陆账户时,或在登录之后切换。如下所示。

图:增加站点与站点切换

理论上,不同站点下的内容完全隔离(不管是用户、内容资产还是站点设置),对于用户而言,几乎可以视为是完全不同的服务器环境。因此可以作为测试或开发使用,代替单独部署服务器环境的麻烦。这也是喜乐君给中小型企业推荐的站点用途之一。

当然,用户虽然是相互隔离的,但可以共用账号、分别设置。比如用户xilejun在默认站点下赋予“Creator-站点管理员”站点角色,而在另一个站点下可以仅仅赋予“Explorer-不可发布”角色。如果再结合项目和内容权限,就可能实现非常多的设置组合。

图:用户在不同站点的角色设置(暂省略)

相比用户可以共享,数据资产则完全独立。假设数据库管理员在“测试站点”下完成了连接和数据测试后,想把一个数据关系模型迁移到默认站点,唯一的方法就是重新发布一遍——从“测试站点”复制、移动或任何方法都不行。这和发布到另一个全新的环境中别无二致。

二、站点的使用场景

考虑到站点的隔离特征,在业务实践中常常被用在如下的业务场景中:

1)实现多个公司之间的数据资产物理隔离

集团企业下有不同的业务板块,那么就可以参考公司业务设置多个站点。默认站点则可以用于集团各部门(当然这里的默认站点也无法从其他站点获得数据)。

比如航空集团下属多家航空公司,或者城投集团下属不同业务板块,都可以考虑此类情况。

2)实现关键部门(如财务、审计)相对于其他内容的物理隔离

有时候,一些特别部门、特别业务也会追求数据资产的完全独立,这常常与数据安全紧密相关。比如公司的财务、人事部门常常由于其业务的保密性而追求“独立王国”,此时站点也是可供考虑的选择之一。

但是!

除非安全性要求以至于不需要和其他部门交互,否则喜乐君并不推荐用站点隔离数据资产。因为分开容易、合并尤难。

比如说,航空集团下属四家航司,分为四个站点分别发布其数据源、仪表板,这样可以满足不同航司领导独自的访问需求。但是,集团公司领导就无法从四个站点合并查看集团航空业务的运行情况。唯一的方式只能是在默认站点下,发一个同时包含四家航司数据的完整数据源,然后重新发布仪表板。此时,每家航司的数据就被重复发布过两次,占用了更多的存储空间,还降低了使用效率。

同样的情况,也常常发生在人力数据下。

其实,涉及到相同数据源、兼顾合并和独立查看需求的业务场景,更推荐的方式是单一站点,将权限控制在数据库层面或访问层面控制。这就是数据管理(data management add-on)下的虚拟连接、权限策略,以及行级别权限(RLS)等功能擅长的领域。

3)替代单独的实例,充当测试环境使用

考虑到站点的隔离特征,就可以使用单独的站点充当测试服务器、开发服务器的角色,从而减少部署成本。相比前面的两个用法,这也是最普遍的使用场景。

除了上述的需求,就不建议使用站点。不恰当的使用会导致数据隔离,影响数据完整性。

@XILEJUN
Feb 8, 2024