[英]LokiJS inconsistent with updates & reads while working with 50k+ reads and writes
目前我們正在使用 nodeJS 和 LokiJS。 因為我們的應用程序正在處理實時數據; 與外部 NoSQL/Relational DB 通信會導致延遲問題。
所以我們決定使用內存數據庫,即 LokiJS。
LokiJs 擅長處理包含 500-100 個文檔的集合。 但是當涉及到更新和並行讀取時; 情況更糟。
這意味着我們的供應商之一發布了 Kafka 端點以使用該提要,並將其再次提供給某個外部服務; 從 Kafka 主題,我們每秒收到 100-200 個事件。 因此,每當我們收到 Kafka 事件時,我們都會更新現有的集合。 由於 delta 更新過於頻繁,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)
}
}
你能建議我嗎,我在這里遺漏了什么。
我認為您的問題在於您在每次更新時都保存數據庫。 您已經指定了一個autoSave
和一個autoSaveInterval
,因此 LokiJS 將定期保存您的數據。 如果您還強制從每次更新中保存,則會阻塞進程,因為 JS 是單線程的,因此它必須處理大部分操作(當保存操作傳遞給操作系統以獲取文件保存位時,它可以繼續運行) .
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.