Slide 1

Slide 1 text

初探 Data API Builder By Alan Tsai 在幾分鐘內將資料庫轉換成 REST 和 GraphQL 不再是夢想

Slide 2

Slide 2 text

簡單的自我介紹 2 @Alan Tsai 的學習筆記 • Alan Tsai • 蔡孟玹 • 後端工程師 - .NET 技術為主 • 喜歡學習不同東西 • Azure • Data Science、Chatbot • Container、DevOps • 加强開發的Tools、架構 • 翻譯文章/軟體 • 兩本翻譯書 • 三門線上課程 • 看小說、玩手游

Slide 3

Slide 3 text

@Alan Tsai 的學習筆記 教就是最好的學習方式 - 喜歡考證驗證所學 3

Slide 4

Slide 4 text

喜歡技術分享 4 ▰ 2022 .NET Conf ▻ 談 Event Driven Architecture 之前 是不是該把 Event 規格搞定? CloudEvents 是什麼? | 邁上 Cloud Native App 之路 ▰ 2021 .NET Conf ▻ 不會 Javascript 沒關係 用 Blazor 來解決前端需求成為 Full Stack .NET 開發者吧 ▰ 2020 Global Azure ▻ Azure API Management 協助邁向Open API及Micro Service架構的好用服務 @Alan Tsai 的學習筆記

Slide 5

Slide 5 text

喜歡技術分享 5 ▰Trainocate ▻AZ-104、AZ-204、AZ-400、DP-200、DP-201、PL-900、DA-100 ▰緯創資通 ▻Github Copilot ▰台灣智慧自動化與機器人協會 ▻運用Python進行大數據分析、機器學習基礎理論課程及人工智慧 – ML.NET ▰中華電信學院 ▻Windows Container 技術實務班、使用Azure AI打造有人工智能的Line聊天機器人 ▻DevOps與CI/CD實務研習班 @Alan Tsai 的學習筆記

Slide 6

Slide 6 text

歡迎訂閲、按讚 + 分享 FB 粉絲頁 http://fb.alantsai.net Alan Tsai 的學習筆記 https://blog.alantsai.net http://yt.alantsai.net http://bili.alantsai.net 影片 [email protected] @Alan Tsai 的學習筆記 6 [email protected]

Slide 7

Slide 7 text

Agenda 7 ▰Data API Builder (DAB) 是什麼?要解決什麼問題 ▰Demo: ▻Local 如何使用 ▻Azure 如何使用 ▰展望 @Alan Tsai 的學習筆記 Preview

Slide 8

Slide 8 text

為什麼要用 8 @Alan Tsai 的學習筆

Slide 9

Slide 9 text

9 Algorithms + Data Structures = Programs

Slide 10

Slide 10 text

Monolithic 的問題 10 @Alan Tsai 的學習筆記 https://mrtortoise.github.io/architecture/lean/design/patterns/ddd/2 018/03/18/deathstar-architecture.html - John Nicholas Musings​

Slide 11

Slide 11 text

當不能夠直接 Access DB 的時候怎麼辦? 11 @Alan Tsai 的學習筆記 ▰ Sync – API ▰Async - Event

Slide 12

Slide 12 text

新的服務 12 @Alan Tsai 的學習筆記

Slide 13

Slide 13 text

13 @Alan Tsai 的學習筆記 有沒有什麼東西可以 把資料庫直接 API 化?

Slide 14

Slide 14 text

什麼是 Data API Builder (DAB) ? 14 @Alan Tsai 的學習筆記

Slide 15

Slide 15 text

什麼是 Data API Builder (DAB) ? 15 @Alan Tsai 的學習筆記 https://github.com/Azure/data-api-builder/tree/main

Slide 16

Slide 16 text

什麼是 Data API Builder (DAB) ? 16 @Alan Tsai 的學習筆記 • Allow collections, tables, views and stored procedures to be accessed via REST and GraphQL • Support authentication via OAuth2/JWT • Support for EasyAuth when running in Azure • Role-based authorization using received claims • Item-level security via policy expressions

Slide 17

Slide 17 text

