2017-08-05 45 views
1

這是我在stackoverflow的第一個問題,我希望一切正常。這是關於MySql和/或ElasticSearch的一般問題。MySql和ElasticSearch文件服務

例如,我正在計劃一個音樂門戶網站,用戶可以上傳他喜歡的mp3文件。

使用案例:

  1. 用戶擁有一個賬號和可以管理個人資料(個人的一些信息顯示公衆對所有其他用戶)
  2. 用戶可以上傳MP3文件,並與一些標記它們關鍵詞更好的搜索。
  3. 文件將在磁盤上的保存
  4. 其他用戶有評論MP3文件例如YouTube評論功能
  5. 用戶有方法可行不喜歡/喜歡的MP3文件的可能性。

我的考慮是使用MySql進行帳戶,配置文件和文件評論。 對於標籤文件搜索由於更好的搜索功能,我會使用EleasticSearch數據庫。

現在我的問題: 這是一個很好的方法嗎?或者我應該只使用其中的一種(MySql或EleasticSearch)。我不確定哪個數據庫最適合用例。 或者可能是位於EleasticSearch內部的文件評論。

+0

你好@Jayser,歡迎來到SO!感謝您嘗試創建一個好問題的努力。你甚至可以找到關於[如何提問]的更多信息(https://stackoverflow.com/help/how-to-ask)。 –

+0

不幸的是,像「哪個更好/哪個應該使用」這樣的問題在stackoverflow上不太適合,因爲它沒有真正的答案。這將取決於個人喜好,因爲所有3個選項(以及選項4到22:使用不同的東西)都是可行的(這可能已經是您需要/想要聽到的所有內容)。說只使用1個系統而不是2個對你來說更容易些,因爲你可能會發現一些事情在mysql中更容易實現,而另一些更容易實現,另外設置2個系統的額外努力可以平衡自身總計。 – Solarflare

+0

感謝您的回答。我認爲像我這樣的用例很容易回答。我期待着大量的數據,如評論和標籤,我希望最快的方式進行文本搜索。我需要將類似文件的建議傳送給某個文件。像youtube一樣。例如:我搜索帶有3個標籤的文件,然後查看所有匹配最好的文件和只匹配一個標籤的文件,以及未包含任何標籤但搜索文件的用戶看到的附加文件。當然,按日期和相關性排序。 – Jayser

回答

0

取決於場景。如果你在維護2個不同的數據庫時沒有問題。您可以使用MySQL來存儲帳戶和配置文件信息。

的MySQL架構:USER_INFO:用戶ID,用戶名,名字,姓氏, EMAILID

Mp3_Info:mp3_id,mp3_title,created_by_user_id,CREATED_DATE, location_on_disk,mp3_tags,藝術家,流派

Comments_Info:COMMENT_ID ,評論,評論_by_used_id, comment_time

現在你可以存儲tag_data,mp3_title和d彈性搜索中對應的mp3_id。這將支持根據標籤或標題搜索mp3。您還可以選擇在基於註釋的mp3_id和其他字段的elasticsearch中存儲註釋。

這是一種方法,您可以嘗試更多的方法。

+0

非常感謝您的回答。我沒有維護問題,因爲我會使用AWS或類似的服務。我認爲最好的解決方案是混合兩種技術。我會使用elasticsearch進行全文搜索。我認爲一個好方法是存儲所有在彈性搜索中搜索,聚合和排序所必需的信息。 – Jayser

+0

如果你想要,你可以存儲所有的MP3信息只有彈性。通過使用SQL僅用於用戶和配置文件信息。 – sourabh1024