一种医疗影像的云存储的实现方法
技术领域
本发明涉及医学图像存储技术,尤其是涉及一种医疗影像的云存储的实现方法。
背景技术
如今,医院等卫生事业单位在疾病的诊断和治疗过程中,已经大量借助于计算机等数字设备。随着这些设备的广泛使用,产生了大量的数字医疗资料,如病人的透视光片、体内结构的检测视频、手术过程的录像以及与之相关的文字描述等。所有这些数字资料,都是医疗单位的重要无形资产,可以用于病例检索、教学回放、经验交流等。经过长期积累,这些资料已经成为一笔宝贵的财富,具有重要的保存和再利用价值。
如何才能有效保存和管理这些数字医疗资料呢?由于X光片、视频等资料的数据量庞大,要想长时间完好保存这些数据,必然需要海量存储系统的支持。因此,稳定、高效,能够存储海量数据的存储管理系统必不可少。
已有的云存储技术方案主要有:
1、Google文件系统(Google File System,GFS)是一个大型的分布式文件系统。Google这种中心服务器模式对于医疗影像的存储存在一些缺点:中心服务器极易成为整个系统的瓶颈。所有客户端访问GFS时,首先访问Master节点,这样中心服务器对并发量、稳定性的要求都很高,稍有问题,就影响整个系统的运行。
2、基于一致性哈希算法无中心服务器的存储架构。基于一致性哈希算法无中心服务器的存储架构对于医疗影像的存储存在的缺点:在扩展服务器的时候需要成倍的增加服务器,否则,数据的分布就不均匀了。而对于医疗影像的存储领域,需要在扩展服务器时更加灵活才可行。
发明内容
本发明所要解决的技术问题是提供一种医疗影像的云存储的实现方法,通过此方法可以实现在廉价的商用服务器和存储设备进行海量的医疗影像数据的存储。
本发明采用如下技术方案实现:一种医疗影像的云存储的实现方法,其包括步骤:
构造一个Hash空间,将DICOM文件与Hash空间内的元素建立映射关系;
将Hash空间内的元素分配到云存储的各个服务器;
用文件记录云存储中所有服务器信息以及Hash空间内元素的分配信息,并将这个文件同步到云存储中的每一台服务器上;
向云存储中服务器提交DICOM文件进行存储。
其中,建立映射关系的步骤具体包括:
计算DICOM文件中数据元素Study Instance UID的CRC编码;
将得到的CRC编码对Hash空间的空间大小M取余,得到的结果就是映射到Hash空间的元素。
其中,记录分配信息的文件至少包含信息:服务器序号、IP地址、磁盘容量和包含的Hash空间的元素。
其中,向云存储中服务器提交DICOM文件进行存储的步骤具体包括:
接收客户端发送过来的DICOM文件到缓存中;
将DICOM文件映射到Hash空间的一个元素Key,通过云存储配置文件查找该Hash元素Key所在的服务器S;
再把该DICOM文件从缓存转发到计算出来的服务器S,将该DICOM文件存储在服务器S。
在一个实施例中,所述医疗影像的云存储的实现方法还包括从云存储中服务器下载DICOM文件的步骤。所述下载DICOM文件的步骤具体包括:客户端发送DICOM文件下载请求,在下载请求信息中包含请求的DICOM文件的Study Instance UID;收到客户端请求的那台服务器S1,根据Study Instance UID映射到Hash空间的一个元素Key,通过云存储配置文件查找该Hash元素Key所在的服务器S2;如果服务器S2就是服务器S1本身,那么直接将DICOM发送给客户端,否则,把服务器S2的信息发送给客户端,这样客户端再向S2服务器发送DICOM文件下载请求。
在一个实施例中,所述医疗影像的云存储的实现方法还包括对云存储中服务器进行扩展的步骤。其中,对云存储中服务器进行扩展的步骤具体包括:重新计算每台服务器的应分配的Hash元素个数;第i服务器当前已分配的Hash元素个数为Gi,如果Gi>Hi,那么这个服务器需要迁出Hash元素,迁出的Hash元素个数为Oi=Gi-Hi,否则就应该迁入Hash元素,迁入的Hash元素的个数为Pi=Gi-Hi;根据上面计算所得每台服务器迁出或迁入Hash元素数量,生成Hash元素的迁移脚本。
其中,于Hash元素的迁移完成后,将最新的用于记录分配信息的文件及Hash元素的迁移脚本在云存储的各个服务器进行同步更新。
与现有技术相比,本发明具有如下有益效果:
本发明实现简单、没有复杂的控制逻辑,易于开发和维护,而且有良好的扩展性,扩展之后仍能保证数据分布均匀。
附图说明
图1是本发明一个实施例的流程示意图;
图2是分配Hash元素到服务器的流程示意图;
图3是实现DICOM文件存储的流程示意图;
图4是实现DICOM文件下载的流程示意图;
图5是增加服务器时生成配置脚本的流程示意图;
图6是增加服务器的实现流程示意图。
具体实施方式
本发明提出一种基于有限hash空间与DICOM(Digital Imaging andCommunication in Medicine)文件映射的云存储技术,具有实现更简单更灵活且扩展性好的特点。
结合图1所示,在一个实施例中,本发明包括如下实现步骤:
步骤S1、构造一个有限的连续的自然数集合,我们称这个自然数集合为Hash空间,假设Hash空间的大小M,那么Hash空间可以表示成[1,2,3,4...,M]。
步骤S2、将DICOM文件与Hash空间内的元素建立映射关系。
循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为P位,因此,这种编码又叫(P,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为P-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2的R次方除以生成多项式G(x)得到的余数就是校验码。
DICOM文件与Hash空间元素的映射方法如下:1、计算DICOM文件中数据元素StudyInstance UID的CRC编码。2、该CRC编码对Hash空间大小M取余。具体计算公式为:Key=CRC(Study Instance UID)%M,其中Key就是映射到Hash空间的元素。
步骤S3、将Hash空间内的元素分配到云存储的各个服务器。
把Hash空间内的元素分配到不同的服务器上去,根据DICOM文件与Hash空间元素的映射关系,就可以实现影像数据的云存储服务了。
结合图2所示,假设集群中有N台服务器,我们把Hash空间内的元素分配到这N台服务器上。
分配的规则可以根据服务器的磁盘容量进行分配,分配的规则如下:
计算每台服务器的应分配的Hash元素个数Hi,假设第i台(i=0,1,2,...,N-1)服务器的磁盘容量为Di,计算公式为:
步骤S4、用文件记录云存储中所有服务器信息以及Hash空间内元素的分配信息,并将这个文件同步到云存储中的每一台服务器上,即在云存储中的每一台服务器上同步云存储配置文件。
比如,配置文件包含的数据格式如下表1所示:
服务器序号 |
IP地址 |
磁盘容量 |
包含的Hash空间的元素 |
1 |
192.168.0.100 |
10T |
1,2,3,4,…,1002 |
2 |
192.168.0.102 |
12T |
1003,1004,…,2200 |
表1
步骤S5、将DICOM文件存储至云存储中服务器。
结合图3所示,客户端配置连接的存储服务器为云存储服务器的任意一台。当客户端向该服务器提交DICOM文件进行保存时,该服务器首先接收客户端发送过来的DICOM文件到缓存中,然后将DICOM文件映射到Hash空间的一个元素Key,通过云存储配置文件查找该hash元素Key所在的服务器S,把DICOM文件再转发到计算出来的服务器S中,就实现了DICOM文件在云存储中服务器的存储。
另外,结合图4所示,若需要从云存储中服务器下载DICOM文件:首先客户端发送DICOM文件下载请求,在下载请求信息中包含请求的DICOM文件的Study Instance UID。收到客户端请求的那台服务器S1,根据Study InstanceUID映射到Hash空间的一个元素Key,通过云存储配置文件查找该Hash元素Key所在的服务器S2,如果S2就是S1本身,那么直接将DICOM发送给客户端。否则,把服务器S2的信息发送给客户端,这样客户端再向S2服务器发送DICOM文件下载请求。
再者,本发明还可以对云存储中服务器进行扩展。假设当前云存储中已经有N台服务器,现在增加一台服务器。首先需要调整Hash元素的分配。这个调整的过程,需要遵循两个原则,一是保证调整后的数据分布仍然是均匀的;二是调整时,数据的迁移量是最小的。我们调整Hash元素的方法是如下:1、重新计算每台服务器的应分配的Hash元素个数,假设第i台服务器的的磁盘容量为Di,计算公式为:2、第i服务器当前已分配的Hash元素个数为Gi,如果Gi>Hi,那么这个服务器需要迁出Hash元素,迁出的Hash元素个数为Oi=Gi-Hi。否则就应该迁入Hash元素,迁入的Hash元素的个数为Pi=Gi-Hi。3、根据上面计算所得每台服务器迁出或迁入Hash元素数量,生成Hash元素的迁移脚本,按图5所示进行Hash元素的迁移任务脚本。
其中,Hash元素迁移脚本的数据结构如下表2所示:
Hash元素 |
源服务器 |
目标服务器 |
1 |
192.168.0.100 |
192.168.0.103 |
表2
生成好新的云存储配置脚本和Hash元素的迁移任务后,服务器需要再次同步云存储配置脚本和Hash元素的迁移任务脚本,其中Hash元素的迁移任务脚本的实现步骤见图6所示。
综上,与现有技术相比,本发明具有如下有益技术效果:
1、实现简单、没有复杂的控制逻辑,易于开发和维护。
2、不会出现单点故障,单个服务器故障不会影响系统整体的运行。
3、有良好的扩展性,扩展之后仍能保证数据分布均匀
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。