Page 428 - 《软件学报》2025年第12期
P. 428
黄小龙 等: ReproLink: 面向可复现性的科研数据管理系统 5809
表 2 标识索引示例
id 标识 地址 类型
1 10.1109/5.771073 tcp://52.25.150.45:4021 paper
2 10.1038/nphys1170 udp://198.51.100.14:8765 paper
3 10.18632/oncotarget.22303 tls://143.198.47.108:6443 paper
4 10.6084/m9.figshare.12345678 ws://203.0.113.77:5050 code
5 10.5281/zenodo.9999991 tcp://95.85.31.123:2222 dataset
在获得了科研数据对象所在的仓库地址和基本信息后, 数据管理模块中的操作执行器向数据仓库发送对科研
数据对象的操作请求. 操作执行器可以执行科研数据对象的创建、获取、修改、删除这 4 种操作. 它和数据仓库
之间的通信使用 DOIP 协议. DOIP 协议支持多种传输层协议, 在执行请求时, 操作执行器根据在本地保存的仓库
信息选择合适的传输层协议, 并向数据仓库发出对数据的操作请求.
3.3 对象检索引擎
对象检索引擎采用分层架构, 分为请求分发模块、搜索单元、数据对象索引这 3 部分. 图 3 展示了对象检索
引擎的基本架构, 并以一次路径匹配搜索为例, 展示了对象检索服务的执行过程.
控制器
搜索请求翻译示例 搜索结果收集示例
搜索请求 标识列表 标识列表
{ 搜索请求
type: pathMatch, [
query: [ “ccc/dd.ee”,
{ id: aaa/bb.cc }, 请求分发模块 “ccc/ff.gg”
{ direction: outgoing }, ]
{ type: paper },
] 请求内容
} 标识列表
搜索结果
搜索单元 收集
路径匹配 关键字 ...
搜索请求翻译 搜索单元 搜索单元 Neo4j 查询结果
[
{
查询语句 查询结果 id : ccc/dd.ee,
Cypher 查询语句
type: code
}, {
MATCH 数据对象索引 id: ccc/ff.gg,
(a: DO { id: aaa/bb.cc }) type: code
-[e ]-> ...
Neo4j Lucene
( b: DO { type: paper }) }
RETURN b ]
图 3 对象检索引擎和关系索引
3.3.1 请求分发模块
在收到客户端发来的搜索请求后, 控制器将这一请求发至对象检索引擎, 请求的数据格式如图 3 左侧的搜索
请求翻译示例所示, 包括一个表示搜索请求类型的 type 域和一个表示搜索请求内容的 query 域. 根据不同的搜索
类型, 搜索请求的内容可以具有不同的格式. 对于路径匹配搜索, 搜索请求的内容为一个数组, 其中交替存放路径
中结点和边需要满足的条件; 对于关键字搜索, 搜索请求的内容为一组关键字. 根据搜索请求的类型, 请求分发模
块将搜索请求的内容转发至不同的搜索单元.
3.3.2 搜索单元
ReproLink 支持关键字搜索、路径匹配搜索等搜索方式, 对于每种搜索方式, 对象检索引擎都包含一个处理这
种搜索请求的搜索单元. 在收到请求分发模块转发的请求后, 搜索单元根据请求的内容生成与之匹配的数据库查

