node.js - MongoDB 的 DAL

标签 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 的理念是通过回调异步调用数据库。

我们是否应该重新设计所有应用程序(包括使用 DAL 的类)? 强制业务逻辑在他们需要的每个 CRUD 上使用回调是不是太复杂和错误了? 维护 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);

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

关于node.js - MongoDB 的 DAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709927/

相关文章:

json - 如何编写查询以检索匹配的每个子文档数组

mongodb - 如何从 MongoDB 文档中的双重嵌套数组中删除元素

asp.net - 为 ASP.NET 网站创建 DAL

mysql - Qt qtablewidget数据录入、保存和访问

Node.js v0.10 : Replace certain bytes in file without reading whole file

python - 如何将客户端的 Python 套接字连接到 Node.js/socket.io?

javascript - 从今天之前的日期数组中聚合

node.js - Sequelize : password cannot be an array or an object

javascript - 使用 Promise.race 和 setImmediate 确定 Promise 状态

c# - 无法使用具有亚音速数据访问权限的 dll