Redshift?不是關系型數據庫, 提供了Amazon Redshift Serverless 和 Amazon Redshift 都是構建于 Redshift 數倉引擎之上的,但它們適用的場景不同。Redshift和Dynamodb都可以存儲數據, 分別怎么選擇? 這里記錄一些常見的問題和場景。
1. 如何選擇用Amazon Redshift Serverless 和 Amazon Redshift?
Amazon Redshift Serverless:無需管理集群,按需計費,彈性自動擴展。適合不確定負載或數據團隊初期, 按照查詢時使用的 RPU(Redshift Processing Unit)計費,適合不可預測的工作負載。
Amazon Redshift(傳統集群):適合穩定、長期的大數據倉庫,擁有持續負載、對成本控制更精細的團隊, 按節點計費,可使用預留實例降低成本,適合固定工作負載, 按節點計費,可使用預留實例降低成本,適合固定工作負載。
維度 | Redshift Serverless | Redshift(集群) |
---|---|---|
部署管理 | 無需管理節點,AWS 自動處理資源 | 需要用戶自己部署節點和集群 |
計費模式 | 按查詢消耗的“RPU”資源計費(彈性) | 按節點數+小時計費(固定) |
適合場景 | 負載波動大,查詢不頻繁;無需 DBA | 工作負載穩定,查詢頻繁,性價比高 |
啟動速度 | 快速(即開即用) | 有啟動延遲,需要冷啟動時間 |
彈性擴展 | 自動,無需配置 | 手動擴容或設置自動擴縮容 |
成本控制 | 適合短時輕量查詢,不用時不收費 | 對長期高密度負載更劃算 |
2.?redshift設置了id為PRIMARY KEY,入庫仍然有重復id,唯一鍵不生效,有沒有其他方式可以設置數據行不重復.
????????本身沒有唯一主鍵約束(性能決定),?推薦:???編輯MERGE - Amazon Redshift
? ? ? ? (1)寫入時判斷然后merge
? ? ? ? (2)緩存到中間表, 再merge到目標表(因為received有一個有個SQL的語句叫merge,如果它發現有重復記錄,它就會做update,如果它發現是新的記錄沒有重復的,它就直接append也就是insert),和關系型數據庫不一樣, 因為關系數據庫,它本質上背后它是有個主鍵索引,而redshift沒有索引,它偏向于分析型場景.
3.?表數據大查詢慢,怎么優化, 支持索引嗎??
????????沒有索引,更合適是sortkey這個功能, 推薦:??VACUUM - Amazon Redshift
? ? ? ? 查看搜索鍵排序: select * from svv_table_info order by size desc;
????????數據量小,性能要求高可以走集群 → 費用會增長
4.?多個進程同時往一個表里批量寫數據,會導致數據丟失,或者表被鎖之類的問題嗎?
????????沒有行鎖,只有表鎖, 還是推薦緩存表再merge更快
5.?redshift 可以創建關聯表嗎?可以創建視圖嗎?如何創建?
????????視圖和物化視圖(預計算,可配置自動,手動,增量/全量等)都可以? ? ??編輯自動實體化視圖 - Amazon Redshift
6.?Serverless 的 Total used storage是怎么計算的, 比實際的數據大很多(實際數據2G的時候,顯示58G, 實際數據大概20G,顯示154.7 GB)
?????????Serverless 默認128個分片,每個分片有個最小容量,無法調整分片數量, 所以會自動伸展到合適的空間. 集群方式, 是可以根據業務量自定義分片數量的.
7.?redshift和dynamodb性能和收費上都有什么區別?
? ? ? (1)? redshift - 數據分析
? ? ? ?(2) dynamodb - 業務存儲(點查性能更好),更擅長更偏一個業務系統,本身是個KV,所以他更擅長做一些按照key來查詢他的這個value的場景
8.?redshift推薦的其他用法和優化點
? ? ? ? (1) 數據量增大,實時要求高(1-5分鐘) - 流式傳輸
? ? ? ? (2) 多集群架構,多計算,單存儲 ,一個寫入,一個讀取 - ?編輯Amazon Redshift 中的數據共享 - Amazon Redshift
? ? ? ? ? ? ? ? - AWS 賬戶和 AWS 區域之間共享數據。
9.?如何方便監控redshift的讀寫情況和數據增長情況之類
? ? ? ? 監控RPU等等
10. 頁面配置注意點
????????可以設一個limit限制,可以設置最大容量,比如說64或者是32,那么它到了那個限制,它就不會往上擴了, 要是不設置, 那你的配置就是下限, limit可以根據數據量大小無上限擴展.
?11. 支持數據共享
? ? ? ? 可以配置數據共享,某張表可以到表級別分享給你其他region的某一個redshift work group,他就可以直接看到直接看到, 且看到就是實時的表,跟你訪問的數據是一模一樣的,這個是可以配置的,甚至跨賬號也是可以的.
參考鏈接:
MERGE - Amazon Redshift
VACUUM - Amazon Redshift
Amazon Redshift 中的實體化視圖 - Amazon Redshift
自動查詢重寫以使用實體化視圖 - Amazon Redshift
Amazon Redshift 中的數據共享 - Amazon Redshift