2013-08-22 72 views
1

对于社交网站,我需要提出一个数据库。该应用程序是用Java编写的&最初将托管在VPS上。两种类型的数据,所以两种类型的数据库?

大致划分存在两种类型的数据存储在后端:

1. dynamic lists which are: 

    - frequently appended to 
    - frequently read  
    - sometimes reduced  

2. fixed set of data keyed by a primary key(sometimes modified). 

"For serving any page, I need to have access to both kind of data!" 

所要求的所有其他SN网站,我们需要考虑在未来易结垢,但除了我们团队&资源也非常有限。我们希望从1或2个中型VPS &开始添加更多的服务器作为数据&负载增长。

就我个人而言,我通常更喜欢大型社区使用的东西,所以当然MySQL是一个很大的选择,但它并不适合我们的整个需求。它可以用于第二类数据(之间的列表),即用于存储固定的一组列/数据,但不适合存储动态列表(即第1种)。 所以我应该使用第二个数据库只适合这种类型的数据(两个数据库,每个数据库只包含最适合他们的数据)?(有人建议Cassandra存储第二种数据。) 要走的路是什么?

回答

1

当您需要事务完整性并且您有一组固定关系映射时使用传统数据库。

当您有多个要存储在平面结构中的对象属性时,请使用文档数据库;或模式(对象的属性)可能随时间而改变的地方。这是传统数据库系统的弱点之一;改变模式是可能的,但有很多性能副作用。在文档数据库中,被存储对象的属性对系统的整体性能几乎没有影响 - 更实际的是,可以修改存储在对象(它们的属性或“列”)上的信息,而不必担心模式。

对临时数据使用密钥值存储。

从你所描述的,我没有看到任何需要关系数据库的用例。

+0

我是一个关系数据库类的女孩,我同意你的看法,在这种情况下似乎根本不需要关系数据库。 – HLGEM

+0

iam想知道文档数据库是否可以像传统数据库一样在许多客户端(连接和查询)上进行扩展(保持性能)..例如,MongoDB(http://docs.mongodb.org/manual/faq/developers/#how-does -mongodb-provide-concurrency)将锁定,如果1个客户端写入。MySQL与innodb例如使用记录锁定,所以这将在高流​​量网站上更好地扩展,如果你使用innodb facebook补丁,你会感觉到这个讽刺...文档数据库更多地被设计为处理一对夫妇客户的大量数据集上的快速分析查询。 –

+0

@Burhan Khalid:除了上述疑问,你还可以澄清/添加更多的答案,给出一些建议/例子每个类别的数据库 –