簡體   English   中英

LokiJS 在處理 50k+ 讀取和寫入時與更新和讀取不一致

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM