2012-07-29 44 views
1

到目前爲止,我們的node.js項目使用了一個我們構建的類(cache.js)來存儲內存中的各種集合。數據訪問層用於從邏輯中抽象數據,並允許我們稍後輕鬆添加持久性。這個dal.js對所有CRUD操作同步調用cache.js。dong for mongoDB

現在已經到了,我想將MongoDB綁定到DAL而不是這個cache.js。 問題是,mongoDB + node.js的理念是用回調異步調用數據庫。

我們是否應該重新設計我們的所有應用程序(包括使用DAL的類)? 執行業務邏輯在每個他們需要的CRUD上使用回調函數是不是太複雜又錯誤? 維持KISS的最佳做法是什麼(我知道貓鼬可以幫助,但不是直接)?

+0

我終於意識到我們構建的DAL不推薦用於節點。即使當數據庫是基於redis的(更快的數據庫),它也不可擴展 - 請參閱http://stackoverflow.com/questions/6099090/is-there-a-blocking-redis-library-for-node-js – whadar 2012-08-01 14:11:31

回答

1

根據您的可伸縮性模型,您可以考慮定期同步內存模型。類似的東西:

var model = { 
    x: 5 
}; 

setInterval(function() { 
    if (is_model_changed(model)) write_to_db(model); // <-- this can conflict with other changes 
    model = read_from_db(); 
}, 5000); 

你或許應該有某種形式的服務器關係(每個碎片/用戶),在這種情況下,所以要儘量避免衝突寫入數據庫儘可能時。