DAL for mongoDB

到目前为止,我们的node.js项目使用了一个我们构build的类(cache.js)来保存内存中的各种集合。 数据访问层用于从逻辑中抽象数据,并允许我们稍后轻松添加持久性。 这个dal.js对所有CRUD操作同步调用cache.js。

现在已经到了,我想把MongoDB绑定到DAL而不是这个cache.js。 问题是,mongoDB + node.js的理念是用一个callbackasynchronous调用数据库。

我们是否应该重新devise我们所有的应用程序(包括使用DAL的类)? 执行业务逻辑在每个他们需要的CRUD上使用callback函数是不是太复杂和错误? 保持KISS的最佳做法是什么(我知道mongoose可以帮助,但不是直接)?

根据您的可伸缩性模型,您可以考虑定期同步内存模型。 类似的东西:

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); 

在这种情况下,您可能应该有某种forms的服务器关联(每个分片/用户),以便尽可能避免在写入数据库时​​发生冲突。