2011-03-09 102 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以及你的客戶需要做一些額外的工作,但我認爲這將被查詢數量的減少所抵消。