![](/img/trans.png)
[英]AWS DynamoDB put item size limit exception for item size less than 400KB
[英]How to deal with limit size when reached at AWS DynamoDB?
我們正在嘗試充分利用AWS的DynamoDB的NoSQL和IoT的優勢 ,但是我們不確定關於項目長度或項目插入的最佳實踐。
順帶一提,每個設備都可以讀取環境數據,具體取決於捕獲的數據類型,設備將該“事件”的 JSON
消息發送給IoT 代理 ,然后發送給Lambda函數,以映射該負載,對其進行處理並寫入DynamoDB表。
然后,每種捕獲的事件類型都有一個表,每個從設備接收到的事件消息都有一個表。 但是我們已經意識到那只是另一種偽關系方法。
閱讀文檔,並僅將一張表作為最佳實踐,將每台設備中的一個表放入其中,並按鍵名稱對這些JSON
事件進行分類。
就像是:
{
"partition":"<str_an_id>"",
"range":<uint_maybe_a_timestamp>,
"event_soil":[
{<<object with variable length #0},
{<<object with variable length #1}
...
{<<object with variable length #n}
],
"event_humidity":[
{<<object with variable length #0},
{<<object with variable length #1}
...
{<<object with variable length #n}
],
"event_light":[
{<<object with variable length #0},
{<<object with variable length #1}
...
{<<object with variable length #n}
],
"event_temperature":[
{<<object with variable length #0},
{<<object with variable length #1}
...
{<<object with variable length #n}
]
}
當前,我們有兩個設備,因此隨着設備的JSON
有效負載,我們預計會有兩個項目在增長。 但是,在某個時候,內存閾值已達到,並且DynamoDB發出了400
錯誤代碼。
這種方法正確嗎? 還是完全錯誤?
有什么方法可以知道何時達到該極限? 像是某種分頁或類似的東西?
很難進行計算項目大小的數學運算,因為JSON
對象當前的長度有所不同,並且將來可能會有所不同。
另外,我們已經開始考慮每台設備每隔一到兩個月(從理論上講,因為我們會加速設備)創建項目。 但是,不確定。
每個設備內部都有一個項目,其中包含一系列按密鑰名稱分類的JSON事件。
如果我了解上述內容以及代碼示例...
我會說你做錯了。 反復更新一些記錄不是一個好主意。 除了您似乎認識到的項目空間不足外,您還需要為所需的I / O支付兩倍的費用(1讀+ 1寫)。 不知道你從哪里得到這個主意的。
對於物聯網設備,似乎您正在處理時間序列數據,因此請確保了解DynamoDB中處理時間序列數據的最佳實踐。
也許只用兩個設備就算太過分了...但是假設您要大幅度擴展...
我的第一遍是分區鍵:“ deviceName#date”,排序鍵:“時間”
在這種情況下,“日期”可以是完整日期,YYYY-MM-DD,或者僅僅是YYYY-MM,甚至YYYY。 將剩余的日期部分移至排序鍵。 一切取決於您期望的數據量。 要考慮的是,給定的分區(鍵)只能存儲10GB的數據。
如果您可以將設備的數據保留量限制在10GB以下,那么我將使用設備作為分區鍵,將日期移至排序鍵。
編輯
關鍵點
2非常重要,假設您選擇了給定時間段(過去24小時,上周等),那么您將要處理給定設備的所有事件,特定類型的所有事件,所有設備的所有事件,或.. ..
並不是說您不能完成上述所有操作,但是主要的訪問權限是什么?
每次“將所有時間的所有數據給我”將是Scan()...肯定不是一種經濟有效的訪問方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.