我有一个想法简单的应用程序,其中将监测组的文件夹,索引的任何文件,它的发现。Gui将请允许我迅速标签的新的文件和将它们移到一个单一的数据库,用于储存并提供一个简单的机制,用于查询的数据库,通过标记、姓名、文件类型和日期。在那一刻我有大约100多个文件在几个移动硬盘驱动器,该数据库将至少有那么大。如果可能的话,我想支持全文搜索的嵌入的二进制和文本文件。这将是一个单一的用户应用程序。

不试图开始一个数据库的战争,但什么样的开放源数据库,是不是对我最好?我很确定SQLLite是表,但我可能是错误的。

有帮助吗?

解决方案

我仍然在研究这个选择我自己的一个项目,但是 CouchDB 可能是值得看一看。

其他提示

为什么储存的文件的数据库?只是储存你的元数据和文件。如果你需要复制他们到一个新的位置由于某些原因,只是做为一个文件系统中复制。

一旦你去除文件的内容,那么任何主管的数据库将能够处理元数据的几百万个文件。

我倾向于将文档存储的元数据。其中一个原因,是关系的完整性。你不能容易地行动的文件或修改该文件没有行动正在促成通过该数据库。我确信,我可以处理这些问题,但它并不作为清洁,因为我想和我的经验是,大多数供应商可以处理大量的二进制数据库中的数据,这些天。我猜我是想知道,如果PostgreSQL或MySQL有任何明显的优势在这些领域中,我主要是熟悉Oracle。无论如何,谢谢你响应,如果该数据库知道那里的外部文件还将便于把该文件在至稍后的日期,如果我想要的。另一方面的问题是,如果任一数据库更容易的工作与当使用蟒蛇。我假设这是一个洗。

我总是不想回答"不",但你会更好索引用分类:设(PyLucene).这并存储在数据库,而不是文件内容几乎总是建议。

添加到,没有这些数据库发动机将储存Lob在一个单独的数据空间(他们将被埋在表中的数据空间)因此,任何这些发动机应该执行几乎同样好(以及除了sqllite).你需要移动到Informix,DB2,Sql server或他人得到这样的二元物体的处理。

几乎任何的他们会的工作(即使SQLLite是不是意味着要使用一种并行的多用户环境,它可能是一个问题...)因为你不想要指数的实际内容的文件。

唯一的限制因素是最大的"分组"的大小定DB(通过报我提到的查询/响应)。通常这些限制的约2MB,意思,你的文件必须小于2MB.当然你可能会增加这种限制,但是整个过程而不是效率低下,因为例如插入一个文件,你会有:

  • 阅读整个文件放入存储器
  • 变换的文件中查询(其通常意味着进制编码,因此增加一倍的大小从一开始)
  • 执行产生查询(其本身的装置的数据库,它具有分析它)

我会去一个简单的数据库和相关文件存储使用一个命名的公约》,这使得他们容易找到(例如基于初级键)。当然这种设计是不是"纯粹的",但它将执行得更好,也更容易使用。

你为什么要浪费时间模仿的东西,文件系统应该能够处理?更多的存储+查询是你的答案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top