到目前为止,我们的 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/