簡體   English   中英

Google Cloud DataStore。 如何提供數據?

[英]Google Cloud DataStore. How to serve data?

與許多人一樣,我不是NoSQL的新世界。 我做了很多研究,但是我仍然只缺少一點,我找不到合適的答案。

系統簡短說明:

我正在建立一個在不同網站上收集訪客數據的系統。 每次訪問都是數據存儲區中的實體,具有設備類型,IP,訪問時間等屬性。

數據存儲中將有數百萬的訪問。

我的問題是,如何將這些數據提供給客戶。 我的數據在數據存儲區中設置為“訪問”實體。

現在,當客戶登錄時,我不想向他們顯示數百萬條記錄。 例如,我想向他們顯示常規統計信息。 就像在移動設備上的訪問次數,在某個時間范圍內來自特定國家/地區的訪問次數之類。

現在,由於我是NoSQL數據庫的新手,所以我不確定如何在客戶端的儀表板中顯示這些統計信息。

據我所知,Datastore不支持聚合,例如不支持查詢結果計數。

我查看了BigQuery,但是BigQuery可以處理數據存儲“備份”,我需要實時提供數據,而無需手動進行備份。

我還閱讀了有關計數器和分片計數器的信息,這是正確的方法嗎? 每個跟蹤組的每個屬性的每個客戶都有一個計數器? 並以這種方式顯示總數? 聽起來太簡單了。

任何能使我朝正確方向發展的建議或解釋,將不勝感激。

最好的祝福

據我所知,Datastore不支持聚合,例如不支持查詢結果計數。

這不是真的。 您可以使用一行代碼獲得查詢返回的許多實體。 查詢本身可以是僅鍵的,這非常快並且基本上是免費的。

是的,就性能而言,計數器是解決您的問題的好方法。 但是它們確實有一些缺點,例如存儲大小以及每次您想引入一種新的統計信息時都需要為其創建計數器的事實。

除了當前的“訪問”實體,您還可以選擇將聚合數據存儲在數據存儲區的分片計數器中。 這些計數器可以實時更新,也可以通過一個任務隊列中的任務進行更新。 創建一個Task來為當前Visit實體創建各種計數器將非常簡單。

分片是一種創建多個“基礎”實體的方法,這些實體組合在一起時將代表一些有意義的數據。 進行分片以確保沒有由於並發更新引起的性能問題。

Google文檔中:

如果您只有一個實體作為計數器,並且更新速率太快,那么您將產生爭執,因為序列化的寫操作將堆積起來並開始超時。 如果您來自關系數據庫,則解決此問題的方法有點違反直覺。 該解決方案依賴於這樣一個事實,即從App Engine數據存儲區讀取數據的速度非常快且便宜。 減少爭用的方法是建立一個分片計數器-將計數器分成N個不同的計數器。 當您想增加計數器時,可以隨機選擇其中一個碎片並對其進行遞增。 當您想知道總數時,您可以閱讀所有計數器分片並匯總其各自的計數。 分片越多,計數器增加的吞吐量就越高。 該技術的作用不僅限於計數器,還需要學習的一項重要技能是,通過大量編寫來發現應用程序中的實體,然后找到分片的好方法。

我建議查看鏈接以獲取更多信息和一些有用的示例。

暫無
暫無

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

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