การจัดการ DynamoDB โดยใช้ NoSQL Workbench
บทความนี้จะแนะนำเครื่องมือที่ช่วยให้การทำงานกับ DynamoDB เป็นเรื่องง่าย โดยจะอธิบายวิธีการติดตั้ง NoSQL Workbench บนระบบปฏิบัติการต่างๆ วิธีการเชื่อมต่อกับ DynamoDB บน AWS การใช้งานพื้นฐานของ NoSQL Workbench และวิธีการนำ Employee data model ซึ่งเป็นฐานข้อมูลตัวอย่างไปใช้งานบน DynamoDB ไม่ว่าคุณจะใช้ Windows, macOS หรือ Linux ก็สามารถทำตามขั้นตอนเหล่านี้ได้อย่างง่ายดาย มาเรียนรู้วิธีใช้เครื่องมืออันทรงพลังนี้เพื่อจัดการฐานข้อมูล NoSQL อย่างมีประสิทธิภาพกันครับ
เกี่ยวกับ DynamoDB และ NoSQL Workbench
DynamoDB คืออะไร
เป็นบริการฐานข้อมูล NoSQL แบบ Key-Value / Document ที่เป็น Fully Managed และ Serverless
ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
NoSQL Workbench คืออะไร
NoSQL Workbench เป็นแอปพลิเคชันฝั่งไคลเอนต์แบบ Cross-Platform สำหรับการพัฒนาและการดำเนินงานของ DynamoDB ซึ่งสามารถใช้งานได้บน Windows, macOS และ Linux
NoSQL Workbench เป็นเครื่องมือ Visual Tool แบบครบวงจรที่ช่วยในการ ออกแบบ (Design), สร้าง (Create), คิวรี (Query) และจัดการ (Manage) Table ของ DynamoDB โดยมีฟีเจอร์สำหรับ Data Modeling, Data Visualization และ Query Development เพื่อช่วยให้การทำงานกับ DynamoDB ง่ายขึ้น
ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
เตรียม IAM User สำหรับการเข้าถึง Amazon DynamoDB จากภายนอก AWS
จำเป็นต้องมี IAM User ใน AWS Account ที่กำหนดสิทธิ์สำหรับการเข้าถึง Amazon DynamoDB จากภายนอก AWS ก่อน
สร้าง IAM User
หากต้องการดูตัวอย่างภาพประกอบสามารถดูได้ที่ลิงก์นี้
เข้ามาที่หน้าจอ Identity and Access Management (IAM)
> Users
> คลิก Create user
แล้วจะตั้งค่าตามนี้
Step 1 - Specify user details
User details
・User name: dynamodb-external-user
・▢ Provide user access to the AWS Management Console (ไม่ต้องติ๊ก ❌️ เนื่องจากไม่ได้ใช้งานบน Console access)
・คลิก Next
Step 2 - Set permissions
ในส่วนนี้ไม่ต้องดำเนินการใดๆ เราจะเพิ่มสิทธิ์แบบ Inline policy ในภายหลัง ให้คลิก Next
ได้เลย
Step 3 - Review and create
ตรวจสอบข้อมูลการตั้งค่า แล้วคลิก Create user
สร้าง Inline policy ใน IAM User
เข้ามาที่หน้าจอ IAM User ที่สร้างเสร็จแล้ว และสร้าง Inline policy ตามนี้
・คลิก Add permissions
ในหัวข้อ Permissions policies
・เลือก Create inline policy
Step 1 - Specify permissions
・เลือก Policy editor เป็น JSON
・วาง Policy ด้านล่างนี้ แล้วแก้ไข [region]
และ [account-id]
ให้เป็นของคุณ แล้วคลิก Next
ด้านล่างสุด
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:UpdateItem",
"dynamodb:CreateTable",
"dynamodb:DeleteTable",
"dynamodb:DescribeTable",
"dynamodb:UpdateTable"
],
"Resource": [
"arn:aws:dynamodb:[region]:[account-id]:table/Employee",
"arn:aws:dynamodb:[region]:[account-id]:table/Employee2",
"arn:aws:dynamodb:[region]:[account-id]:table/Employee3"
]
},
{
"Effect": "Allow",
"Action": [
"dynamodb:ListTables",
"dynamodb:DescribeTable"
],
"Resource": "*"
}
]
}
ในรูปด้านล่างนี้จะเพิ่มแค่ Table Employee
ก็จะเพิ่ม Resource ไว้ในลักษณะนี้
Step 2 - Review and create
Policy details
・Policy name: DynamoDBSpecificTablesAccess
(ป้อนชื่อที่ต้องการตามความเหมาะสม)
・คลิก Create policy
เมื่อเสร็จแล้วจะแสดงหน้าจอแบบนี้ แล้วตรวจสอบ Policy โดยคลิก +
ที่ Policy name ในแท็บ Permissions เพียงเท่านี้การเพิ่มสิทธิ์ก็เสร็จสิ้น
สร้าง Access key ใน IAM User
เลือกแท็บ Security credentials
ในหน้าจอ IAM User ที่สร้างเมื่อสักครู่นี้ แล้วคลิก Create access key
แล้วดำเนินการตั้งค่าตามนี้
Step 1 - Access key best practices & alternatives
・Use case: Command Line Interface (CLI)
・Confirmation: ติ๊ก ✅️ I understand the above recommendation and want to proceed to create an access key.
・คลิก Next
Step 2 - Set description tag (optional)
・Description tag value: จะป้อนหรือไม่ป้อนก็ได้ แต่ครั้งนี้จะไม่ป้อน
・คลิก Create access key
Step 3 - Retrieve access keys
แล้วจะเข้ามาที่หน้าจอ Retrieve access keys โดยมี Access key
และ Secret access key
แบบนี้
แนะนำให้คลิก Download .csv file
เพื่อดาวน์โหลดไฟล์เก็บไว้
※หากออกจากหน้าจอนี้ไปแล้วจะไม่สามารถกลับเข้ามาได้อีก
แล้วตรวจสอบ Access key ตามนี้
・ตรวจสอบที่หัวข้อ Summary ที่ด้านบน
・ตรวจสอบที่หัวขอ Access key ในแท็บ Security credentials
เพียงเท่านี้ก็มี IAM User ที่พร้อมใช้สำหรับเชื่อมต่อกับ DynamoDB จาก NoSQL Workbench แล้ว
เตรียมสภาพแวดล้อม NoSQL Workbench
ดาวน์โหลดตัวติดตั้ง NoSQL Workbench
ดาวน์โหลดตัวติดตั้งตาม OS ที่ต้องการใช้งานจากเว็บไซต์ทางการ
แล้วเลือก OS ที่ต้องการติดตั้ง โดยครั้งนี้จะเลือกใช้ Windows
ติดตั้ง NoSQL Workbench
รันตัวติดตั้งที่ดาวน์โหลดมา และติดตั้ง NoSQL Workbench บนสภาพแวดล้อมของคุณ
เริ่มต้นใช้งาน NoSQL Workbench
เมื่อติดตั้งเสร็จมีไฟล์สำหรับรันโปรแกรมอยู่บน Desktop หรือที่อื่นๆ จึงสามารถเปิดใช้งานได้โดยการดับเบิลคลิก
※หลังจากติดตั้งเสร็จเรียบร้อยแล้วโปรแกรมจะเปิดขึ้นโดยอัตโนมัติ
คำอธิบายหน้าจอ NoSQL Workbench
หน้าจอตอนเริ่มต้นโปรแกรม (หน้าจอ Database Catalog)
หน้าจอ Database Catalog จะแสดงขึ้นมา
ให้กดปุ่ม Launch
ในหัวข้อ Amazon DynamoDB
หน้าจอ Home สำหรับใช้งาน DynamoDB
นี่คือหน้าจอหลังจากกดปุ่ม Launch
ในหัวข้อ Amazon DynamoDB
ในเมนูด้านซ้ายจะมีลิงก์กลับไปยัง AWS database Catalog ที่เปิดมาก่อนหน้านี้ รวมถึงลิงก์ไปยังหน้า Home นี้ด้วย ซึ่งสามารถสลับไปมาได้อย่างอิสระ
หน้าจอ Data Modeler
นี่คือหน้าจอที่ใช้สำหรับลงทะเบียน Data model
- Data model: คือโมเดลข้อมูลที่เรียกกันว่า Database
- Tables: คือ Table ตามชื่อเลย
การสร้าง Data Model มีอยู่ 3 รูปแบบหลักๆ ดังนี้:
- สร้างขึ้นมาใหม่ตั้งแต่ต้น
- ใช้ Template ที่มีให้เป็นตัวอย่าง
- นำเข้าจากไฟล์ JSON
หน้าจอ Visualizer
นี่คือหน้าจอที่สามารถเพิ่มข้อมูลลงใน Data Model ที่ลงทะเบียนไว้ และแสดงผลข้อมูลได้
หน้าจอ Operation Builder
นี่คือหน้าจอที่สามารถเชื่อมต่อกับ DynamoDB บน AWS (การเชื่อมต่อกับ DynamoDB บน AWS จำเป็นต้องมี AWS Account) และเชื่อมต่อกับ DynamoDB Local ได้
เชื่อมต่อจาก NoSQL Workbench ไปยัง DynamoDB
กลับมาที่หน้าจอโปรแกรม NoSQL Workbench
คลิก Operation builder
จากเมนูด้านซ้าย แล้วคลิก Add connection
แล้วจะเชื่อมต่อ NoSQL Workbench ไปยัง DynamoDB ในหน้าจอ Add a new database connection ดังนี้
แท็บ Remote
・* Connection name: Test DynamoDB connection
(ป้อนชื่อที่ต้องการ)
・* Default AWS Region: ap-southeast-1
(เลือก Region ที่จะสร้าง DynamoDB ครั้งนี้คือ Singapore)
・* Access key ID: ป้อน Access key ID ที่สร้างเตรียมไว้
・* Secret access key: ป้อน Secret access key ที่สร้างเตรียมไว้
・Persist connection: หากต้องการบันทึกการเชื่อมต่อให้ติ๊ก ✅️ ไว้ด้วย แต่ครั้งนี้เป็นการทดสอบจึงไม่ติ๊ก
・คลิก Connect
แล้วจะได้ Active connections ตามชื่อที่เรากำหนดแบบนี้ แล้วคลิก Open
แล้วดูที่ Tables จะเห็นว่ายังไม่มีรายการใดๆ ดังนั้นให้ดำเนินการขั้นตอนถัดไปเพื่อนำข้อมูล Commit เข้ามาที่นี่
ลงทะเบียนข้อมูลไปยัง DynamoDB บน AWS
ครั้งนี้จะลงทะเบียนข้อมูลโดยสร้าง Data model ในเมนู Data modeler แล้วทำการ Commit ด้วยฟีเจอร์ "Commit to Amazon DynamoDB" ในเมนู Visualizer เพื่อสร้างเป็น Table จริงใน DynamoDB บน AWS โดยใช้ NoSQL Workbench
สร้าง Data model โดยใช้ Template
มาลองลงทะเบียนข้อมูลโดยใช้ NoSQL Workbench กันจริงๆ ดูครับ
ครั้งนี้เราจะใช้ Template (Employee) ที่มีให้เป็นตัวอย่างในการทดลองใช้งาน
Employee (เกี่ยวกับ Employee data model)
Data model นี้เป็นโมเดลระดับเริ่มต้น ซึ่งแสดงรายละเอียดพื้นฐานของพนักงาน เช่น รหัสผู้ใช้งาน (Alias), ชื่อ, นามสกุล, ตำแหน่งงาน, ผู้จัดการ และทักษะต่างๆ
Data model นี้แสดงให้เห็นเทคนิคหลายอย่าง เช่น การจัดการกับ Attribute ที่ซับซ้อน อย่างการมีหลายทักษะ
โมเดลนี้เป็นตัวอย่างของความสัมพันธ์แบบ "หนึ่งต่อหลายๆอย่าง (One-to-Many)" ระหว่างผู้จัดการกับพนักงานภายใต้การดูแล ซึ่งทำได้โดยใช้ Secondary Index DirectReports
Data model นี้รองรับการเข้าถึงข้อมูลในรูปแบบต่อไปนี้
- การดึงข้อมูลพนักงานโดยใช้ รหัสผู้ใช้งาน (Login Alias) ผ่านตารางชื่อ Employee
- การค้นหาพนักงานตามชื่อ โดยใช้ Global Secondary Index ที่ชื่อว่า Name บนตาราง Employee
- การดึงข้อมูลพนักงานที่รายงานตรงต่อผู้จัดการ โดยใช้ Login Alias ของผู้จัดการ ผ่าน Global Secondary Index ที่ชื่อว่า DirectReports บนตารางพนักงาน
เลือก Data modeler
จากเมนูด้านซ้าย แล้วคลิก Create new data model
ด้านขวา
ครั้งนี้จะเลือกใช้ Employee Data Model
เนื่องจากเป็นการทดลองในรูปแบบ Sample
ให้ป้อนชื่อว่า SampleEmployee
ในช่อง "* Save as" (ชื่อของ Data Model) เนื่องจากเป็นฟิลด์บังคับ แล้วคลิกที่ปุ่ม Create
เพื่อสร้าง Data Model
สามารถตรวจสอบได้ว่ามีการลงทะเบียน "Employee" ไว้ใน Tables โดยมี "Name" และ "DirectReports" อยู่ใน GSIs แล้ว
ลองตรวจสอบข้อมูลด้วย Visualizer
เลือก Visualizer
จากเมนูด้านซ้าย จะเห็นว่า Employee ถูกเพิ่มเข้ามาแล้ว
หากเลือก Aggregate view
จะช่วยให้สามารถสลับดูระหว่าง Table และ GSI ได้สะดวกยิ่งขึ้น
ลองเพิ่มข้อมูล
※ในขั้นตอนนี้จะแนะนำเกี่ยวกับการเพิ่มข้อมูลก่อนที่จะนำไปใช้จริง ดังนั้นจะทำหรือไม่ทำก็ได้
ให้เลือก "Employee > Actions" แล้วจะมี 4 รายการแสดงขึ้นมาด้านล่าง ให้เลือก "Edit data" เพื่อแก้ไขหรือเพิ่มข้อมูล
- Edit data
- Configure sample data
- Add sample data
- Import CSV file
แล้วคลิก Add new row
ก็จะมีแถวของ Text box ที่ว่างอยู่เพิ่มขึ้นมา
จากนั้นให้ป้อนข้อมูลลงไป แล้วคลิก Save changes
เพียงเท่านี้ก็สามารถเพิ่มข้อมูลได้แล้ว
สร้าง Table ใน DynamoDB จาก Data model
ขั้นตอนนี้จะสร้าง Table ใน DynamoDB จาก Data model โดยการ Commit
คลิก Commit to Amazon DynamoDB
ในเมนู Visualizer
แล้วตั้งค่าในแท็บ Use saved connections ดังนี้
・* Saved connections: เลือก Active connections ที่เชื่อมต่อเตรียมไว้ในตอนแรก ครั้งนี้คือ Test DynamoDB connection
・Overwrite existing tables: This option will delete all items in the existing tables. (ไม่จำเป็นต้องติ๊ก ❌ ถ้ายังไม่เคยสร้าง Table นี้มาก่อน แต่ควรติ๊ก ✅ ถ้าเคยสร้าง Table นี้ไว้แล้วและต้องการลบข้อมูลเก่าออกทั้งหมด)
・คลิก Commit
แล้วรอสักครู่
คลิกเข้ามาที่หน้าจอ "Operation builder > Open (Remote [Active connections name])"
แล้วดูที่ Tables จะเห็นว่ามี Table Employee
ถูกสร้างขึ้นมาแล้ว
สรุป
เครื่องมือ NoSQL Workbench มีความสามารถจัดการ DynamoDB ได้อย่างรวดเร็วและง่ายดาย ซึ่งทำให้การเตรียม Database ที่จะนำไปใช้บน AWS นั้นเป็นเรื่องง่าย
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !