代码仓库 vs 数据库 vs 文件系统

9
仓库与数据库、文件系统或任何其他类型的存储有何不同之处?我如何通过一些特定的功能来判断这个东西是仓库还是其他东西?
当我说“仓库”时,首先指的是版本控制。但是还有其他例子,比如数字图书馆。当然可能会有其他例子,但所有这些例子都假定仓库是“您可以存储某些内容的地方”。但确切的区别并不清楚,这使得它与其他“您可以存储某些内容的地方”不同。

3
你遇到了什么问题?为什么在问这个问题?是有东西坏掉了吗?丢失了吗?删除了吗?损坏了吗?为什么这很重要? - S.Lott
@S.Lott:有些条件不允许在不损失数据或转换的情况下将相同的对象存储在不同类型的存储中。我只是想知道为什么会这样。我觉得有某种潜在的原则可以区分这些事情。 - altern
这似乎更适合在http://english.stackexchange.com上提问。 - mo.
8个回答

8

“Repository”只是作者选择的一个描述性词语。

我不确定你为什么要问它的含义。这只是一个他们选用的词汇,这样他们就不必说“我们保存您的文件系统位置”的意思了。

什么使存储库与数据库、文件系统或其他任何类型的存储不同?

没有什么不同。它是存储。它是文件系统。它是数据库。这只是一个他们选用的词汇,这样他们就不必说“我们保存您的文件系统位置”的意思了。他们把它缩短为“repository”。

通常,我们将“文件系统”保留给为我们提供持久存储的底层操作系统功能。存储库可能比随机文件具有更多的组织性。但也可能没有。

通常,我们将“数据库”保留给具有更正式API、查询语言以及锁定和某些可靠性功能(如备份和日志)的离散产品。

我如何通过一些特征准确地确定这个或那个是存储库?

你不能。因为编写软件的人决定称它为“存储库”。应用程序开发人员可以将任何东西都称为存储库——数据库、文件系统、单个文件。任何“具有状态”的东西都可以成为存储库。

这只是一个他们选用的词汇,这样他们就不必说“我们保存您的文件系统位置”的意思了。

它的确切差异并不是很清楚

为什么那很重要呢?谁真正关心呢?你有什么问题吗?

为什么要区分哪些文件是“存储库”,哪些是“数据库”,哪些只是文件呢?

您可以拥有被称为“备份”或“保险库”的文件。您可以拥有被称为“集合”或任何开发人员想要称之为的任何东西。

他们可以自由地使用任何描述性术语来替换“我们保存您的文件系统位置”的意思。


5
当我多年前从事仓库软件开发时,普通数据库和仓库之间的区别在于“数据”和“元数据”。
因此,数据库存储数据。而仓库是一种特殊类型的数据库,旨在存储元数据,即描述其他数据的数据。
任何通用数据库软件都可以用作仓库,但元数据的某些特性使得使用专用工具更加理想。通常,数据的粒度很小,有许多与其他数据的交叉引用。记录数可能是可控的。通常需要版本控制和/或内容差异。
由于这些特殊要求,数据库制造商被诱导编写特殊的DBMS系统以支持仓库构建者的需求。(还记得Microsoft RepositoryUnisys's UREP吗?)我已经不在这个领域了,无法告诉您过去十年的进展情况。

1

我的背景是黑莓公司。当我想到数据库时,我会想到SQL结构或类似的东西,即所有数据元素。当我想到存储库时,我会想到存储扫描的纸质文档、电子文件、PDF、照片、语音和视频文件等等。

数据库被优化用于数据。存储库则被优化用于存储对象。


1
我会用“可以存储东西的地方”来补充“……供您和其他人检索”。或者可能重新表述为“您可以存储一组相关物品以供您和其他人检索的地方”。其含义真的很通用。
相比之下,文件系统和数据库具有更多的技术定义:“在计算机中,文件系统是一种存储和组织计算机文件及其包含数据的方法,使其易于查找和访问”。请参见wikipedia entry。数据库是一组逻辑相关的数据,以易于访问、管理和更新的方式进行结构化。

1
从数据库设计师的角度来看,我倾向于将数据库存储库视为用于保存数据库元数据的数据库。例如,表之间的关系,哪些程序访问这些表等,以便可以利用这些信息来评估更改对您的数据库应用程序的影响等。

0

数据库是存储数据的地方,最好以表格形式呈现,并可能包含许多表格进行连接。通过使用查询语言(通常为SQL)生成一些报告可以方便您的工作。需要注意的是,当需要时,数据库通常会经历“结构性”修改。

仓库基本上将链接至少一个数据库,但通常链接到多个数据库。仓库将提供从中选择数据库的选项,以便为用户选择信息(这可能是下拉菜单,或根据您的登录凭据或IP地址自动选择,或者是帮助仓库识别您和您的范围的某些内容)。仓库在用户和数据库之间具有逻辑解释器,因此,即使没有数据库知识的业余爱好者也可以操作它。专家仍然可以使用语言查询来执行某些特定操作,但这不是必要的部分。仓库不会将信息存储到自身中,而是提供一种输入或显示存储在或从链接数据库中获取的信息的方式。需要注意的是,仓库将经历“逻辑”修改或版本控制,以提供修改后的视图、添加功能等。


0

数据以任何方式和目的在数据库中排列,因此存储库和文件系统都是数据库。

术语“数据库”和“关系数据库”有时可以互换使用,但数据库可以是关系型或非关系型的。 SQL 用于关系型数据库。由于数据结构化为嵌套文件,因此文件系统是非关系型数据库。

术语“档案”和“存储库”有时可以互换使用。当期望保留信息时,它是一个档案。当期望访问信息时,它是一个存储库。


0
在数据库方面,你必须更加精确。它是关系型数据库、面向对象数据库还是大型持久化哈希表?对我来说,文件系统也是一种“数据库实现”(分层和基于目录/文件)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接