2016-02-04 72 views
2

我正在考慮與AWS DynamoDB構建一個聊天應用程序。該應用程序將支持1:1和羣聊。在AWS DynamoDB上存儲聊天記錄?

我想創建一個表的聊天記錄中的每一個,那裏是每個發送的聊天文本行的記錄。 DynamoDB適合這種工作嗎?

我還想到合併兩個表。但是,如果有 - 我們假設 - 100k或1000k用戶,這是一個好主意嗎?

回答

1

我想你可能會遇到與你的桌子上讀取的容量問題。寫入容量應該沒問題,因爲每秒鐘沒有太多消息(例如10個左右),但是您需要不斷地從所有用戶那裏讀取消息,因此這會很昂貴。

如果你想使用DynamoDB就像存儲和喜歡在網絡上任何正常聊天分發聊天消息,那麼它可能是有意義的,這取決於你的使用情況。假設您有一個散列鍵UserId和Timestamp,您可以在特定時間段內查詢特定用戶的所有消息。但是,如果您想要在聊天文本中進行搜索(可能是一個非常有用的功能),那麼DynamoDB本身無法工作。它不像SQL,在那裏你可以做一個LIKE '%abc%'查詢(這在SQL中也不是個好主意)。

也許你已經開使用S3作爲數據存儲和ElasticSearch作爲搜索工具更好。如果您需要上述用例「在時間跨度S中獲取來自用戶X的所有消息」(作爲一個簡單示例),您還可以使用DynamoDB來存儲元數據,例如UserId,Timestamp,PositionInFile或類似的東西。

+0

謝謝。我如何將它存儲在S3上?作爲每個聊天的文件? – MJQZ1347

+0

老實說,我不確定,但每個聊天存儲一個文件,也許每天都存儲一個文件聽起來是合理的。像這樣,要獲得第一個屏幕,您只需從文件中加載當前對話日。 – marco

+0

不確定S3是否有幫助,但我同意DynamoDB不會是一個很好的選擇來做這種東西 –