因為公司的關係,有幸參加這樣的課程
其實這禮拜二(04/23)我也跟著前輩去 AWS 的研討會,感覺頗接地氣
而且還送文件包,剛好可以放筆電,帶出去都感覺自己很丘哈哈哈
AWS 是最大且最廣泛使用的雲端服務
過去我也只摸過一點點 GCP (Google Cloud Platform)對雲端真的不算熟
再加上我對資料庫淺薄的知識,硬著頭皮就去了
果然聽不太懂哈哈哈
不過整體下來收穫還是很多
最主要的是知道了資料庫類型真的很多種哈哈哈
一直以來我都以為資料庫是演化的概念,最終形態是現在市面上的關聯式資料庫
科技不斷進步,資料庫也因應不同的需求產生各式各樣形式的資料庫!
第二個是了解現在這個社會沒有所謂的專業領域之分吧?
多會一點就是比別人多了不一樣的知識,各個領域都是相互結合的
那以下是我雜亂的筆記,基本上都可以直接看 AWS 的官方文件啦
https://docs.aws.amazon.com/index.html
由於我真的不太懂,所以錯誤應該很多
但還是保持著一個紀錄的心情,記在 Medium 上
希望我以後就看得懂也會用 AWS 上的各種工具了~
好希望成為可以666的跟別人討論技術問題的人
感覺就很帥
不同資料庫適合不同的應用場景
- 隨時都有大量的動態資料要儲存
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
- 功能(很多關連式資料庫可以有任兩個特點)
- 資料一致性:想保持最新
- 可用性:不用最新但不能錯
- 分區:容錯率(網路斷掉還是能找到資料)
2. 目的
- 隨機存取
- 擴張性
- 低延遲
Domain Driven Design (領域驅動設計)
bounded context
- 到底是解決問題還是找解決辦法(找出問問題的目標)
- 大部分的人都是從解決方法想,沒有探究真正的問題
- 思考為什麼要做這件事情的時候,才能找出更好的答案
每個人對於業務事件的重點都不一樣
- event storming
- 從用戶體驗開始
- 便利貼法
- 找出重點服務、列出風險
- 業務流程 => 行為 => 組織
- 確保沒有認知偏差
- 區分後可以發現業務跟業務之間可以結合或是發現新的服務方式?!
Database MIgration Service
思考:部分上雲
- 是所有的功能都需要使用這個資料庫資源嗎?
- 不需要的可不可以部分上雲
- 1:1 搬遷
- 容器化
- 業務場景區分
Cache (沒有很懂 QQ)
一般配置(cache)Aurora + RDS
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 上喔,可以常去看看
Amazon Web Services
Read and download presentations about TW-DB-freedom-workshop-02
www.slideshare.net
拍個手讓我知道,這個文章對你們有幫助 ♥(´∀` )人