2017-04-18 38 views
0

我想知道如果批處理請求數據存儲將保存記錄順序時請求完成?谷歌雲數據存儲批處理操作序列

我使用標準的谷歌雲/數據存儲客戶端庫來執行批量獲取請求,像這樣(來自Datastore的文檔)。

const keys = [taskKey1, taskKey2]; 

datastore.get(keys) 
    .then((results) => { 
    // Tasks retrieved successfully. 
    const tasks = results[0]; 

    console.log(tasks); 
    }); 

我懷疑結果的排列順序與按鍵數組的順序相同,但是在我的工作示例中並不是這樣。

那麼,我做錯了什麼,或者它是否Google Datastore不保留批量操作的順序?

回答

1

要獲得有序結果,您需要使用查詢。首先,按key值過濾,然後按您要的屬性排序。

看到這些文檔的更多信息:

How to filter by Key

How to order results

+0

其實這是不是我在尋找。我需要得到這個實體使用這個鍵。順便說一下,直接鍵獲取和查詢獲取方式的性能如何? – QuestionAndAnswer

+1

據我所知,默認情況下,數據存儲按鍵值排序實體。除非您使用查詢來確定不同的排序,否則應該檢索按鍵排序的匹配實體。看起來您需要在應用程序中對結果進行排序(檢索後,假設您無法在Datastore命令中轉換原始排序)。關於性能,'get()'方法應該比使用'key'過濾器的查詢更快,但除非每天執行數十萬或數百萬次請求,否則我不會期望有相當大的差異。 –

+0

這就是目前實施的方式。 Manuak在我的代碼中排序。但我真的不喜歡這個解決方案。 Si,現在我會離開它,也許Datastore的開發者會在未來推出解決這個問題的東西。 – QuestionAndAnswer