目前我们正在使用 nodeJS 和 LokiJS。因为我们的应用程序正在处理实时数据;与外部 NoSQL/Relational DB 通信将导致延迟问题。
所以我们决定使用内存数据库,即 LokiJS。
LokiJs 擅长处理包含 500-100 个文档的集合。但是当涉及到更新和并行读取时;情况更糟。
这意味着我们的供应商之一已发布 Kafka 端点以使用提要,并再次将其提供给某些外部服务;从 Kafka 主题中,我们每秒收到 100-200 个事件。因此,每当我们收到 Kafka 事件时,我们都会更新现有集合。由于增量更新过于频繁,LokiJS 集合更新无法通过读取正确完成,从而导致不一致的结果。
这是我的收藏创建片段。
let db= new loki('c:\products.json', {
autoload: true,
autosave: true,
autosaveInterval: 4000
});
this.collection= db.addCollection('REALTIMEFEED', {
indices: ["id", "type"],
adaptiveBinaryIndices: true,
autoupdate: true,
clone: true
});
function update(db, collection, element, id) {
try {
var data = collection.findOne(id);
data.snapshot = Date.now();
data.delta = element;
collection.update(data);
db.saveDatabase();
} catch (error) {
console.error('dbOperations:update:failed,', error)
}
}
你能建议我吗,我在这里有什么遗漏吗?