2011-05-18 47 views
0

我正在计划构建文件编目系统。它会做一些与iTunes对音乐非常相似的功能,但只能与其他类型的文件一起使用。用于构建文件编目系统的数据库

为了澄清,应用程序将有一个文件集合,并将存储关于数据库中的文件的元数据。对于音乐,它将存储参与该特定歌曲的所有艺术家,以及该歌曲已发布的专辑等。

为了便于通过文件和相关元数据的集合搜索,我正在考虑使用数据库。

我正在计划使用C++/Qt4编写此程序作为关于数据库,Qt4和良好C++编码实践的学习练习。

对于这样的任务,您建议使用哪种数据库系统。这是我曾经想过使用的。随意建议别的东西。

  1. MongoDB的
  2. CouchDB的
  3. SQLite的
  4. 元组商店如Redis的或Raik

也许在未来的应用将增长到的东西,其中有多个用户同时访问数据,所以确保一个用户不覆盖其他用户引入的更改的机制将非常有用(我正在考虑类似于git的冲突解决方案)。

编辑标题以回应密切投票。

+0

如果有人会扩大为什么他们认为这应该是封闭的,因为它太主观了,我很乐意尝试编辑问题,使其不那么如此。 – 2011-05-18 21:04:13

回答

1

Mongo和Couch是NoSQL,而SQLite是一个关系解决方案。我认为对于这样一个任务,你最好用像Couch和Mongo这样的文档数据库。

你见过RavenDB吗?它是一个包含冲突解决方案的文档数据库,Map/Reduce查询和全文搜索引擎。它是用.NET编写的,但可以通过HTTP请求访问,您可以在C++中简单地完成这些操作。

+0

您是否会详细说明为什么NoSQL会成为此应用程序的更好选择? – 2011-05-18 20:48:49

+0

我看了一下RavenDB,虽然它可能是一个很好的解决方案,但它依赖于.Net让我犹豫是否要将它用于此项目,因为我正在寻找跨平台解决方案。 – 2011-05-18 21:02:47

+0

因为现在当我们执行无模式数据库时,强制实体进入表和行是没有意义的。我在另外一个环境中写了一些关于这方面的更多内容:http://www.code972.com/blog/2011/05/sisodb-the-wrong-solution-to-the-wrong-problems/。而RavenDB可以在Mono上运行。 – synhershko 2011-05-18 21:09:59