acdh-oeaw / arche-core
ARCHE 仓库后端
5.3.1
2024-09-16 10:27 UTC
Requires
- php: ^8.1
- ext-gd: *
- acdh-oeaw/arche-lib: ^6
- guzzlehttp/guzzle: ^7
- php-amqplib/php-amqplib: ^3.1
- sweetrdf/simple-rdf: ^2
- zozlak/auth: ^2
- zozlak/http-accept: >=0.1.0 <1
- zozlak/logging: ^1
- zozlak/rdf-constants: ^1
Requires (Dev)
- dev-master
- 5.3.1
- 5.3.0
- 5.2.1
- 5.2.0
- 5.1.1
- 5.1.0
- 5.0.2
- 5.0.1
- 5.0.0
- 5.0.0-RC1
- 4.1.0
- 4.0.1
- 4.0.0
- v3.8.x-dev
- 3.8.0
- 3.7.12
- 3.7.11
- 3.7.10
- 3.7.9
- 3.7.8-RC2
- 3.7.8-RC1
- 3.7.7
- 3.7.6
- 3.7.2
- 3.7.1
- 3.7.0
- 3.6.2
- 3.6.1
- 3.6.0
- 3.5.3
- 3.5.2
- 3.5.0
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.0
- 3.3.0
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.2
- 3.0.1
- 3.0.0
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.0
- 1.11.1
- 1.11.0
- 1.10.3
- 1.10.2
- 1.10.1
- 1.10.0
- 1.9.x-dev
- 1.9.0
- 1.8.0
- 1.7.1
- 1.7.0
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.6
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.9
- 1.3.8
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
- dev-rdfinterface
- dev-ci
- dev-tx
- dev-issue-9
- dev-task-17238
This package is auto-updated.
Last update: 2024-09-16 10:30:31 UTC
README
ARCHE 仓库解决方案的核心组件,负责 CRUD 操作和事务支持。
安装
composer require acdh-oeaw/arche-core
部署
见 https://github.com/acdh-oeaw/arche-docker
开发环境
一个允许你在宿主系统中编辑代码并在 docker 容器内运行所有测试的环境。
- 克隆此仓库并进入它
git clone https://github.com/acdh-oeaw/arche-core.git cd arche-core
- 获取所有依赖项
composer update
- 使用运行时环境构建 docker 镜像
docker build -t arche-dev build/docker
- 运行运行时环境,将仓库目录挂载到其中,等待它准备好
docker run --name arche-dev -v `pwd`:/var/www/html -e USER_UID=`id -u` -e USER_GID=`id -g` -d arche-dev docker logs -f arche-dev
等待直到你看到(时间戳将明显不同)
然后按2020-06-04 14:06:52,309 INFO success: apache2 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2020-06-04 14:06:52,309 INFO success: postgresql entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2020-06-04 14:06:52,309 INFO success: rabbitmq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2020-06-04 14:06:52,309 INFO success: tika entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
CTRL+c
- 进入 docker 容器并在其中运行测试
docker exec -ti -u www-data arche-dev /bin/bash
然后在容器内部XDEBUG_MODE=coverage vendor/bin/phpunit
备注
- 默认情况下,开发环境以 Apache mod_php 模块的形式运行 PHP,但它也准备以 FPM 运行 PHP。要调整配置,请在宿主系统上运行
docker exec arche-dev a2dissite mod_php docker exec arche-dev a2ensite php_fpm docker exec -w /root arche-dev supervisorctl restart apache2
同样,要返回 mod_php 配置docker exec arche-dev a2dissite php_fpm docker exec arche-dev a2ensite mod_php docker exec -w /root arche-dev supervisorctl restart apache2
REST API 文档
- https://app.swaggerhub.com/apis/zozlak/arche (Swagger/OpenAPI)
- 有关 https://acdh-oeaw.github.io/arche-docs/ 的指南
架构
数据库结构
主表是 resources
表。它存储了所有由其内部仓库 ID(id
列)标识的仓库资源列表以及处理相关数据(列 transaction_id
和 state
)。
元数据根据对其应用的一致性检查分为三个表。
identifiers
表存储资源的标识符(仓库假定每个资源可能有多个)。该表强制实施全局标识符的唯一性。存储标识符的 RDF 属性隐式来自仓库的config.yaml
($.schema.id
),且不明确存储在数据库中。relations
表存储所有具有 URI 作为对象的 RDF 三元组。它通过外键检查强制实施一个 RDF 三元组指向的仓库资源存在。metadata
表存储所有其他 RDF 三元组。该表不对数据进行约束。三元组以 RDF 类似的方式存储 - 表中的每一行代表一个单一的三元组。- 对于看起来像正确数字/日期的三元组值,
value_n
/value_t
列存储转换为数字/时间戳的值。这允许进行正确的比较,而不会针对字符串值失败。 - 仅在值的第一个 1000 个字符上设置了
value
列的索引。这既是技术原因也是性能原因。一个重要的后果是,如果你想在值列上受益于索引搜索,你应该将条件声明为substring(value, 1, 1000) = 'yourValue'
。
- 对于看起来像正确数字/日期的三元组值,
辅助表包括
transactions
表存储有关挂起事务的信息。- 存储元数据修改历史的
metadata_history
表。它通过在identifiers
、relations
和metadata
表上触发器自动填充。 - 存储在
full_text_search
表上的 GIST 索引,针对分词后的元数据值和资源的文本内容,允许全文搜索(请参阅Postgresql 文档)。 - 存储向量空间数据的
spatial_search
表,作为 PostGIS 地理,允许空间搜索(请参阅PostGIS 文档)。 raw
表仅用于从之前的 ACDH-CH 存储库解决方案进行数据迁移。
辅助函数和视图
metadata_view
从identifiers
、relations
和metadata
表中收集三元组。get_relatives()
函数允许轻松找到与给定资源相关联的资源以及给定的 RDF 属性。内部使用递归查询,这可能很难正确编写。get_neighbors_metadata()
和get_relatives_metadata()
函数允许轻松获取给定资源及其相关资源的元数据三元组。无论是通过任何单跳 RDF 属性(get_neighbors_metadata()
)还是通过所选的任何数量的元数据属性跳数(get_relatives_metadata()
)。