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  支持关键字搜索、路径匹配搜索等搜索方式, 对于每种搜索方式, 对象检索引擎都包含一个处理这
                 种搜索请求的搜索单元. 在收到请求分发模块转发的请求后, 搜索单元根据请求的内容生成与之匹配的数据库查
   423   424   425   426   427   428   429   430   431   432   433