2011-03-09 53 views
2

我正在构建一个网站,实现可应用于数据集的过滤器。请允许我解释这些过滤器。在这种情况下,它将成为一个拥有房屋的网站。最佳过滤器数据库系统

Number of rooms: 
    2 or less (2271) 
    3 or more (4283) 
    4 or more (2223) 
    5 or more (1213) 

Price range 
    More then {fill in number} 
    Less then {fill in number} 

Type 
    For sale (2938) 
    For rent (1029) 

这几天你会更频繁地看到它。这将是总共约7个过滤器。

现在我不知道我应该使用什么样的数据库。将会有大约10000个实体和每日更改(约占数据集的1%)。我正在考虑这两个是:

MongoDB面向

首先的对象,我是新来的这些 - 所以called-面向对象的数据库。但我听过一些关于他们的好消息。他们的计划较少,可能在工作中非常快。

MySQL关系数据库

我以前使用了MySQL在此情况下,性能是可以接受的。我使用了一个EAV-Model,它使数据库更加动态。我使用InnoDB引擎和关系来保持完整性。

问题是,当我使用多个过滤器的子查询堆积起来,这发生在我选择过滤器时计算可能性的数量。

在这种情况下对性能有什么看法,dbms会表现得更好?

回答

1

您可以使用。
如果你在mysql中使用一个非规范化的表(即没有连接),它与mongoDB中的一个对象类似,虽然很难查询。
因此,如果能够以合理的方式将您的数据去归一化,那么请使用Mongo,否则使用RDBMS。

+0

问题是,有些房屋出售和其他房屋出租,例如。所以这些房子有不同的属性。非规范化将是一种选择,但我想我会比较慢。 – 2011-03-09 14:01:53

+0

我的直觉就是使用OO/NoSQL数据库。 – 2011-03-09 14:08:54

1

拥有10,000条记录,MySQL的性能应该不错。既然你已经熟悉MySQL,我会建议你使用它。您可以按照here的描述尝试GROUP BY ... WITH ROLLUP,以仅使用一个查询完成工作。 MySQL以及你的客户需要做一些额外的工作,但我认为这将被查询数量的减少所抵消。