云平台的XML数据资源全文索引库表设计

名称:xml全文索引设计

版本:V1.0

数据库支持:SqlServer SqlLite

设计背景:

1、平台的整体的数据表达根据FHIR的设计要求,采用XML数据格式。

2、公共云和私有云和客户端对XML数据快速查询的支持。大型数据库SQLserverOracle等对支持XML查询,经过测试对复杂性和速度的性能都不尽人意。需要一套全新的xml全文索引方式来保证海量数据的查询要求。

3、各级平台和应用对数据部署的快速部署要求,SQLserverOracle等对于中小应用数据库的快速部署相对复杂一些,需要制定一套全新的数据库部署方案。

设计原则:

1、保证中小客户的快速部署也要考虑中大型客户对海量数据分布和集群的要求。

2、对海量数据的存储和快速检索

 

设计目标:

1、小型客户免安装数据库,自动完成对数据的部署。大型数据库可以采用人工干预的方法。

2数据资源检索速度1000万索引记录小于300MS

 

设计方案:

       设计一套跨数据库XML数据表达的数据索引方案。同时建立一套具有数据时效性调度机制的数据存储,保证海量数据对业务的速度要求。

1V1.0版: 中小型客户采用SqlLite数据库,大型客户可以采用Sqlserver

2、根据资源数据的性质,数据分为

Base:基础数据

Resource:资源数据

Log:日志资源数据

BPM:工作流资源数据

3、根据数据时效性分为

Excute:可执行数据,可以对资源进行CRUD等操作

Parellel:并行数据,可以与Excute数据进行联合查询,但不能做删除、增加、修改等业务操作。

History:历史数据,不参与直接运行,相当于历史的备份,可以通过相应的Restful API 查询。

sqlLite

4V1.0资源处理,每个资源存储单元(ResourceDataStoreUnit)独立的数据分布,资源类型(resourceType)放在同一个Main表中

每个存储单元定义一个文件夹

库名定义:

库名称

说明

Base

存放系统基础设置和数据字典等数据

Resource

存放客户业务数据

BPM

存放工作业务流实例数据

Log

存放日志资源,请求和任务执行过程

Parallel

并行库

 

只能查询

History

历史库

只能条件(库名)查询

表名称定义

表名称

说明

Main

资源主表

FullTextIndex

资源全文索引

History

历史主表

HistoryFullTextIndex

历史资源全文索引

 

Main表结构

字段名

说明

类型

IDS

主键

Int64

LogicID

逻辑ID

NVARCHAR (32)

ResourceType

资源类型

NVARCHAR(50)

VersionID

版本ID

NVARCHAR(4)

Digest

摘要

[Digest] NVARCHAR(500)

ResourceSavePath

资源保存路径

NVARCHAR(100)

LastUpdateTime

最后更新时间

DATETIME

Status

状态

TinyInt

Operator

操作员ID

CHAR(32)

UnitID

单位ID

CHAR(32)

http://xxx.xxx.x.x:80/patition/23

联合主键:LogicID+ResourceType

FullTextIndex

字段名

说明

类型

IDS

外键

Int64

LogicID

逻辑ID

NVARCHAR (32)

ResourceType

资源类型

NVARCHAR(50)

ElementValue

元素值

NVARCHAR(255)

XPath

Xpath路径murmurHash

BigInt

XPath2

Xpath路径2

NVARCHAR(500)

Expression

表达式

NVARCHAR(100)

联合索引:xpath+ElementValue+resourceType

 

 

History

字段名

说明

类型

IDS

IDS

LogicID

逻辑ID

ResourceType

资源类型

VersionID

版本ID

Digest

摘要

ResourceSavePath

资源保存路径

LastUpdateTime

最后更新时间

Status

状态

Operator

操作员ID

UnitID

单位ID

 

联合主键:LogicID+ResourceType+VersionID

 

HistoryFullTextIndex

IDS

History外键

LogicID

ResourceType

ElementValue

XPath

XPath2

Expression

联合索引:xpath+ElementValue+resourceType

 

