2015-10-29 183 views
1

我有一個活動記錄表,名爲修訂版(顯示在下圖中)爲大型學習管理系統構建,主要記錄表格上的CRUD操作記錄(例如誰在什麼時間做了什麼對象)。處理MySQL和PHP/Laravel中的數百萬條數據記錄

revisions table

此表最多可包含數據的3M記錄。我想在PHP/Laravel的前端爲此構建一個搜索功能。

現在我的問題是,我應該考慮什麼東西建立搜索功能與表高性能的數以百萬計的數據的記錄,什麼都在代碼級,數據庫級的東西,還是有第三方的東西支持這些問題?

我有用PHP/Laravel,Python/Django,Ruby等構建系統的經驗。但是我從來沒遇到過像這樣的情況,處理數百萬條記錄的數據。所以請記住我的知識/經驗水平。我沒有這方面的經驗。

注:搜索將是一個高級搜索,使用戶能夠使用不同的標準和參數,它改變了對象,誰也改變了它,當它改變搜索等

讓我知道如果我的問題還不清楚。

+0

雖然你的問題很清楚,但它既非常廣泛,也會吸引以意見爲基礎的答案,使其成爲本網站的主題。我正在投票結束它。 –

+1

這是一個有點寬泛的問題。你能解釋我可以問哪裏? –

回答

3

我建議您查看https://www.elastic.co/products/elasticsearch,並在保存到主數據庫時將活動記錄保存到其存儲空間。那麼你可以輕鬆搜索任何字段。 Elasticsearch可以存儲一個模式免費的JSON文檔,如果您更喜歡更多的SQL方式,還有另一個搜索引擎 - http://sphinxsearch.com/

+0

因此,如果我使用elasticsearch,CRUD操作需要在兩者上完成?我的MySQL DB和Elasticsearch實例? –

+0

是的。 Laravel有特殊的模型監聽器http://laravel.com/docs/5.1/eloquent#events,因此當您更改基礎模型對象時,您可以輕鬆地在其他存儲區中CRUD數據 – lifekent

3

插入一個zillion行到表中沒有問題。當您嘗試在表上執行不重要的SELECT時,會出現性能問題。你提到「搜索」;你將不得不限制'用戶'可以搜索的內容。但至少可以刺他們可能想要搜索的東西。

您提到了「搜索對象」,但我沒有看到名爲object的列。給定對象可能有多少行?你需要所有的行嗎?或選定的? (無論表的大小如何,對象上的INDEX都可能使查詢更加高效。)

第三方軟件有時妨礙處理真正大的表。謹防。

相關問題