我在Web應用程序的高層次的設計,具有以下特點的工作:頻繁大,多記錄更新
- 數百萬條記錄
- 重索引/搜索按不同標準
- 可變文檔架構
- 定期更新的10K塊 - 一次
- 數據需要更新 期間保持高度可用200K記錄
- 必須水平地擴展
今天,這個應用程序存在於MySQL和我們從幾個巨大的問題的困擾,特別是它是具有挑戰性的適應靈活的模式,而大批量更新鎖定數據10 - 每次15秒,這是不可接受的。在MySQL環境中,可以通過更好的數據庫設計來解決其中一些問題,但是,我正在尋找更好的「下一代」解決方案。
我從來沒有使用MongoDB,但它的功能集似乎與我正在尋找的最接近的匹配,所以這是我的第一個感興趣的領域。它有一些令我興奮的事情,比如數據分片,在單個語句中查找更新返回的能力,以及NoSQL的模式靈活性。
有兩件事情我不知道,不過,與MongoDB的:
我似乎無法找到有關的 更新大型數據集的併發性固體 信息(見我 以上使用情況),所以我有一個難 時間瞭解如何可能 執行。
我需要打開的文本搜索
這第二個要求給我帶來了Lucene的(或可能到Solr,如果我一直是外部的)作爲搜索商店。我讀過一些Lucene被完全用來代替MongoDB等NoSQL數據庫的例子,這讓我想知道,如果我試圖在單個應用中使用兩者,我是否過於複雜化 - 也許我應該直接存儲所有東西在Lucene中並運行它?
鑑於上述要求,是否看起來像MongoDB和Lucene的組合會使這項工作有效?如果沒有,嘗試在Lucene中完全解決它會更好嗎?