SqlServer

每个APP定义一个库

表名称定义 AppNo_Base

表名称

说明

Base_Main

资源主表

Base_FullTextIndex

资源全文索引

Base_History

历史主表

Base_HistoryFullTextIndex

历史资源全文索引

Resource_Main

资源主表

Resource _FullTextIndex

资源全文索引

Resource _History

历史主表

Resource _HistoryFullTextIndex

历史资源全文索引

BPM _Main

资源主表

BPM _FullTextIndex

资源全文索引

BPM _History

历史主表

BPM _HistoryFullTextIndex

历史资源全文索引

Log_Main

资源主表

Log_FullTextIndex

资源全文索引

Log_History

历史主表

Log_HistoryFullTextIndex

历史资源全文索引

Parallel_Main

资源主表

Parallel_FullTextIndex

资源全文索引

Parallel_History

历史主表

Parallel_HistoryFullTextIndex

历史资源全文索引

History_Main

资源主表

History_FullTextIndex

资源全文索引

History_History

历史主表

History_HistoryFullTextIndex

历史资源全文索引

Sqllite 数据库是分文件的。如果并行库和运行库在同一个硬盘上没有意义,其他大型数据库可以采用表横切接收将并行库放到其他硬盘上,也可以采用服务器集群来解决访问性能问题。历史库可以做成集群方式,采用sqllite 可以使用多硬盘或者多服务来解决性能问题。

 

 

 

文件保存机制:

采用数据库格式存储:

SqlLite文件名: 放在APP文件夹中 DocumentBase_ExcuteParalle DocumentBase_History

表明:Document

SqlServer:库名AppNo_Document_ExcuteParalle

AppNo_Document_History

表明:Document

字段名

格式

Uri

string

xx\YY\123(主键)

TextEncoding

string

HttpContentType

string

CreateTime

DateTime

Content

binary

最大10M

FilePath

string

大于10M存路径

RDF.Author

String

uri

RDF.Date

RDF.Creator

主键种子:LogicSeed

字段名

格式

key

string

value

int

 

URI数据解析

文件:逻辑文件夹+文件名称

health\Emr\V1000\aaa.dll

health\Emr\V1001\aaa.dll

根据扩展名确定 HttpContextType

Dll/exe: application/x-msdownload

txt/ini: text/plain

 

资源:逻辑路径+资源version

health\resource\patient\123\_history\246

HttpContextType:text/xml

 

logicID编码规格:默认规则编码和客户自定义规则

ResourceModelDefinition中定义其编码规则

   <!–defalut:起点从99999999999开始没有结束–>

       <!–custom用户自定义(不允许实现纯正整数数字)–>

       <!–range标识启动和终点–>

 

dataModelDefine采用默认分类路径:dmd.health

 

资源体系采用结合RDF资源表达体系

名称

LogicID

必填

VersionID

必填

Type

类别

必填

Name

名称(机读)

必填

Title

标题(人读)

Creator

资源创建者

必填

Author

作者

必填

Date

创建日期

必填

Format

资源类别,采用code

httpcontexttype

必填

Subject

一个资源内容的主题,表达对谁的资源数据

Publisher

发布者,根据情况进行描述性表达

Language

资源内容使用的语言

Identifier

身份识别标识

Description

描述

Relation

关联性资源

Coverage

作用域或者氛围表达

Rights

权利信息

Source

一个对作为目前资源的来源的资源引用。

 

document:type+logicid +versionid

 

read  type+logicid

       1\main:为了检索 最新versionid

       2\documnte(主键读取)

vread type+logicid+versionid

       1\直接从document 读(主键读)

      

history history type+logicid

hisotry-type  type

 

search 参数(xpath+value+type

       1main fulltext 查找 (xpath+value+type) 返回 ids

       2、在main 找到 :type+logicid +versionid

       3document

 

 

create: If-None-Exist(Search)

update:etag\search (main 利用 type+logicid  校验 versionid)

delete:logicid+type(serarch)

 

 

要发表评论,您必须先登录