# Azure Storage

ในคอร์สนี้เราจะลงลึงในตัว **Azure Storage** กัน ซึ่งเจ้าตัวนี้มันมีหน้าที่เอาไว้เก็บข้อมูลทุกๆอย่าง และข้อดีที่ติดตัวมันมากตั้งแต่ต้นเลยคือ สามารถรับโหลดหนักๆได้ชิวๆ มี security ที่หนานแน่น รองรับการเก็บแบบ Structural และ Nonstructural อีกด้วย บลาๆ (คือถ้าไล่หมดนี่ผมคงต้องไปขอค่าโฆษณาจาก Microsoft แล้วล่ะ ฮ่าๆ) ดังนั้นใครที่กำลังมองหาที่เก็บไฟล์แบบเมพๆอยู่ล่ะก็ไม่ควรพลาด Azure Storage

## 🤔 แล้วมันเก็บอะไรได้บ้าง ?

หลักๆตัว Azure Storage เขาแบ่งการเก็บข้อมูลออกเป็น 4 กลุ่มตามนี้

### 1.Blob storage <a href="#blob-storage" id="blob-storage"></a>

ที่เก็บไฟล์ทั่วไป เช่น ข้อความ, รูป, เสียง, วีดีโอ, เอกสาร บลาๆ หรือเราเรียกของพวกนี้อีกอย่างว่า **Unstructured data** นั่นเอง ซึ่งเราสามารถกำหนดสิทธิ์ในการเข้าถึงได้ หรือจะให้มันทำการเข้ารหัสไฟล์ให้เรา **Encrypted data** เพื่อป้องกันไม่ให้คนอื่นมาอ่านก็ยังได้ อีกทั้งเรายังสามารถเลือกเปิดแชร์ให้ใครเข้ามาโหลดไฟล์ก็ได้อีกด้วย

### 2.Azure Files <a href="#azure-files" id="azure-files"></a>

กลุ่มนี้จะเป็นการเก็บ Network drive หรือพูดง่ายๆคือเก็บไดรฟ์ไว้บนคลาว์ได้เลย แล้วเครื่องไหนที่เชื่อมเข้ามาก็สามารถแชร์ไดรฟ์กันได้ด้วย ให้เห็นภาพง่ายๆคือพวก Dropbox, Google Drive, OneDrive นั่นเอง หรือจะเอาไว้เก็บ capture OS image ก็ยังได้เลยนะ

### 3.Queue storage <a href="#queue-storage" id="queue-storage"></a>

เป็นที่เก็บ **message** ที่มีการทำงานเป็น **คิว** ซึ่งพฤติกรรมเจ้าตัวนี้มันจะเก็บข้อมูลแบบมีลำดับใครมาก่อนมาหลังนั่นเอง ส่วนการใช้งานจะออกไปในเชิงการส่งข้อมูลจากที่หนึ่งไปยังอีกที่หนึ่ง แล้วเราต้องการการันตีว่าข้อข้อมูลพวกนั้นถูกส่งไปแน่ๆ เพราะคิวมันจะมีตัวช่วยในการตรวจสอบงานให้เราด้วย

### 4.Table storage <a href="#table-storage" id="table-storage"></a>

เป็นที่เก็บข้อมูลที่อยู่ในรูปแบบของตาราง และสามารถเก็บข้อมูลที่เป็น NoSQL ได้ จินตนาการง่ายๆว่ามันคือฐานข้อมูลประเภทนึงที่ยืดหยุ่นมากๆก็ได้

## 🤔 มันต่างกับที่ฝากไฟล์ทั่วไปยังไง ?

หลายเรื่องเลยจะไม่รู้จะพูดเรื่องไหนก่อนดี เลยขอเอาเรื่องที่ทุกคนเห็นภาพได้ง่ายๆละกัน

### ราคา

ถูกม๊วกกกกกก คือถ้าเลือกเก็บไฟล์เฉยๆเลยนะ เขาคิด **GB ละ $0.02 USD ราว 0.61บาท/เดือน อ่ะ!!** คือแค่เห็นราคานี้ผมจบเลย ถูกกว่าไปซื้อ Harddisk มาใช้เองซะอีก

![อุต๊ะ! 1GB คิดไม่ถึงบาท](/files/-LnFO5ZM8JcRn6Tgs2bq)

### ไฟล์ไม่หาย

ถ้าเราเก็บไฟล์บนคลาว์เนี่ยบอกเลยว่าอยู่คงทนถาวร ไม่ใช่เหมือนที่ฝากไฟล์ที่วันดีคืนไฟล์หายซะงั้น เพราะเขามีระบบ backup ไฟล์ให้เราไปเก็บไว้ 3 ที่เลย ถ้าไฟล์ที่นึงหายมันก็จะใช้ตัว backup เอากลับมาให้ทันที แถมตัว Azure Storage ยังสามารถให้เราเลือก Backup ไปหลายๆที่ทั่วโลกได้ด้วย!! คิดภาพง่ายๆว่าเก็บที่เดียวกลัวไม่ชัวร์เขาเลยมีระบบ backup ไปทั่วโลกให้เลย ส่วนใครจะเห็นได้บ้างอันนี้ขึ้นกับเรากำหนดครับ (default คือเราคนเดียวเท่านั้น)

