2012-01-24 53 views
7

我想爲我的應用選擇後端Web服務。閱讀這些服務的文檔(Parse,Proxomo,Cocoafish,StackMob等)顯示,其中一些提供以無模式形式存儲數據,而其他提及該模式必須先指定。我明白數據的模式是什麼,希望模式很容易使用,但是想知道每一個的優劣。任何解釋將不勝感激。無模式數據存儲與模式數據存儲的優勢

回答

6

最大的區別是可擴展性。

具有模式的數據存儲解決方案比架構免費數據存儲解決方案更難分配。它很容易複製(模式免費)鍵值對的容錯。它非常容易在整個節點上分發副本以實現快速讀取,並且更容易提供快速寫入和最終一致性。如果您正在管理自己的數據庫,這意味着當您需要擴展到多個服務器時,管理無模式解決方案將變得更加容易。如果您使用的是服務,這意味着無模式解決方案通常更便宜,速度更快。

當您需要跨各種數據集或表的事務和一致性時,模式釋放的問題就出現了。所有這些都必須在代碼中完成。

因此,底線是:如果你需要快速訪問便宜的它是免費的模式體積龐大的數據。另一方面,如果您的數據大小和負載比基於模式的系統要好,

如果您需要幫助選擇哪些服務一起去,一個更好的方式來決定是做對您的申請讀/ sec寫入/秒,預期數據大小分析,然後選擇哪種解決方案更便宜。所有這些服務可能會擴展到您的負載,但成本將成爲決定性因素。

1

我不是這個真正的專家,但是從我讀,這裏就是我的感覺:

  • 的大部分時間,無模式數據庫,使您能夠輕鬆地存儲鍵/值,JSON對象。因此,將在應用程序中操作的對象與數據庫存儲聯繫起來很容易。 您不必使用ORM(對象關係映射器),因爲您的對象直接採用數據庫接受的格式(大多數情況下,從應用中的對象生成JSON非常容易)

  • 如果你沒有任何模式,您可以輕鬆地調整(增加/刪除)你想在你的數據庫來存儲對象的屬性,而無需經過更新模式,並從該數據的遷移舊的模式到新的模式。

  • 在CON的無模式,我的感覺是,你不能表達儘可能多的約束,你可以做標準的SQL來檢索數據(你不做任何連接等),所以也許你必須真正檢查如何你想從db數據中獲取東西,看看無模式引擎提供了什麼。

+0

非常感謝Yonel的想法和解釋。我不僅對網絡服務不熟悉,而且對編程一般,所以我可能是錯的,但是(無需重複您的第三點)無模式數據存儲服務實際上是許多數據檢索的過濾器。我會等待一段時間,然後將你的答案標記爲正確並給予獎勵。 – chatur