DAL for mongoDB

时间:2012-07-29 14:17:10

标签: node.js mongodb data-access-layer n-tier-architecture

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

现在时机已到,我想将MongoDB挂钩到DAL而不是此cache.js。 问题是mongoDB + node.js的理念是用回调异步调用DB。

我们应该重新设计所有应用程序(包括使用DAL的类)吗? 执行业务逻辑以在他们需要的每个CRUD上使用回调是不是太复杂和错误? 维持KISS的最佳实践是什么(我知道猫鼬也有帮助,但不能直接帮助)?

1 个答案:

答案 0 :(得分: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);

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