AWS DB Freedom 資料建構營心得

Kion
7 min readApr 25, 2019

--

https://aws-workshop-tw-02.splashthat.com/?fbclid=IwAR3cZJR_1UPe78ihC16xJ3sfaCRIouEiWP_5risC01rtoBbTUkpOb_T_0eo

因為公司的關係,有幸參加這樣的課程
其實這禮拜二(04/23)我也跟著前輩去 AWS 的研討會,感覺頗接地氣
而且還送文件包,剛好可以放筆電,帶出去都感覺自己很丘哈哈哈

AWS 是最大且最廣泛使用的雲端服務
過去我也只摸過一點點 GCP (Google Cloud Platform)對雲端真的不算熟
再加上我對資料庫淺薄的知識,硬著頭皮就去了
果然聽不太懂哈哈哈

不過整體下來收穫還是很多
最主要的是知道了資料庫類型真的很多種哈哈哈
一直以來我都以為資料庫是演化的概念,最終形態是現在市面上的關聯式資料庫
科技不斷進步,資料庫也因應不同的需求產生各式各樣形式的資料庫!
第二個是了解現在這個社會沒有所謂的專業領域之分吧?
多會一點就是比別人多了不一樣的知識,各個領域都是相互結合的

那以下是我雜亂的筆記,基本上都可以直接看 AWS 的官方文件啦

https://docs.aws.amazon.com/index.html

由於我真的不太懂,所以錯誤應該很多
但還是保持著一個紀錄的心情,記在 Medium 上
希望我以後就看得懂也會用 AWS 上的各種工具了~

好希望成為可以666的跟別人討論技術問題的人
感覺就很帥

不同資料庫適合不同的應用場景

  1. 隨時都有大量的動態資料要儲存

AWS DynamoDB

  • 管理地端資料庫很麻煩、不知道怎麼預估系統成長和規劃硬體需求

2. AWS RDS

  • https://youtu.be/RyX9tPxffmw
  • 支援各大資料庫(還有 AWS Aurora)
  • 容易擴充、可加密(提高安全性)
  • 方便做 HA
  • 結構化的、關連式資料庫

3. 商用資料庫的品質 兼 open source 資料庫的彈性

  • AWS Aurora
  • 結構化的、關連式資料庫

4. 以文件方式儲存

  • DocumentDB

5. 以時間序列為主

  • timestream

6. 應用區塊鏈

  • QLDB

7. 雲端搬遷工具與資源

  • AWS Database MIgration Service

通通都能轉

  • 地端 => 雲端
  • 地端 => 地端
  • 雲端 => 雲端
  • 雲端 => 地端

何謂微服務架構

  • 單體式架構 => 一個資料庫
  • 微服務架構 => 拆分服務,運用不同資料庫去滿足

對應問題合適的 Database

  • relational 資料庫:只讀取 (AWS Aurora 、AWS RDS)
  • key value 資料庫: key value 的對應關係,不用 sechma,大量資料增長也不用擔心(看起來很像 object ,可兩階層、多階層)(AWS DynamoDB)
  • Document:類 JSON 的格式,可快速查找(傳統關聯是資料庫有些也支援)(AWS DocumentDB)
  • in-memory:只儲存在 memory 用 API 找(左 傳統資料庫)(右 in-memory DB)
  • Graph:找到商品與商品或人與人之間的關係(推薦朋友、商品),關聯式資料庫效能可能較差 (AWS NEPTUNE)
  • Time-series: 以時間為主、大量、不太會改動舊資料(timestream)
  • Ledger:生產履歷、物流系統、區塊鏈、紀錄更動資料、一起更動節點資料(QLDB)

QLDB

分為 CHJ

更改資料後,更改 current 資料、新增 history、連結 table 並加密

如何挑選 CAP

  1. 功能(很多關連式資料庫可以有任兩個特點)
  • 資料一致性:想保持最新
  • 可用性:不用最新但不能錯
  • 分區:容錯率(網路斷掉還是能找到資料)

2. 目的

  • 隨機存取
  • 擴張性
  • 低延遲

Domain Driven Design (領域驅動設計)

bounded context

  • 到底是解決問題還是找解決辦法(找出問問題的目標)
  • 大部分的人都是從解決方法想,沒有探究真正的問題
  • 思考為什麼要做這件事情的時候,才能找出更好的答案

每個人對於業務事件的重點都不一樣

  • event storming
  • 從用戶體驗開始
  • 便利貼法
  • 找出重點服務、列出風險
  • 業務流程 => 行為 => 組織
  • 確保沒有認知偏差
  • 區分後可以發現業務跟業務之間可以結合或是發現新的服務方式?!

Database MIgration Service

思考:部分上雲

  • 是所有的功能都需要使用這個資料庫資源嗎?
  • 不需要的可不可以部分上雲
  • 1:1 搬遷
  • 容器化
  • 業務場景區分

Cache (沒有很懂 QQ)

一般配置(cache)Aurora + RDS

SQL-NoSQL

AWS DynamoDB

https://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/Introduction.html

  • partition key || partition key + sort key(可制定範圍) 決定一個 item
  • partition key 會做 hash
  • partition key + sort key
  • three-way replicated
  • autoscaling 盡量用於穩定資料成長的資料庫,若起伏不定會拖慢讀寫
  • Transaction API(希望用於 key design 之後)
    - 為了滿足 access pattern,又沒有join 資料可能會複製兩份,但在不同的 item group 內,若今天資料要更新 Transaction API 可以一次做更新
    - 不拿來做 key design

Nosql

key value 的型態

  • 運算很強,但不太能向關聯式可以一直 join(沒有 join)
  • 如果要 join 就把資料攤平(?

key 的設計很重要

  • key 為 sort key 的概念,利用它的特性去達到 join 的效果,把 table 拉出來,也方便 search
  • 要先了解 use case,彈性沒有關聯式高,他是橫向
  • (最重要)弄清楚 access pattern => 用於設計 key、schema
  • 建議不要把 table 一對一的 maping,不是來處理這件事情的,他只開一張 table
  • composite key (常用)
  • access pattern

SQL & NoSQL

  • NoSQL 可以保持一定的讀寫時間
  • SQL 有機率被拖慢

以上是我可能理解有錯的小收穫
其中有很多實作的部分,但我真的不知道我在幹嘛哈哈哈
我有把文件放上來供大家欣賞,不知道可不可以要到簡報
如果有的話我再放連結上來給大家~

結果真的有耶,好像他們都會把簡報放在 Linkedin 上喔,可以常去看看

拍個手讓我知道,這個文章對你們有幫助 ♥(´∀` )人

--

--

Kion
Kion

Written by Kion

程式就是利用自動化與排程的特性解決問題 文章分類總覽: https://hackmd.io/@Kion/SyvyEks0L

No responses yet