您的位置:首页 > 大数据 > 云计算

#技术分享# -- 云计算下的数据隔离

2012-12-19 08:22 288 查看
IT软件服务商所提供的传统企业软件系统大多基于Multi-Instance(多实例)架构,即对于每一个客户组织,都有一个单独的软件系统实例 为其服务;而搭建于云计算平台的软件系统则广泛采用了Multi-Tenancy(多租户)架构,即单个软件系统实例服务于多个客户组织。在Multi- Instance架构下,由于每个客户拥有自己的软件实例,所以不存在数据隔离问题,但是在Multi-Tenancy架构下,由于所有客户数据将被共同 保存在唯一一个软件系统实例内,因此需要开发额外的数据隔离机制来保证各个客户之间的数据不可见性并提供相应的灾备方案。

随着云计算技术的成熟,Multi-Tenancy不再是新鲜的概念,目前已经有几种成熟的架构来帮助系统实现数据隔 离:SharedSchemaMulti-Tenancy(下文简称为共享表架构)、SeparatedDatabase(下文简称为分离数据库架构)以 及SharedDatabaseSeparatedSchema(下文简称为分离表架构)。

•共享表架构:即所有的软件系统客户共享使用相同的数据库实例和相同的数据库表,但可以通过类似于图3中的TenantID字段来区分数据的从属。

因为共享表架构最大化地利用了单个数据库实例的存储能力,所以这种架构的硬件成本非常低廉,但对程序开发者来说,却增加了额外的复杂度。由于多个客 户的数据共存于相同的数据库表内,因此需要额外的业务逻辑来隔离各个客户的数据。此外,这种架构实现灾难备份的成本也非常高,不但需要专门编写代码实现数 据备份,而且在恢复数据时,需要对数据库表进行大量的删除和插入操作,一旦数据库表包含大量其他客户的数据,势必对系统性能和其他客户的体验带来巨大影 响。

分离数据库架构:即每个软件系统客户单独拥有自己的数据库实例,如图4所示。

相比于共享表架构,由于每个客户拥有单独的数据库实例,这种架构可以非常高效便捷地实现数据安全性和灾难备份,但是随之而来的缺点便是其硬件成本非常高昂。

分离表架构:即软件系统客户共享相同的数据实例,但是每个客户单独拥有自己的由一系列数据库表组成的Schema。

分离表架构是一种折中的Multi-Tenancy方案,在这种架构下,实现数据分离和灾难备份相对共享表架构更加容易一些,另一方面,它的硬件成本也较分离数据库架构低。

无论是分离数据库还是分离表,抑或是共享表,每种架构都有它的优点和不足,在设计云端系统时,系统架构师需要进行全面的分析和考量,综合各方面的因 素以选择合适的Multi-Tenancy架构。一般来说,系统服务的客户数量越多,则越适合使用共享表的架构;对数据隔离性和安全性要求越高,则越适合 使用分离数据库的架构。在超大型的云系统中,一般都会采用复合型的Multi-Tenancy架构,以平衡系统成本和性能,这其中 Salesforce.com便是一个典型的案例。Salesforce.com最初搭建于共享表架构,但是随着新客户的不断签入,单纯的共享表架构已经 很难满足日益增长的性能要求,Salesforce逐步开始在不同的物理区域搭建分布式系统。在全局上,Salesforce.com以类似于分离数据库 的架构运行,在单个区域内,系统则仍然按照共享表架构运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: