【问题标题】:Two types of data, so two type of databases?两种类型的数据,那么两种类型的数据库?
【发布时间】:2013-08-22 12:47:13
【问题描述】:

对于一个社交网站,我需要提出一个数据库。该应用程序是用 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 当然是不错的选择,但它并不适合我们的全部需求。它可以用于第二种数据(在上面的列表中),即用于存储固定的列/数据集,但不适合存储动态列表(即第一种)。 那么我是否应该使用第二个数据库来仅适合该类型的数据(两个数据库每个只包含最适合它们的数据)?(有人建议 Cassandra 存储第二类数据。) 要走的路是什么?

【问题讨论】:

    标签: mysql sql database performance nosql


    【解决方案1】:

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

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

    对临时数据使用键值存储。

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

    【讨论】:

    • 我是一个关系数据库类型的女孩,我同意你的观点,在这种情况下似乎根本不需要关系数据库。
    • 我想知道文档数据库是否会像传统数据库一样在许多客户端(连接和查询)上扩展(保持性能)。例如,如果 1 个客户端写入,MongoDB (docs.mongodb.org/manual/faq/developers/…) 将锁定.. MySQL以 innodb 为例,使用记录锁定,因此如果您使用 innodb facebook 补丁,这将在高流​​量网站上更好地扩展,您会觉得这个具有讽刺意味......文档数据库更适合处理大量数据的快速分析查询几个客户..
    • @Burhan Khalid:除了上述疑问之外,您能否在回答中澄清/添加更多内容,为每个类别的数据库提供一些建议/示例
    • 现在不用担心规模了;因为缩放是一个已经解决的问题。担心为您打算存储的数据(更重要的是,为您打算编写的查询)找到正确的工具
    • @HLGEM:我不知道我的情况与其他情况有何不同,但许多其他 SN 站点也将帖子数据存储在 MySQL 表中,实际上是第二种数据(在问题)是帖子数据,用户个人资料数据等。那么为什么mysql至少不适合我?
    猜你喜欢
    • 2011-05-28
    • 2017-06-12
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多