免责声明:让我知道如果这个问题更适合serverfault.com


我要用于存储信息的音乐,具体是:

  • 类型
  • 的艺术家
  • 专辑
  • 的歌曲

这些信息将被用于在网络应用程序,并且我希望人们能够看到所有的歌曲相关的专辑,专辑关联到一个艺术家和艺术家相关联的风格。

目前,我正在使用MySQL,但在此之前,我做出一个决定开关我要知道的:

  1. 多么容易,是缩放水平?
  2. 它是更容易管理,比SQL基础的解决方案吗?
  3. 将上述数据,我要存储太难做到的架构-免费的吗?
  4. 当我认为关联,我立刻觉得关系数据库管理系统那样;可以数据存储在一些东西喜欢CouchDB,但仍然有某种关联,如上所述?
  5. 我的网应用程序要求复制,如何CouchDB或其他人手柄的这个吗?
有帮助吗?

解决方案

这种信息是非常适合文件数据库。如有多少真实世界的数据,它不是固有关系,因此鞋-霍宁它变成一种关系模式将带头痛的路线(即使采用一个奥姆-我讲的经验)。Ubuntu已经使用CouchDB用于存储音乐的元数据,以及其他事项外,在他们的 一个产品.

把剩下的一个问题-通过一:

  1. 水平放 方式 更容易比与RDBMS。这是很多的原因之一大网站,如Facebook,推荐和LinkedIn使用,或正在积极调查的架构下的数据库。例如,片(分数据的不同系统中的节点)精美的作品感谢的一个概念被称为 最终一致性;即,数据可能不一致的节点有一段时间,但是它最终会解决保持一致状态。
  2. 这取决于你是什么意思通过的"管理"...安装一般是快速和容易完成。没有任何用户账户配置和安全(这是不是一般在应用程序的业务逻辑层)。工作文件DB实时可有意思:有没有临时查询,在CouchDB,例如;你必须使用被褥UI或与它通过HTTP请求。,但是,并支持特别查询。
  3. 我不应该这样认为。巴斯蒂安的答案提供了一个很好的例子JSON文件serialising一些数据。美丽的无架构DBs是这一领域可缺少一个文件,并存在于另一个,或者该文件可以完全不同于另一个。这将删除的许多问题涉及与RDBMS' null 值,它是多种多样的。
  4. 是的,该协会的存储为嵌套文件,其中分析在应用程序为目的的引用,集合,等等。在巴斯蒂安的回答,"歌曲"的关键标识一系列的首歌的文件。
  5. 这是非常类似于你的第一个问题是关于横向扩展(水平扩展和复制是相互交织在一起).作为CouchIO博客Bastien提到的国家"的复制的...已经被烤成CouchDB从一开始。".我的理解是,所有的文档数据库处理复制良好,并且这样做更易于它是建立在一个RDBMS。

是你决定的你想存储的歌曲文件本身的元数据,你可以做这也是在CouchDB,通过提供这首歌的文件作为附件的文件;更进一步,你不会有任何的模式不一致的结果这样做,因为没有架构!

我希望我没有太多的失误;我是相当新的文件DBs自己。

其他提示

你的数据似乎理想文件为导向的数据库。
文件的例子:
{
"type":"Album",
"artist":"ArtistName",
"album_name":"AlbumName",
"songs" : [
{"title":"SongTitle","duration":4.5}
],
"genres":["rock","indie"]
}

和复制是一个couchDB最酷的功能( http://blog.couch.io/post/468392274/whats-new-in-apache-couchdb-0-11-part-three-new )
你可能也想看看它.

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