什麼是 Data API Builder (DAB) ? 17 @Alan Tsai 的學習筆記 REST CRUD operations via POST GET PUT PATCH DELETE filtering, sorting and pagination GraphQL queries and mutations filtering, sorting and pagination relationship navigation

Slide 18

Slide 18 text

什麼是 Data API Builder (DAB) ? 18 @Alan Tsai 的學習筆記 Easy development via dedicated CLI Full integration with Static Web Apps via Database Connection feature when running in Azure Open Source

Slide 19

Slide 19 text

Demo 19 @Alan Tsai 的學習筆

Slide 20

Slide 20 text

Scenario 20 @Alan Tsai 的學習筆記 ▰Local ▻Install DAB ▻Container MSSQL Database Setup ▻DAB Setup ▻API ▻GraphQL ▰Azure ▻Static Web App

Slide 21

Slide 21 text

準備 DAB 21 @Alan Tsai 的學習筆記 ▰需要是 .NET 6+ SDK ​​dotnet --list-sdks dotnet tool install --global Microsoft.DataApiBuilder dab --version

Slide 22

Slide 22 text

透過 Docker Container 22 @Alan Tsai 的學習筆記 ​​docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 - d mcr.microsoft.com/mssql/server:2022-latest​ dab init --database-type "mssql" --connection-string "Server=localhost;Database=BookTest;User ID=sa;Password=yourStrong(!)Password;TrustServerCertificate=true" --host-mode "Development" dab start

Slide 23

Slide 23 text

Browser 23 @Alan Tsai 的學習筆記 • healthy - https://localhost:5001 • ​Swagger - https://localhost:5001/swagger • API - https://localhost:5001/api/{entity} • GraphQL - https://localhost:5001/graphql

Slide 24

Slide 24 text

準備資料庫 24 @Alan Tsai 的學習筆記 https://github.com/Azure/data-api-builder/blob/main/samples/getting- started/azure-sql-db/library.azure-sql.sql

Slide 25

Slide 25 text

加入 Author 25 @Alan Tsai 的學習筆記 ​​dab add Author --source dbo.authors --permissions "anonymous:*"​​​

Slide 26

Slide 26 text

REST API 26 @Alan Tsai 的學習筆記 https://learn.microsoft.com/en-us/azure/data-api-builder/rest

Slide 27

Slide 27 text

REST API 27 @Alan Tsai 的學習筆記 https://learn.microsoft.com/en-us/azure/data-api-builder/rest

Slide 28

Slide 28 text

GraphQL 28 @Alan Tsai 的學習筆記

Slide 29

Slide 29 text

GraphQL 29 @Alan Tsai 的學習筆記

Slide 30

Slide 30 text

Relationship 30 @Alan Tsai 的學習筆記 ​​dab update Author --relationship "books" --cardinality "many" -- target.entity "Book" --linking.object "dbo.books_authors"​​​ "relationships":{ "books":{ "cardinality":"many", "target.entity":"Book", "linking.object":"dbo.books_authors" } }"​

Slide 31

Slide 31 text

Azure – Static Web App 31 @Alan Tsai 的學習筆記 https://github.com/alantsai-samples/dab-swa-todo

Slide 32

Slide 32 text

Azure – Static Web App 32 @Alan Tsai 的學習筆記

Slide 33

Slide 33 text

展望未來 33 @Alan Tsai 的學習筆

Slide 34

Slide 34 text

注意事項 34 @Alan Tsai 的學習筆記 ▰Public Preview ▰未來的 Roadmap ▰Performance

Slide 35

Slide 35 text

組合技:DB -> CDC -> DW -> DAB = Data API 35 @Alan Tsai 的學習筆記 https://debezium.io/blog/2019/12/18/debezium-1-0-0-final-released/

Slide 36

Slide 36 text

參考資料 36 @Alan Tsai 的學習筆記 ▰官方文件 ▰Github Repo ▰Sample Repo

Slide 37

Slide 37 text

CREDITS Special thanks to all the people who made and released these awesome resources for free: ▰ Presentation template by SlidesCarnival ▰ Photographs by Startup Stock Photos 37 @Alan Tsai 的學習筆記