![เลือกเลยอยากกระจายเก็บข้อมูลไว้ที่ไหนบ้าง](/files/-LvAIRgOLxrBReLMpkbp)

### ความปลอดภัย

ที่เก็บข้อมูลอันนี้สุดยอดมาก เราสามารถไปตั้งให้เขาเข้ารหัสไฟล์ให้เราได้ด้วย!! เผื่อเราเผลอเปิดทิ้งไว้ไรงี้ และระดับความปลอดภัยนี่เป็นมาตรฐานระดับโลก ยังไม่เคยได้ยินข่าวว่าถูกเจาะได้เลยนะ (มีแต่บริษัทตั้งค่าไม่ดีแล้วรั่วหลุดมาเอง อุ๊ปปปปปส์)

### เข้าถึงได้หลากหลาย

เพียงแค่มี internet เราก็สามารถเข้าใช้งาน Azure Storage ได้เลย เพราะมันทำงานผ่าน REST API นั่นเอง อีกทั้งภาษาหลักๆบนโลกนี้เขาก็มี Library รองรับให้เราไปเขียนโปรแกรมเพื่อจัดการไฟล์ได้เลย

ลิงค์สำหรับ Library แต่ละภาษาและรวมถือ REST API ด้วย

* [Azure Storage REST API](https://docs.microsoft.com/rest/api/storageservices/)
* [Azure Storage client library for .NET](https://docs.microsoft.com/dotnet/api/overview/azure/storage)
* [Azure Storage client library for Java/Android](https://docs.microsoft.com/java/api/overview/azure/storage)
* [Azure Storage client library for Node.js](https://docs.microsoft.com/javascript/api/azure-storage)
* [Azure Storage client library for Python](https://github.com/Azure/azure-storage-python)
* [Azure Storage client library for PHP](https://github.com/Azure/azure-storage-php)
* [Azure Storage client library for Ruby](https://github.com/Azure/azure-storage-ruby)
* [Azure Storage client library for C++](https://github.com/Azure/azure-storage-cpp)

นอกจากจะเขียนโปรแกรมทำงานตรงๆแล้ว เขายังมี Tools ต่างๆให้เราทำงานร่วมได้เลย เช่นพวก command line หรือ โปรแกรมจัดการ

* [Azure Storage Explorer](https://azure.microsoft.com/features/storage-explorer/)
* [Azure PowerShell Cmdlets for Storage](https://docs.microsoft.com/powershell/module/az.storage)
* [Azure CLI Cmdlets for Storage](https://docs.microsoft.com/cli/azure/storage)
* [AzCopy Command-Line Utility](https://aka.ms/downloadazcopy)
* [Azure Storage Client Tools](https://docs.microsoft.com/en-us/azure/storage/storage-explorers)
* [Azure Developer Tools](https://azure.microsoft.com/tools/)

## 🤔 เท่านี้เองเหรอ ?

คือนี่กะจะให้ผมเขียนหนังสือเลยเหรอ ? จริงๆที่ว่ามานี่เป็นแค่ส่วนนึงของเขาเท่านั้นที่สามารถทำได้ และแต่ละตัวที่เกริ่นมาก็มีรายละเอียดเยอะม๊วกๆๆๆๆ เพื่อตอบโจทย์ทุกสถานะการณ์ของการเก็บไฟล์เลย ดังนั้นเตรียมอ่านต่อในรายละเอียดแต่ละเรื่องเอาละกัน

ยกตัวอย่างนิดนึงที่ไม่ได้พูดถึงก็ได้ เราสามารถไปตั้งให้เวลามีคนอัพโหลดรูปเข้ามาแล้วเขาจะเอารูปไปสร้างเป็น thumbnail ให้เหมาะกับหน้าจอหลายๆ size ก็มี หรือ อัพโหลดวีดีโอแล้วทำการแปลงฟอร์แมตให้อ่านได้หลากหลายก็มี แถมยังมี .... พอเต๊าะ

## 🧭 เนื้อหาของคอร์สนี้ทั้งหมด

### Blob Storage

{% content-ref url="/pages/-LnrGnBo2ImwKQm-k1rb" %}
[ลองสร้างที่เก็บไฟล์กันเลย](/cloud/azure-storage/blobs/create.md)
{% endcontent-ref %}

{% content-ref url="/pages/-LntTkF5K43EZXBxHq80" %}
[เข้าใจ Blob storage ให้มากขึ้น](/cloud/azure-storage/blobs/detail.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Lntc8rmxBD2L\_6s1hDW" %}
[ลองเขียนโค้ดอัพโหลดไฟล์กันบ้าง](/cloud/azure-storage/blobs/blob-code-01.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Lo4D77X5Ufyis6XRTCA" %}
[สร้างเว็บจากที่ฝากไฟล์บนคลาว์](/cloud/azure-storage/blobs/staticweb.md)
{% endcontent-ref %}

{% hint style="warning" %}
เนื้อหาของคอร์สนี้จะค่อยๆเอามาเติมเรื่อยๆ คอยติดตามได้จากหน้านี้ หรือไม่ก็หน้าอัพเดทข่าวสารที่อยู่ตรง side menu ครับ
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.saladpuk.com/cloud/azure-storage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
