簡體   English   中英

如何處理非常大的數據庫,不要錯過性能?

[英]How can I handle a very large database and do not miss the performance?

如果我想開發一個應用程序,我會擔心在用戶數量和存儲數據增加后的性能 實際上我不知道實現一個程序的最佳方法是什么,它適用於非常大的數據,並做一些事情,如搜索,實時查找和接收用戶信息,搜索文本等,沒有任何延遲

讓我來解釋一下這個問題

例如我選擇' Mongodb '作為數據庫並假設我們至少有500萬用戶並且用戶想要登錄系統,用戶已經發送了用戶名和密碼
我們應該做的第一件事是找到具有該用戶名的用戶然后檢查密碼,在mongodb中我們應該使用類似'find'的方法來獲取用戶的信息,如下所示:

Users.find({ username: entered_username })

然后獲取用戶信息,我們檢查密碼,但'find'方法應搜索 百萬用戶之間的用戶名,這是一個很大的數字,如果任何人請求身份驗證,應該為每個用戶運行此方法,這會導致重處理系統

但遺憾的是,這個問題只適用於尋找用戶之類的問題,如果我們決定搜索文本,當我們在數據庫上有大量文本和帖子時問題就更大了

我不知道像facebook和linkedin這樣的大公司在如此短的時間內搜索了數百萬的數據。 實際上我不想創建像Facebook或更多的東西,但我有大量的數據,我正在尋找一個很好的方法來處理它

是否有任何框架或其他東西可以幫助我處理數據庫上的大數據,或者是否存在一種在數據庫上實現數據的方法,以便我們快速,快速地搜索和查找數據? 我應該使用特定的數據結構嗎?

我創建了一個開源項目elasticsearch ,它幫助我們更快地搜索,但我不知道我是否找到了有彈性的東西我怎么能在mongodb上找到它來做更新數據的事情,如果我使用彈性搜索我也應該使用mongodb或不!? 我可以同時使用彈性作為數據庫和搜索引擎!
如果我一起使用elasticsearch和mongodb,那么我應該有兩份我的數據,一份在mongodb,一份在elasticsearch中! 和這兩個分開的數據副本:(我希望在mongodb中搜索彈性搜索,不必創建兩個數據副本

謝謝你,如果你幫我找到一個好方法,並了解我該怎么做。

當你談到性能時,它通常歸結為三件事:

  • 你的設計
  • 你對“快速”的定義,以及
  • 你願意支付多少錢

你的設計

MongoDB非常棒,如果你想迭代數據模型,可以水平擴展,如果使用得當,速度非常快。 另一方面,Elasticsearch不是數據庫。 但是,搜索速度非常快。 如果您確切地知道數據的外觀,並且不希望它發生太大變化,或者本質上是關系型的,那么傳統的關系數據庫將非常有用。

例如,您可以使用關系數據庫進行用戶登錄,將MongoDB用於其他所有內容,並將Elastic用於文本可搜索數據。 沒有規則告訴您將所有內容保存在單個數據庫中。

確保您了解索引,並知道如何充分利用它。 如果您沒有正確設計數據庫,最快的硬件將無法幫助您。

結論:使用您需要的任何工具,必要時組合,但要了解它們的優點和缺點。

你對“快”的定義

“快速”如何快速適合您的應用程序? 100毫秒足夠快? 10毫秒足夠快嗎? 請記住,您對機器的性能要求越高,它就會越貴。 您可以通過更好的設計獲得更多性能,但設計只能到目前為止。

通常這歸結為您和您的客戶可接受的內容。 並非每個應用程序都需要低於10毫秒的響應時間。 有很多應用程序可以容忍在幾秒鍾內返回的查詢。

結論:確定什么是可接受的,並進行相應的設計。

你願意支付多少錢

當然,這一切都取決於你願意為所有需要托管所有東西的硬件支付多少錢。 MongoDB可能是開源的,但你需要一些地方來托管它。 此外,你不能指望魔術。 您不能每秒丟棄數千個查詢和更新,並且當您只給它1 GB的RAM時,它會非常快速。

結論:如果您希望您的應用程序成功,從不低於節省資金。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM