簡體   English   中英

如何提高 Firebase 實時數據庫的性能

[英]How to improve performance in Firebase real time database

我們正在 dart 中開發一個應用程序,其中我們需要一次獲取超過 50K 行(在應用程序加載時執行),然后數據將用於應用程序的其他部分以進行進一步計算。 我們正在使用 Firebase 實時數據庫,我們正面臨一些嚴重的性能問題。

目前加載 50K 行大約需要 40 秒(當前使用免費數據庫版本,不確定是否是這個原因),但我們也觀察到,當多個用戶使用該應用程序時,開始需要大約 1 分 20 秒加載 50K 行,峰值達到 100%。

您能否建議我們如何提高 firebase 實時數據庫的性能?

如果我打破兩個集合中的數據但將其保存在同一個 JSON 文件中,這會有幫助嗎?

可能是因為我們正在使用當前免費的數據庫版本進行測試嗎?

我們嘗試在 1 Key 字段的“規則”部分創建索引,但這並沒有太大幫助。 我們有什么辦法可以改善這一點嗎?

可能是因為我們正在使用當前免費的數據庫版本進行測試嗎?

所有Firebase實時數據庫實例均在同一基礎結構上運行。 根據您的項目所依據的計划,沒有任何區別。

您能否建議我們如何提高Firebase實時數據庫的性能?

改善性能的最好方法是僅加載要立即顯示給用戶的數據。 在任何客戶端應用程序中,用戶不太可能查看5萬個項目,更不用說在應用程序啟動時直接看它們了。

如果您需要5萬個項目來向用戶顯示初始數據,那通常意味着您正在以某種方式聚合該數據,並向用戶顯示該聚合。 將數據寫入數據庫時,請考慮進行聚合,並將聚合結果存儲在數據庫中。 然后,您可以僅在每個客戶端中加載該結果,而不是讓每個客戶端進行自己的聚合。

有關更多數據建模技巧,請閱讀NoSQL數據建模,並觀看SQL開發人員的Firebase 我還建議您觀看“ 了解Cloud Firestore” (適用於Cloud Firestore),但其中包含許多適用於所有NoSQL數據庫的重要技巧。

將您用於查詢的field添加到實時數據庫規則。

例如

{
  "rules": {
    "v1": {
            "history": {
                ".indexOn": "refresh_at"
            }   
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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