到目前为止,我们的node.js项目使用了我们构建的类(cache.js),它在内存中包含各种集合。数据访问层用于从逻辑中抽象数据,并允许我们稍后轻松添加持久性。这个dal.js为所有CRUD操作同步调用cache.js.
现在时机已到,我想将MongoDB挂钩到DAL而不是此cache.js。 问题是mongoDB + node.js的理念是用回调异步调用DB。
我们应该重新设计所有应用程序(包括使用DAL的类)吗? 执行业务逻辑以在他们需要的每个CRUD上使用回调是不是太复杂和错误? 维持KISS的最佳实践是什么(我知道猫鼬也有帮助,但不能直接帮助)?
答案 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);
在这种情况下,您应该具有某种形式的服务器关联(每个分片/用户),以便在尽可能多地写入数据库时尽量避免冲突。