Checksum-based存储
Artifactory是为二进制文件的优化管理而构建的,能够支持软件开发领域中出现的任何包格式。支持这些特性的关键特性之一是基于校验和的存储。

基于校验和的存储使用Artifactory用来管理二进制文件的两个基本组件:文件存储和数据库。文件存储是二进制文件物理存储的地方,Artifactory支持多种存储解决方案,如本地文件系统、网络文件系统和云提供商,例如S3,谷歌云存储以及微软Azure。数据库将文件的SHA1校验和映射到其物理存储,存储库中对文件的许多操作都作为数据库中的事务实现。使用基于校验和的存储通过数据库访问二进制文件可以优化存储库管理的许多方面。
重复数据删除:即使一个文件存在于组织存储库中的许多地方,它实际上也只在物理上存储一次。文件的多个副本由数据库中对文件存储库中单个副本的相应引用表示。因此,整体文件存储的大小可以显著减小。
瞬时复制和移动:复制和移动操作实际上是瞬时的,因为它们不涉及文件系统中的任何活动,而只是在数据库中添加和删除引用。
高效的上传、下载和复制:在将文件从一个位置移动到另一个位置之前,Artifactory会发送校验和头。如果目标文件已经存在,即使它们存在于不同的路径下,它们也不会被传输。
文件系统性能:使用基于校验和的存储不需要对文件系统进行写锁。文件永远不会被覆盖,只会在文件系统空闲时运行的垃圾收集过程中在后台真正删除。
快速而强大的搜索:使用基于校验和的存储,所有存储库信息和工件元数据都存储在优化的数据库索引中。这意味着数据总是最新的,而且搜索速度非常快。
灵活的布局:使用基于校验和的存储,数据库是实际存储和显示布局之间的间接层,这意味着任何布局都可以支持——无论是标准布局,如Maven1, Maven2, npm, NuGet, Gradle, Ivy等,还是任何其他用户可以指定的自定义布局。
基于校验和的存储的好处是毋庸置疑的。从访问二进制文件时性能的极大提高,到文件存储使用量的显著减少,再到对市场上可能出现的任何打包格式的支持,基于校验和的存储是优化CI/CD工作流程的重要因素。
