[AZ-305] Design data storage solutions

Design a data storage solution for non-relational data

- Design for data storage
  • types of data: Structured (Table) / Semi-structured (JSON/XML) / Unstructured (Stream / VDO / Image)
    ดูเพิ่มได้จาก DP-900: Identify data formats
  • Choosing data storage
    - Azure Blob Storage - Store vast amounts of unstructured data
    - Azure Files - file shares protocol SMB / Network File System (NFS) อ๋อมี REST API
    - Azure managed disks - ใช้กับ Azure VM
    - Azure Queue Storage - backlog of work to process asynchronously
- Design for Azure storage accounts
  • Azure storage account
    - groups together all of your Azure Storage services
    - unique namespace สำหรับ access
    - storage account - มันจะจัดการพวก location/ replication strategy / Access Tier เป็นต้น
    - มี 4 แบบ Standard general-purpose v2 / Premium block blobs / Premium file shares / Premium page blobs
  • สิ่งที่ต้องพิจารณา storage account types
    - storage locations
    - compliance requirements
    - data storage costs. ขึ้นกับ Service ที่เลือก Standard/ Premium และตัว Storage Account ยังเอามาแยก Cost Center ได้ด้วยนะ
    - replication scenarios
    - administrative overhead - ถ้ามีหลาย Storage ทาง admin ต้องมาตามประกบ Policy / Config
    - data sensitivity - public data / sensitive data ต้องแยก Storage Account ออกมาจัดการ
    - data isolation
- Design for data redundancy
  • แต่ละอันต่างยังไง Microsoft Azure LRS vs ZRS vs GRS vs GZRS
    - พวก GRS: LRS > LRS ของอีก Region
    - พวก GZRS: ZRS > LRS ของอีก Region
  • when using data redundancy ดู Check List ดังนี้
    - access requirements - only primary หรือ ต้อง replicate ไป zone / region อื่นๆ
    - primary replication options ใน primary region มี LRS / ZRS เราสนอันไหน Cost / HA
    - locally redundant storage - low cost/ limited durability ทำ LRS ใน DC
    - zone-redundant storage. - ไม่ป้องกัน region fail
    - secondary regions
    -> ทำ GRS and GZRS ต้อง Failover ก่อน ถึง read ได้
    -> ได้ถ้าต้องการ read access เพิ่ม RA-GRS / RA-GZRS

- Design for Azure Blob Storage

  • access tier: Premium Blob Storage (ดีสุด) / Hot Access Tier / Cool Access Tier (30 วัน) / Cold Access Tier (90 วัน) / Archive access tier (ช้า แต่ถูก / 180 วัน ++) แต่ละแบบจะส่งผลกับ availability and latency

เหมือนเขียน Blog ไว้ปลายปี 2022 (Cold ไม่มี)

  • WORM = Write Once Read Many
  • when implementing Azure Blob Storage ต้องดู
    - Blob Storage availability - ดู access tier
    - Blob Storage latency - required time to access ดีสุด premium blob storage
    - Blob Storage costs
    - immutable storage ป้องกัน Modified/Delete โดยดูจาก Time-based retention policies / Legal hold policies - ไม่มีระยะเวลานะ เก็บจดกว่าจะเอา Legal ออก
