2015-04-23 20 views
0

我正在設計一個系統,它將存儲世界上所有可用的餐館,然後用戶應該能夠對這樣的大型數據集進行通用搜索低能力。對於這個正常的RDBMS是否足夠了,還是應該去像cassandra這樣的大數據框架。我應該如何使用通用搜索來提高效率。什麼是最好的方式來存儲每家餐廳的評論。什麼類型的數據庫應該用來存儲數百萬餐館並查詢它們

+0

許多數據庫和技術都適用於您描述的問題。但是,Stack Overflow不是推薦特定軟件解決方案的網站。請查看提問問題的指導原則。這裏是一個開始的地方:http://stackoverflow.com/help/how-to-ask。 –

+1

我已經看到統計數據表明,全世界每1000人平均有2個餐館。這是一個籠統的概括,因爲像俄羅斯這樣的國家有着適度的餐飲文化,而日本和韓國等國家則有着巨大的餐飲文化。儘管如此,如果我們將這個數字作爲面值,那麼它就會轉化爲全球範圍內的一千四百五十萬個餐館。允許有20%的誤差,並且你有18個餐館。通過適當的分區,並根據您如何管理歷史數據,一個正常的RDBMS可以應對這一點。 – Strawberry

+1

「世界上所有可用的餐館」......鑑於填充數據集將花費數百萬美元,我建議現在撥出一部分資金來建立一個合格的開發團隊並支付適當的設計工作。 – symcbean

回答

0

您可以使用任何RDBMS來存儲您的數據。但對於快速搜索使用搜索引擎,如lucene,它提供各種快速搜索和聚合。

直接使用lucene可能需要更多努力,因此您可以使用圍繞lucene構建的已有工具,如solrelasticsearch

0

所以第一個問題是:您認爲會有多少數據?例如,大數據方法更適合說幾十億條記錄,但當然,如果您沒有正確的硬件和數據庫設計,幾百萬條記錄可能會導致MySQL服務器的性能很差。

NoSQL更適合於非相關的相關數據,我認爲在您的情況下,表格之間會有很多關係(例如,您可以將餐館表與restaurant_comments表具有直接關係(例如外鍵)。

在這種情況下使用MySQL(InnoDB引擎),比如當你刪除一個餐廳將是非常有用的 - 它所有評論可以用它來刪除,節省磁盤空間和時間

如果您計劃使用適當的硬件(專用MySQL服務器或具有負載平衡器的多臺服務器)不超過1億至2億個餐廳,並且設計數據庫(表,rel數據類型和索引),那麼您將擁有出色的性能。

如果您計劃獲得更多數據並且許多用戶查詢數據,那麼您應該考慮使用Apache Hadoop(使用HBase或Cassandra)。

相關問題