การทำโมเดลข้อมูลคือกระบวนการออกแบบวิธีให้แอปพลิเคชันจัดเก็บข้อมูลในฐานข้อมูลที่ให้ไว้ ด้วยฐานข้อมูล NoSQL เช่น DynamoDB การทำโมเดลข้อมูลจึงแตกต่างจากการทำโมเดลด้วยฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูลเชิงสัมพันธ์ถูกสร้างขึ้นเพื่อความยืดหยุ่นและเหมาะสมสำหรับแอปพลิเคชันการวิเคราะห์อย่างยิ่ง ในการทำโมเดลข้อมูลเชิงสัมพันธ์ คุณจะเริ่มต้นได้จากเอนทิตีของคุณเป็นอันดับแรก เมื่อคุณได้ทำให้โมเดลเชิงสัมพันธ์มีความเป็นมาตรฐานแล้ว คุณจะสามารถตอบสนองต่อรูปแบบคำถามใดก็ได้ที่คุณต้องการในแอปพลิเคชันของคุณ
ฐานข้อมูล NoSQL (ไม่เชิงสัมพันธ์) ถูกออกแบบมาเพื่อความเร็วและขนาด ไม่ใช่ความยืดหยุ่น แม้ว่าประสิทธิภาพการทำงานของฐานข้อมูลเชิงสัมพันธ์จะลดลงเมื่อคุณปรับขนาดเพิ่มขึ้น การขยายฐานข้อมูลในแนวขวางเช่น DynamoDB จะให้ประสิธิภาพการทำงานที่สม่ำเสมอกันในทุกขนาด ผู้ใช้ DynamoDB บางรายมีตารางซึ่งมีขนาดใหญ่กว่า 100 TB และยังคงมีประสิทธิภาพในการอ่านและเขียนเป็นเช่นเดียวกับเมื่อมีตารางขนาดเล็กกว่า 1 GB
การจะได้มาซึ่งผลลัพธ์ที่ดีที่สุดด้วยฐานข้อมูล NoSQL เช่น DynamoDB จำเป็นต้องยกระดับความคิดจากฐานข้อมูลเชิงสัมพันธ์ทั่วไป ใช้วิธีการต่อไปนี้เมื่อทำโมเดลข้อมูลด้วย DynamoDB
1. ให้ความสัมพันธ์กับรูปแบบการเข้าถึง
เมื่อทำโมเดลข้อมูลรูปแบบใดๆ ก็ตาม คุณจะต้องเริ่มต้นด้วยแผนผังความสัมพันธ์ของเอนทิตี ซึ่งอธิบายถึงอ็อบเจ็กต์ (หรือเอนทิตี) ที่ต่างกันในแอปพลิเคชันของคุณและมันเชื่อมโยงกัน (หรือความสัมพันธ์กันระหว่างเอนทิตีของคุณ) เป็นอย่างไร
ในฐานข้อมูลเชิงสัมพันธ์ คุณจะต้องวางเอนทิตีของคุณไปในตารางโดยตรงและกำหนดความสัมพันธ์โดยใช้คีย์นอก หลังจากที่คุณได้กำหนดตารางข้อมูลของคุณแล้ว ฐานข้อมูลเชิงสัมพันธ์จะให้ภาษาคำถามที่ยืดหยุ่นเพื่อนำข้อมูลกลับไปยังรูปแบบที่คุณต้องการ
ใน DynamoDB คุณจะต้องคิดถึงรูปแบบการเข้าถึงก่อนทำโมเดลตารางของคุณ ฐานข้อมูล NoSQL มุ่งเน้นที่ความเร็ว ไม่ใช่ความยืดหยุ่น คุณจะต้องรู้วิธีการที่คุณจะเข้าถึงข้อมูลของคุณเป็นอันกับแรก แล้วจึงทำโมเดลข้อมูลของคุณในรูปแบบที่จะเข้าถึง
ก่อนการออกแบบตาราง DynamoDB ของคุณ ให้กำหนดทุกอย่างที่คุณต้องการไว้สำหรับการอ่านและเขียนข้อมูลลงในแอปพลิเคชันของคุณ ทำความเข้าใจและคิดถึงโฟลวทุกขั้นตอนในแอปพลิเคชันของคุณ เนื่องจากคุณจะต้องปรับให้ตารางของคุณเหมาะสมสำหรับรูปแบบการเข้าถึงข้อมูลของคุณ
2. ปรับจำนวนคำขอไปยัง DynamoDB ให้เหมาะสม
หลังจากที่กำหนดความต้องการของรูปแบบการเข้าถึงแอปพลิเคชันของคุณแล้ว คุณก็พร้อมที่จะออกแบบตารางของคุณ ควรออกแบบตารางของคุณเพื่อลดจำนวนคำขอไปยัง DynamoDB สำหรับแต่ละรูปแบบการเข้าถึง ตามหลักแล้ว แต่ละรูปแบบการเข้าถึงควรใช้เพียงหนึ่งคำขอไปยัง DynamoDB เนื่องจากคำขอใช้เครือข่ายมีความล่าช้า และเป็นการจำกัดจำนวนคำขอใช้เครือข่ายที่คุณจะใช้ในแอปพลิเคชันของคุณ
เพื่อปรับจำนวนคำขอไปยัง DynamoDB ให้เหมาะสม คุณต้องเข้าใจแนวคิดหลักบางประการ
● คีย์หลัก
● ดัชนีรอง
● ธุรกรรม
3. อย่าหลอกโมเดลเชิงสัมพันธ์
ผู้ใช้ DynamoDB ใหม่มักจะนำโมเดลเชิงสัมพันธ์ไปใช้บน DynamoDB ที่ไม่ใช่เชิงสัมพันธ์ หากทำเช่นนั้น คุณจะไม่ได้ประโยชน์ส่วนใหญ่ของ DynamoDB
สิ่งที่ไม่เป็นไปตามรูปแบบโดยส่วนมาก (การตอบสนองที่ไม่ได้ประสิทธิภาพในการแก้ไขปัญหา) ซึ่งผู้ใช้มักปฏิบัติด้วย DynamoDB ได้แก่
- การทำให้เป็นมาตรฐาน: ในฐานข้อมูลเชิงสัมพันธ์ คุณจะทำให้ข้อมูลของคุณมีความเป็นมาตรฐาเพื่อลดความซ้ำซ้อนของข้อมูลและพื้นที่ใช้ในการจัดเก็บให้น้อยลง แล้วจึงใช้การเชื่อมเพื่อรวมตารางที่ต่างกันหลายตาราง อย่างไรก็ตาม การเชื่อมตามขนาดมีความล่าช้าและราคาสูง DynamoDB ไม่ยอมให้ใช้การเชื่อมเนื่องจากทำให้เกิดความล่าช้าเมื่อตารางของคุณขยายตัวขึ้น
- ใส่ข้อมูลหนึ่งประเภทต่อหนึ่งตาราง: ตาราง DynamoDB ของคุณมักประกอบด้วยประเภทของข้อมูลที่แตกต่างกันในตารางเดียว ตัวอย่างเช่น เรามีเอนทิตี User, Game และ UserGameMapping ในหนึ่งตาราง ในฐานข้อมูลเชิงสัมพันธ์ รายการลักษณะนี้จะถูกทำให้เป็นสามตารางที่ต่างกัน
- มีดัชนีรองมากเกินไป: ผู้ใช้มักจะสร้างดัชนีรองสำหรับแต่ละรูปแบบการเข้าถึงที่ต้องการ DynamoDB ไม่มีโครงสร้างใดๆ มากำหนด ซึ่งรวมไปถึงดัชนีของคุณด้วยเช่นกัน ใช้ความยืดหยุ่นตามคุณลักษณะของคุณเพื่อนำดัชนีรองกลับมาใช้ใหม่เพียงรายการเเดียวในทุกประเภทของข้อมูลบนตารางเดียวกัน สิ่งนี้เรียกว่า ดัชนีเกิน
ในขั้นตอนด้านล่าง เราจะสร้างแผนผังความสัมพันธ์ของเอนทิตีและร่างรูปแบบการเข้าถึงของเรา รายการเหล่านี้ควรเป็นขั้นตอนแรกเมื่อใช้ DynamoDB จากนั้น ในโมดูลที่กำลังดำเนินการ เราจะใช้รูปแบบการเข้าถึงเหล่านี้ในการออกแบบตาราง
ระยะเวลาที่ใช้ในการศึกษาโมดูล: 20 นาที