- Design for Azure Files
  • Azure Files 
    - จาก On-Premises NAS / File Share ขึ้นมา
    - encrypted in transit/rest
    - Access Method
    -> Direct mount: SMB access
    -> Azure File Sync (Cache Azure File Shared ที่ on-premises)
  • performance ขึ้นกับการเลือก
    - Storage account Standard / Premium
    - Storage tier Premium/Transaction optimized (heavy workloads that don't need the latency) /Hot access tier/Cool access tier
    NOTE: มีผลกับ Latency/IOPS/Bandwidth
  • แล้วเราควรใช้ Azure File Share / Blob หรือตัวอื่นดูจาก
    Compare NFS access to Azure Files, Blob Storage, and Azure NetApp Files
- Design for Azure managed disks

Azure managed disks - สำหรับ VM

when using managed disks

  • scenarios, throughput, and IOPS
    - Ultra-disk - SAP / DB Server
    - Premium SSD - Production + Performance
    - Standard SSD - Web servers / DEV / Test
    - Standard HDD - Backup
  • ดู data caching เอามาทด เพื่อทำให้เร็วขึ้นได้ โดย OS Disk (Read/Write) / Data Disk (Read) แต่ต้องใช้ Disk เล็กกว่า 4 TB
  • ดู encryption
    - Azure Disk Encryption (ADE) ของ VM
    - Server-Side Encryption (SSE) encryption at rest
    - กรณีที่ SSE ไม่ได้เปิด Encryption at host
- Design for storage security

implementing storage security

  • Azure security baseline options
  • shared access signatures - Define the access permissions for resources. Configure how long the SAS remains valid.
  • firewall policies and rules
  • service endpoints - ไม่ให้เข้าผ่าน public IP
  • private endpoints

Knowledge check: Design a data storage solution for non-relational data

Design a data storage solution for relational data

SQL Server มี 3 แบบ Azure SQL / Azure SQL Manage Instance / SQL Server on VM

ดูจากตารางข้างต้น

  • Azure SQL เหมาะ DB ขนาดใหญ่ มี 100 TB รับได้ทั้งแบบ
    - vCore (Recommend - ใช้ Azure Hybrid Benefit หรือ reserved capacity)
    - DTU - ไม่ต้องมาสนใจ CPU / RAM / Storage คิดเหมาๆตาม Database Transaction Unit เหมือนอะไรแรงม้าเครื่องยนต์ ราคาลองไปกดตรวจได้
    - serverless
    - elastic database pools - สำหรับเคสมีหลาย DB แล้วอยากให้ Share Resource ร่วมกัน จะได้มี Limit Peak Resource ได้ หรือ pool share
  • Azure SQL Managed Instance เหมาะกับย้ายจาก On-Premise > Cloud แต่ต้องระวัง instance-scoped features เช่น Service Broker, CLR, SQL Server Agent ดูให้ครบก่อนย้าย และ มันใช้ Model
    - vCore Scale CPU+Disk
    - instance pool
  • SQL Server on Azure VM เคสที่ไป Azure SQL Managed Instance ไม่ได้ ถ้าใช้แล้วควร
    - จัดการ server access / automated management มันเป็น VM เราต้องดูแลมัน
    - Azure Hybrid Benefit
- Recommend a solution for database scalability

Azure SQL/SQL MI-dynamic scalability

  • vertical scaling (scaling up) แก้ CPU Storage ให้ Instance DTU / vCore กำหนด Max //Elastic ได้ min + max
  • horizontal scaling (scaling out) ใช้
    - sharding partition data
    - หรือ read scale-out provisioning (Always On Availability Group)
**Azure SQL ทำ Hyperscale ได้

Scale แบบไหนดี?

  • Elastic database pools and vertical scaling - เพิ่ม Spec
    - Multiple Azure SQL + Scale + unpredictable resource
  • Horizontal scaling and sharding - เพิ่ม DB
    - Different sections of a database reside in different geographic locations for compliance reasons
    - sharding to split your data into several databases and scale them independently
  • Elastic database tools and elastic query
    - Dependency support for commercial BI or data integration tools, where multiple databases contribute rows into a single overall result for use in Excel, Power BI, or Tableau
    - T-SQL that spans multiple databases in Azure SQL Database. Run cross-database queries to access remote tables
- Recommend a solution for database availability

ทำไมเหมือนซ้ำกับที่เคยดูในหัวข้อก่อนๆ

  • General Purpose - tempdb (remote-attached SSD) + data and log files are stored in Azure Premium Storage
  • Business Critical - Always On availability group + direct-attached SSD ต่อตรง ลด Latency
  • Hyperscale - เฉพาะ Azure SQL

ลองดูเพิ่มเติมได้ใน Recommend a solution for database availability

ตัว VM ทำได้นะ แต่เราทำเองหมดไง สร้าง VM หลาย Region ทำ Alway On AG / Backup เอง ส่วนพวก Cloud Azure SQL บางอันที่ใช้ On-Premise บน Cloud ไม่ได้นะ อย่าง
- Log Shipping เหมือน Huawei / AWS ทำได้นะ
- Replication Azure SQL MI ทำไห้

- Design security for data at rest, data in motion, and data in use

จากเดิม AZ-900 / SC-900 จะมีบอก Data State 3 จุด Data at rest / Data in transit / Data in process

  • Data at rest (TDE at page level)
    - ตัว TDK ใช้ Database Encryption Key (DEK) ที่ถูกจัดการจาก Service-managed TDE / Customer-managed TDE
    - Always On AG - ตัว DEK ต้องไปเอาติดตั้งทุกๆ Server
  • Data in transit/motion (SSL/TLS)
    - ถ้าข้าม Site ไปดู Network เพิ่ม // https ระหว่าง DB + Storage
    - หรือทำ VPN > Express Route
  • Data in Process (Dynamic data masking ทำเฉพาะ Data ที่สำคัญ)
    - มี Feature Dynamic data masking ตรวจตอน Query กำหนดได้จาก Azure Portal SQL

data classification - การทำ Catalog ข้อมูล และ Label Public, Confidential, or Restricted

- Design for Azure SQL Edge
  • Azure SQL Edge Container SQL Server ขนาดเล็กสำหรับ IoT มีรูปแบบติดตั้ง 2 แบบ Connected / Disconnected (ติดตั้งแยกเอง) deployment ก่อน Deploy ต้องมาสนใจ Platform and system security / Authentication and authorization / Database object security (TDE) / Application security (App IoT)
  • เรื่องอื่นๆ ที่ต้องมาพิจารณาด้วย
    - network connectivity limitations
    - slow or intermittent broadband connection มันมีผลกับการ Sync
    - data security and privacy concerns
    - synchronization and connectivity to back-end systems
    - code and skill familiarity - มันจะเกี่ยวกับ Deployment Application Security

Note: ปี 2025 ไปแล้ว Beginning September 30th, 2025 Azure SQL edge service will be retired

ส่วนตัวชอบเอา Docker ของ Azure SQL Edge มาลองเล่น เล็กดี รอดูว่าปี 2025 Container ยังอยู่ไหม

- Design for Azure Cosmos DB and Table Storage

ย้ายไปดูหัวข้อ แล้วเกี่ยวอะไรกับ Relational Data ?

พวก Table API เอง มีตารางสรุป ดังนี้

Knowledge check: Design a data storage solution for relational data
Summary Resource: Summary and resources

Design data integration

- Design a data integration solution with Azure Data Factory
  • Azure Data Factory - cloud-based data integration service ที่เริ่มจาก 1. Connect and collect / 2. Transform and enrich / 3. CI/CD for ETL Process / 4. Monitor
  • Recap Component ของ ADF: Pipelines and activities / Datasets / Linked services / Data flows (transformation logic without writing code) / Integration runtimes ( bridge between the activity and linked Services objects)
  • ก่อนจะใช้ Azure Data Factory สิ่งที่ควรพิจารณา
    - requirements for data integration
    - coding resources - ทำ pipelines/data flows โดยเลือกจาก Code หรือ Low Code
    - data sources ที่ต้องการใช้งาน มันมี connectors ให้ใช้
    - serverless infrastructure
- Design a data integration solution with Azure Data Lake

Data lake is a repository of data that are stored in its natural format, usually as blobs or files

  • ถ้าเทียบกับ Azure Data Factory จะมองว่า
    🚀 Azure Data Factory (Pre-process)
    🧱 และ Azure Data Lake (Optimize Storage for Big Data) รอบรับการทำ
    1. ingest real-time data directly from multiple sources
    2. Support Apache Hadoop Distributed File System (HDFS)
    3. รองรับไฟล์หลายรูปแบบ JSON, CSV, log + เก็บ Raw Data
  • Steps
    - Ingest data
    - Access stored data ได้หลายตัว Azure CLI / Azure Storage Explorer / SDKs  เป็น
    - Configure access control - RBAC / Postfix / ACL
  • choosing Azure Blob Storage or Azure Data Lake
- Design a data integration and analytic solution with Azure Databricks

Databricks = Unified Data Analytic Platform เป็น Solution ด้าน AI เลย โดยรวมทุกอย่างตั้งแต่ Data Preparation + Train และมี built-in core API เช่น SQL, Java, Python, R, and Scala. สามาถจัดการในส่วน Control Plane/ Data Plane
Tools มีสามมุม SQL / Data Science and Engineering / Machine Learning

โดยการใช้งานมีสิ่งที่ต้องพิจารณา ดังนี้

  • data science preparation of data - ใช้ data clusters ให้เหมาะกับ Job
  • insights in the data - recommendation engines / churn analysis / intrusion detection รวมถึง Databricks SQL แต่ไม่เหมาะกับ unstructured data
  • productivity across data and analytics teams - ใช้ shared workspaces แต่ละฝ่ายทำงานร่วมกันได้ดีขึ้น
  • big data workloads - ใช้ Tools ให้เหมาะสม Integrate กับ Service ของ Azure
  • machine learning programs - integrated end-to-end ML environment ที่ช่วย tracking, model training, feature development and management/ feature and model serving.
- Design a data integration and analytic solution with Azure Synapse Analytics

Azure Synapse Analytics เป็นชุดเครื่องมีที่ช่วยทำ Data Analytic ได้สะดวกรองรับในส่วน data ingestion, exploration และ transformation รวมถึงรองรับการทำ massively parallel processing (MPP) จาก PolyBase ใช้งานได้ SQL / NOSQL Azure Synapse Analytics มี Component ดังนี้

  • Azure Synapse SQL pool - serverless (Unplan) and dedicated (Plan) resource ที่รองรับ MPP
  • Azure Synapse Spark pool - Apache Spark Cluster รองรับ Custom Logic โดยใช้ Python, Scala, SQL, and C#
  • Azure Synapse Pipelines - cloud-based ETL and data integration service (Azure Data Factory)
  • Azure Synapse Link - near real-time analytics จากข้อมูลใน Azure Cosmos DB
  • Azure Synapse Studio - web-based IDE ที่ใช้จัดการ และทำงาน Analytic

Azure Data Factory or Azure Synapse Analytics

  • variety of data sources - ETL แบบ Free Code
  • Machine Learning - ใช้ built-in support Azure ML ได้
  • data lake integration - ถ้ามี data lake แล้วต่อ Azure Synapse
  • real-time analytics - ใช้ Azure Synapse Link
- Design strategies for hot, warm, and cold data paths

อ่านอันนี้ก็งงนะ Data Path คือ อะไร 5555

- Design an Azure Stream Analytics solution for data analysis

Azure Stream Analytics is a fully managed (PaaS offering), real-time analytics and complex event-processing engine //เพิ่งรู้ว่ามีอันนี้ ตอนดู 305 นี่แหละ หรือ อาจจะไม่ได้สนใจแต่แรก โดยเจ้า Stream Analytic รองรับ

  • Data streams - help us understand change over time
  • Event processing - temporal information at specific time เช่น เวลาที่รถผ่านด่านเก็บเงิน เป็นต้น
Feature ดูจาก Diagram ได้เลย

Azure Stream Analytics เอามาใช้ใน use-case ไหนบ้าง

  • Analyze real-time telemetry streams from IoT devices.
  • Build web logs and clickstream analytics.
  • Create geospatial analytics.
  • Execute remote monitoring and predictive maintenance of high value assets.
  • Perform real-time analytics on point-of-sale data.

สิ่งที่ควรพิจารณาเวลาใช้งาน Azure Stream Analytics

  • provisioning requirements - พอมันเป็น PAAS ไม่ต้องดู Maintenance Cost / Focus Business
  • costs - Streaming Units (SUs), Scaling up/down.
  • implementation
  • performance - complex queries to be parallelized and executed on multiple streaming nodes
  • security - TLS 1.2 และ In-Memory Processing

Summary: Summary and resources

Knowledge check: Design data integration

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.