我最近一直在學習RavenDB並希望能夠使用它。RavenDB - 規劃可擴展性
我想知道人們在可擴展的方式下構建系統時有什麼建議或建議,特別是分散在不同服務器上的數據,但可以在單個服務器上啓動,只能根據需要增長。
建議,甚至可能在單個實例上創建多個數據庫並在其上實施分片。那麼擴展它只是將這些數據庫分佈在機器上的問題?
我的第一印象是這種方法可行,但我會很樂意聽到別人的意見和經驗。
更新1:
我一直在想這個問題。我認爲我之後「整理出來」的方法的問題在於,在這種情況下,在我看來很難在整個服務器上均勻分佈數據。我不會有一個字符串鍵,我可以在範圍內(A-E,F-M ..)它將用數字完成。
這留下了兩個選項,我可以看到。要麼在邊界上分解它,所以1-50000在碎片1上,50001-100000在碎片2上,但是隨着年齡的增加,像這樣說,你的原始碎片將會減少很多工作。或者,如果您需要將文檔移動到新的分片,它會更改密鑰並打破使用該密鑰的URL,但是一個輪迴盜取分片並將分片ID放入密鑰的策略會受到影響。
所以我的新想法,我再次發表評論,將從第一天開始創建一個分揀系統。它的作用就像將碎片ID填充到密鑰中一樣,但是你可以從一個很大的數字開始,比如說1000,它可以平均分配。然後,當需要將負載分成碎片時,可以說將存儲區501-1000移動到新的服務器上,並寫入碎片邏輯,使1-500進入碎片1,501-1000進入碎片2.然後,當第三臺服務器聯機後,您可以選擇另一個存儲桶並進行調整。
在我看來,這使您能夠分裂成最初創建桶的儘可能多的碎片,從數量和年齡兩方面均勻分佈載荷。無需更改密鑰。
想法?
感謝您的自動分片鏈接,我沒有看到。我想我後來把它整理出來的麻煩在於,我想要一種能夠在服務器之間平衡數據的策略,而不是一個填滿一臺服務器的策略,然後再轉移到下一個。這引發了在添加新文件時在分片之間移動文檔的問題。所以我想在可能的情況下提前做出規劃。 – 2011-05-16 08:10:10
我用這個主題的新思想更新了這個問題。你對這種方法有什麼想法? – 2011-05-17 05:17:38
我不確定你爲什麼需要這一點。您可以隨後添加分片,並且RavenDB將爲您完成這項工作。 – synhershko 2011-05-17 07:52:29