CN106469224A - 一种用于SaaS平台的可扩展数据模型 - Google Patents
一种用于SaaS平台的可扩展数据模型 Download PDFInfo
- Publication number
- CN106469224A CN106469224A CN201610850928.8A CN201610850928A CN106469224A CN 106469224 A CN106469224 A CN 106469224A CN 201610850928 A CN201610850928 A CN 201610850928A CN 106469224 A CN106469224 A CN 106469224A
- Authority
- CN
- China
- Prior art keywords
- data
- field
- record
- extension
- extended field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于SaaS平台的可扩展数据模型,包括共享数据表和扩展记录表;所述共享数据表形成过程如下:对应用程序所需要的数据进行分析,找出所有的共性数据字段,将共性字段放入共享数据表,所述共享记录表存储租赁ID、扩展字段ID及各个共享字段信息;共享数据表中的每条记录称为主记录,所有主记录的扩展字段都存储在扩展数据表中;所述扩展记录表形成过程如下:每个租赁用户的个性字段放入扩展数据表,其中,个性字段的个数不做限定;所述扩展记录表存储租赁ID、扩展字段ID、扩展列名称、扩展记录值、扩展列数据类型;本发明提出的可扩展的数据模型能同时解决数据类型共享及用户数据模型完全还原的问题。
Description
技术领域
本发明涉及数据库技术,尤其涉及一种用于SaaS平台的可扩展数据模型。
背景技术
软件即服务(SaaS)作为云计算服务类型的组成部分,是一种利用Internet网以共享方式为多个租赁用户提供服务的软件模式。该模式中,由SaaS运营商提供应用软件、支撑软件(操作***、数据库等)、硬件服务器、维护人员和后期维护、升级服务。而各用户无需购买软硬件,只需进行在线租用,就可获得相应的软件服务。
租赁用户通过Internet访问部署在云中的SaaS服务,用于完成业务逻辑所需的数据也存储在云数据库中。根据用户的业务需求不同,可以以下几种方式为用户提供数据库:
1.每个租赁用户一个数据库。这种方式可以完全满足用户对数据扩展的要求,数据安全性及隔离性好,但租赁用户间完全没有数据共享,适合较复杂的***及对数据安全要求比较高的***,如ERP,银行业务***等。
2.多个租赁用户共享一个数据库,分别使用不同的模式。该方式以模式隔离各用户数据,用户可以对自己拥有的模式内的数据模型进行任意的修改及扩充,用户间不互相共享数据。相对与前一种方式,每个服务器可以支撑更多的租户.硬件成本相对降低,节约了服务器资源,经济实用性增强。但维护比较复杂,例如数据库出错,无论表里的数据是否损坏,需要恢复所有租户的表,需要花费很长的时间。比较适用于租户对安全级别要求比较高,且每个租户的数据表不多的状况。
3.多个租赁用户共享数据库及模式。这种数据架构允许一张表可以包含很多租户的数据记录,租户之间通过ID来区分。因此共享程度最高,但数据隔离程度最低,相应的安全级别也较低。一个服务器可以最大程度地支撑租户的数量。SaaS软件服务商拥有最低的硬件成本和数据备份成本,经济适用性好,非常符合SaaS的应用特征。
以共享数据库及模式访问数据库需要解决的问题是,对公共的数据实现所有租赁用户的共享;对专属于用户的特定数据实现相互隔离;对不同用户的个性化需求数据实现动态扩展。数据模型动态扩展尤为重要,若不能根据用户的需求,动态扩展数据属性,SaaS应用就会失去吸引力。已经提出的有代表性的数据扩展模型有:扩充数据列、数据表透视、名称值对、数据切片、动态扩充XML节点等。
发明内容
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种用于SaaS平台的可扩展数据模型。
本发明解决其技术问题所采用的技术方案是:一种用于SaaS平台的可扩展数据模型,包括共享数据表和扩展记录表;
所述共享数据表形成过程如下:对应用程序所需要的数据进行分析,找出所有的共性数据字段,将共性字段放入共享数据表,所述共享记录表存储租赁ID、扩展字段ID及各个共享字段信息;共享数据表中的每条记录称为主记录,所有主记录的扩展字段都存储在扩展数据表中;
所述扩展记录表形成过程如下:每个租赁用户的个性字段放入扩展数据表,其中,个性字段的个数不做限定;所述扩展记录表存储租赁ID、扩展字段ID、扩展列名称、扩展记录值、扩展列数据类型;
所述租赁ID用于区分不同用户的数据;
所述扩展字段ID用于查询每个数据记录的扩展字段,其中,扩展字段ID若为空,表示该记录无扩展字段;扩展数据表中的每一条记录表示一个租赁用户在共享数据表中对应主记录的扩充字段,扩展记录表以扩展字段ID关联共享数据表的主记录;
所述扩展列名称用于表示扩展字段的名称;所述扩展记录值用于表示扩展字段值,所述扩展列数据类型用于表示扩展字段的数据类型;
所述扩展记录表中扩展字段的数据类型由数据类型表描述,扩展记录中的扩展记录值字段设置为sql_ variant类型,表示可以存储任意数据类型的值,扩展列数据类型字段共享使用数据类型表中的数据类型,从而得到扩展字段值的实际数据类型。
按上述方案,所述扩展字段可以为任意数量及数据类型,即同一种数据类型可能会被多个不同数据模型中不同名称的扩充字段使用。
本发明产生的有益效果是:现有的几种数据扩展模式针对具体的应用,都可以一定程度解决数据扩充的问题,但也有各自的缺点,尤其是不能解决数据类型共享及用户数据模型完全还原的问题,本发明提出的一种用于SaaS平台是数据模型可以较好的解决这两个问题。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的扩展数据模型结构示意图;
图2是本发明实施例的扩展模型实例数据示意图;
图3是本发明实施例的租赁用户1数据模型还原算法示意图;
图4 是本发明实施例的数据转换逻辑层示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
一种用于SaaS平台的可扩展数据模型,包括共享数据表和扩展记录表;
所述共享数据表形成过程如下:对应用程序所需要的数据进行分析,找出所有的共性数据字段,将共性字段放入共享数据表,所述共享记录表存储租赁ID、扩展字段ID及各个共享字段信息;共享数据表中的每条记录称为主记录,所有主记录的扩展字段都存储在扩展数据表中;
所述扩展记录表形成过程如下:每个租赁用户的个性字段放入扩展数据表,其中,个性字段的个数不做限定;所述扩展记录表存储租赁ID、扩展字段ID、扩展列名称、扩展记录值、扩展列数据类型;
所述租赁ID用于区分不同用户的数据;
所述扩展字段ID用于查询每个数据记录的扩展字段,其中,扩展字段ID若为空,表示该记录无扩展字段;扩展数据表中的每一条记录表示一个租赁用户在共享数据表中对应主记录的扩充字段,扩展记录表以“扩展字段ID”关联共享数据表的主记录;
所述扩展列名称用于表示扩展字段的名称;所述扩展记录值用于表示扩展字段值,所述扩展列数据类型用于表示扩展字段的数据类型;
所述扩展记录表中扩展字段的数据类型由数据类型表描述,扩展记录中的“扩展记录值”字段设置为sql_ variant类型,表示可以存储任意数据类型的值,“扩展列数据类型”字段共享使用数据类型表中的数据类型,从而得到扩展字段值的实际数据类型。用户扩展的字段可以是任意数量及数据类型的,同一种数据类型可能会被多个不同数据模型,不同名称的扩充字段使用。若数据类型不能共享使用,则必须为每个扩展字段添加一条表示其数据类型的元数据,即便是在同一数据模型中,使用同一种数据类型的名称不同的两个扩展字段,也需要两条元数据记录表示扩展字段的数据类型。共享使用数据类型可以省略掉不必要的元数据记录,简化扩展数据模型的设计。
上述数据模型还原方法为:
1、扩展数据模型应该能将各个租赁用户的特定数据结构模型完全还原,用户应用程序直接对还原后的数据模型进行操作,而不需要关心其实际的存储结构。将扩展数据模型完全还原的算法为:
select * from
((select <主记录列>,<扩展记录列>,
case <数据类型列> when 'DataTypeID' then convert(DataType,<扩展数据值>)[ ...n ] ELSE <扩展数据值> END
from t_Main m join t_Extension ex on m.TenantID = ex.TenantID andm.ExRecordID = ex.ExRecordID join t_DataType dt on ex.DataTypeID =dt.DataTypeID where m.TenantID = @tenantID) as pivotSource
pivot
(aggregate_function (ExValue ) FOR ExColumnName IN ( <ExColumn_list> )))as restoredTable
还原算法首先根据租赁用户的“租赁ID”联接共享数据表、扩展数据表、数据类型表得到其的数据记录列表,然后通过数据透视技术还原用户的数据结构,并在还原过程中将以sql_variant类型存储的扩展字段值转换为实际的数据类型,还原后的数据可以以强类型数据集的方式提供给应用逻辑层,方便编程及进行数据类型验证。
上述数据模型的操作方法为:
1、数据操作过程:
还原后的数据模型可以展示在用户界面层上进行添加、修改、删除操作。添加的记录须根据扩展模型进行分解,共享的字段形成主记录保存在共享数据表中,扩展字段分解为多条记录存储在扩展数据表中,扩展字段的实际数据类型通过查询数据类型表得到。修改记录时,须根据修改值的字段名称,分别更新共享数据表及扩展数据表,删除记录时,共享数据表的主记录及扩展数据表中的记录需要同时删除。添加、修改、删除操作的数据完整性及一致性都可以通过事务机制保证。
2、数据转换逻辑层:
可以在租赁用户数据模型和扩展数据模型间建立一个数据转换逻辑层,该数据转换逻辑层向业务逻辑层提供透明的操作接口,业务逻辑层通过调用操作接口对数据进行操作,数据转换逻辑层将用户操作转换为更新扩展模型数据的程序逻辑,数据转换逻辑层也负责将扩展模型数据完全还原为用户模型数据。
如图1左侧所示的四个租赁用户对“课程”数据模型的需求,可扩展的数据模型提取CourseID,CourseName两个字段到共享数据表,不同用户的数据以TenantID区分,每个数据记录的扩展字段,通过ExRecordID查询得到,ExRecordID可以为空,表示记录无扩展字段。共享数据表中的每条记录称为主记录。所有主记录的扩展字段都存储在扩展数据表中,扩展数据表中的每一条记录表示一个租赁用户在共享数据表中对应主记录的扩充字段,扩展记录以 TenantID区分不同的用户,以ExRecordID关联共享数据表的主记录,以ExColumnName表示扩展字段的名称,以ExValue表示扩展字段值,DataTypeID表示扩展字段的数据类型。四个租赁用户的“课程”表的扩展数据模型如图1右侧所示,扩展数据模型的实例数据如图2所示。
数据还原算法首先根据租赁用户的TenantID联接共享数据表、扩展数据表、数据类型表得到其的数据记录列表,然后通过数据透视技术还原用户的数据结构,并在还原过程中将以sql_variant类型存储的扩展字段值转换为实际的数据类型,还原后的数据可以以强类型数据集的方式提供给应用逻辑层,方便编程及进行数据类型验证。根据实例数据还原租赁用户1的模型结构的算法及还原结果如图3所示。
对于数据操作,假设租赁用户1需要***一条数据(‘C003’,‘Art’,‘Jack’,5,1),业务逻辑层直接调用数据转换逻辑层中的添加数据转换接口,由添加数据转换接口将(‘T100’,‘C003’,‘Art’,‘Ex003’)入共享数据表,将(‘T100’,‘Ex003’,‘Jack’,‘DT005’),(‘T100’,‘Ex003’,1,‘DT001’),(‘T100’,‘Ex003’,1,‘DT003’)***扩展数据表,扩展记录ID‘Ex003’及各个扩展字段的数据类型ID由相关程序逻辑查询、计算得到。修改、删除数据操作类似于添加操作。业务逻辑层、数据转换逻辑层、扩展数据层的关系如图4所示。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (2)
1.一种用于SaaS平台的可扩展数据模型,其特征在于,包括共享数据表和扩展记录表;
所述共享数据表形成过程如下:对应用程序所需要的数据进行分析,找出所有的共性数据字段,将共性字段放入共享数据表,所述共享记录表存储租赁ID、扩展字段ID及各个共享字段信息;共享数据表中的每条记录称为主记录,所有主记录的扩展字段都存储在扩展数据表中;
所述扩展记录表形成过程如下:每个租赁用户的个性字段放入扩展数据表,其中,个性字段的个数不做限定;所述扩展记录表存储租赁ID、扩展字段ID、扩展列名称、扩展记录值、扩展列数据类型;
所述租赁ID用于区分不同用户的数据;
所述扩展字段ID用于查询每个数据记录的扩展字段,其中,扩展字段ID若为空,表示该记录无扩展字段;扩展数据表中的每一条记录表示一个租赁用户在共享数据表中对应主记录的扩充字段,扩展记录表以扩展字段ID关联共享数据表的主记录;
所述扩展列名称用于表示扩展字段的名称;所述扩展记录值用于表示扩展字段值,所述扩展列数据类型用于表示扩展字段的数据类型;
所述扩展记录表中扩展字段的数据类型由数据类型表描述,扩展记录中的扩展记录值字段设置为sql_ variant类型,表示可以存储任意数据类型的值,扩展列数据类型字段共享使用数据类型表中的数据类型,从而得到扩展字段值的实际数据类型。
2.根据权利要求1所述的可扩展数据模型,其特征在于,所述扩展字段可以为任意数量及数据类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610850928.8A CN106469224A (zh) | 2016-09-26 | 2016-09-26 | 一种用于SaaS平台的可扩展数据模型 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610850928.8A CN106469224A (zh) | 2016-09-26 | 2016-09-26 | 一种用于SaaS平台的可扩展数据模型 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106469224A true CN106469224A (zh) | 2017-03-01 |
Family
ID=58230215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610850928.8A Pending CN106469224A (zh) | 2016-09-26 | 2016-09-26 | 一种用于SaaS平台的可扩展数据模型 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106469224A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073709A (zh) * | 2017-12-20 | 2018-05-25 | 上海达梦数据库有限公司 | 一种数据记录的操作方法、装置、设备和存储介质 |
WO2019205790A1 (zh) * | 2018-04-23 | 2019-10-31 | 华为技术有限公司 | 一种数据操作方法及装置 |
CN111831964A (zh) * | 2019-04-10 | 2020-10-27 | 阿里巴巴集团控股有限公司 | 数据报表信息处理方法、装置及计算机*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102200977A (zh) * | 2010-03-23 | 2011-09-28 | 国际商业机器公司 | 多租户环境下扩展数据库表的方法和*** |
CN104462421A (zh) * | 2014-12-12 | 2015-03-25 | 中国科学院声学研究所 | 基于键-值数据库的多租户扩展方法 |
-
2016
- 2016-09-26 CN CN201610850928.8A patent/CN106469224A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102200977A (zh) * | 2010-03-23 | 2011-09-28 | 国际商业机器公司 | 多租户环境下扩展数据库表的方法和*** |
CN104462421A (zh) * | 2014-12-12 | 2015-03-25 | 中国科学院声学研究所 | 基于键-值数据库的多租户扩展方法 |
Non-Patent Citations (1)
Title |
---|
刘黎志 等: "一个用于SaaS平台的可扩展数据模型", 《制造业自动化》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073709A (zh) * | 2017-12-20 | 2018-05-25 | 上海达梦数据库有限公司 | 一种数据记录的操作方法、装置、设备和存储介质 |
WO2019205790A1 (zh) * | 2018-04-23 | 2019-10-31 | 华为技术有限公司 | 一种数据操作方法及装置 |
CN110399368A (zh) * | 2018-04-23 | 2019-11-01 | 华为技术有限公司 | 一种数据操作方法及装置 |
CN110399368B (zh) * | 2018-04-23 | 2022-08-19 | 华为技术有限公司 | 一种定制数据表的方法、数据操作方法及装置 |
CN111831964A (zh) * | 2019-04-10 | 2020-10-27 | 阿里巴巴集团控股有限公司 | 数据报表信息处理方法、装置及计算机*** |
CN111831964B (zh) * | 2019-04-10 | 2024-06-07 | 阿里巴巴集团控股有限公司 | 数据报表信息处理方法、装置及计算机*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101170416B (zh) | 网络数据存储***及其数据访问方法 | |
CN103299267B (zh) | 用于执行多租户存储中的交叉存储连接的方法和*** | |
CN104160381B (zh) | 多租户环境中租户特定数据集的管理方法及其*** | |
CN104067216B (zh) | 用于实施可扩展数据存储服务的***和方法 | |
CN102200977B (zh) | 多租户环境下扩展数据库表的方法和*** | |
CN104021145B (zh) | 一种混合业务并发访问的方法和装置 | |
CN107368588B (zh) | 一种异构资源同构化方法及装置 | |
US7523141B2 (en) | Synchronization operations involving entity identifiers | |
CN109144994A (zh) | 索引更新方法、***及相关装置 | |
CN108475271A (zh) | 容器数据库的应用容器 | |
CN109906448A (zh) | 使用单独的逻辑时间戳服务促进可插拔数据库上的操作 | |
CN102170457A (zh) | 向应用的多租户提供服务的方法和装置 | |
JP2001051879A (ja) | 非関係データベースへの改良されたアクセスのための方法およびシステム | |
CN101945126A (zh) | 森林资源异构数据分布式管理*** | |
CN105426373A (zh) | 一种数据库同步方法与设备 | |
US20080104008A1 (en) | Common data broker method, system, and program product | |
KR101400214B1 (ko) | Hybrid C 인터페이스를 지원하는 장치 | |
CN105635311A (zh) | 一种云管理平台中资源池信息同步的方法 | |
CN106469224A (zh) | 一种用于SaaS平台的可扩展数据模型 | |
CN114296836B (zh) | 远程配置*** | |
CN106453618A (zh) | 基于G‑Cloud云计算的遥感图像处理服务云平台*** | |
WO2016191995A1 (zh) | 一种分布式数据库中关联表分区的方法和设备 | |
US10489356B1 (en) | Truncate and append database operation | |
CN103473332A (zh) | 一种虚拟试验体系结构的数据档案库 | |
CN108984236A (zh) | 一种虚拟化管理平台的实现方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170301 |