DynamoDB Basic – قسمت 1: مقدمه DynamoDB
1. اجزای اصلی آمازون DynamoDB
- جدول: مانند سایر سیستم های پایگاه داده، DynamoDB داده ها را در جداول ذخیره می کند. جدول مجموعه ای از اقلام است.
- مورد: هر جدول حاوی صفر یا چند مورد است. موارد موجود در DynamoDB مشابه مفهوم ردیف ها در پایگاه داده های رابطه ای، رکوردها یا تاپل ها در سایر سیستم های پایگاه داده هستند. در DynamoDB محدودیتی برای تعداد آیتم هایی که می توان در جدول ذخیره کرد وجود ندارد.
- صفت: هر مورد شامل یک یا چند ویژگی است. یک ویژگی یک عنصر داده پایه است که نیازی به تجزیه بیشتر ندارد. ویژگی ها در DynamoDB از بسیاری جهات شبیه به ستون ها در سایر سیستم های پایگاه داده هستند.
2. کلید اصلی
هنگام ایجاد جدول، علاوه بر نام جدول، باید کلید اصلی جدول را نیز مشخص کنید. کلید اصلی به طور منحصربهفرد هر آیتم را در جدول شناسایی میکند و اطمینان میدهد که هیچ دو مورد نمیتوانند کلید یکسانی داشته باشند. DynamoDB از دو نوع کلید اصلی پشتیبانی می کند: کلید پارتیشن و کلید اولیه ترکیبی.
کلید پارتیشن یک کلید اولیه ساده است که از یک ویژگی به نام کلید پارتیشن تشکیل شده است. DynamoDB از مقدار کلید پارتیشن به عنوان ورودی هش داخلی استفاده می کند و خروجی از هش پارتیشن (حافظه فیزیکی داخل DynamoDB) را که آیتم در آن ذخیره می شود، تعریف می کند. در جدولی که فقط یک کلید پارتیشن دارد، هیچ دو موردی نمی توانند مقدار کلید پارتیشن یکسانی داشته باشند.
کلید اولیه ترکیبیاز سوی دیگر، از کلید پارتیشن و یک کلید مرتب سازی تشکیل شده است. DynamoDB از مقدار کلید پارتیشن به عنوان ورودی هش داخلی استفاده می کند و خروجی از هش پارتیشن (حافظه فیزیکی داخل DynamoDB) را که آیتم در آن ذخیره می شود، تعریف می کند. همه موارد با مقدار کلید پارتیشن یکسان، به ترتیب مرتبسازی شده بر اساس مقدار کلید مرتبسازی، با هم ذخیره میشوند. در یک جدول با یک کلید پارتیشن و یک کلید مرتب سازی، چندین آیتم می توانند مقدار کلید پارتیشن یکسانی داشته باشند، اما آن آیتم ها باید مقادیر کلید مرتب سازی متفاوتی داشته باشند. کلید اولیه ترکیبی به شما انعطاف پذیری بیشتری در هنگام جستجوی داده ها می دهد.
3. شاخص های ثانویه
شما می توانید یک یا چند نمایه ثانویه را روی یک جدول ایجاد کنید.
شاخصهای ثانویه امکان جستجوی دادهها در جدول را با کلیدهای متفاوت از کلید پارتیشن اصلی و مرتبسازی جدول فراهم میکنند. با DynamoDB، عملیات جستجوی داده بسیار سریعتر و مقرون به صرفه تر از اسکن است.
در اینجا یک مثال از جدول DynamoDB آورده شده است:
اگر عملیات کوئری داده را انجام دهیم، می توانیم داده ها را با مقدار کلید پارتیشن و کلید مرتب سازی پیدا کنیم.
اگر عملیات اسکن داده را انجام دهیم، کل جدول را اسکن می کنیم و سپس با هر ویژگی فیلتر می کنیم. (هنگام اجرای فیلتر، همچنان باید هزینه اسکن کل جدول را صرف کنیم.)
DynamoDB شما را مجبور به استفاده از ایندکس ها نمی کند، اما به برنامه های شما در هنگام درخواست داده ها انعطاف بیشتری می دهند. پس از ایجاد یک نمایه ثانویه بر روی جدول، می توانید داده ها را از ایندکس به همان روشی که خواندن داده ها از جدول خوانده می شود، بخوانید.
DynamoDB از دو نوع شاخص پشتیبانی می کند:
شاخص های ثانویه جهانی، که دارای کلیدهای پارتیشن و کلیدهای مرتب سازی هستند که ممکن است با نمایه های جدول متفاوت باشند.
شاخص های ثانویه محلی، که دارای کلید پارتیشن مشابه با جدول هستند اما کلید مرتب سازی متفاوتی دارند.
هر جدول در DynamoDB دارای حداکثر 20 نمایه ثانویه جهانی (حد پیش فرض) و 5 نمایه ثانویه محلی است.
4. قوانین نامگذاری و انواع داده ها
جداول، خواص و سایر اشیاء در DynamoDB باید دارای نام باشند. قوانین نامگذاری DynamoDB به شرح زیر است:
همه نام ها باید با UTF-8 کدگذاری شوند و به حروف بزرگ و کوچک حساس باشند.
نام جدول و نام فهرست باید بین 3 تا 255 کاراکتر باشد و فقط می تواند شامل نویسه های زیر باشد:
- A تا Z
- A تا Z
- 0 تا 9
- _(تاکید)
- (خط ربط)
- . (نقطه)
نام های صفت باید حداقل یک کاراکتر طول داشته باشد، اما بیش از 64 کیلوبایت نباشد.
موارد زیر استثنا هستند. این نام های دارایی نمی توانند بیشتر از 255 کاراکتر باشند:
- نام کلید پارتیشن Secondary Index.
- فهرست ثانویه نام های کلیدی را مرتب می کند.
- نام هر ویژگی مورد انتظار مشخص شده توسط کاربر (فقط برای SecondaryIndexهای محلی اعمال می شود).
DynamoDB از انواع داده های مختلف برای ویژگی های جدول پشتیبانی می کند که می توان آنها را به صورت زیر طبقه بندی کرد:
- انواع اسکالر: یک نوع اسکالر تنها می تواند یک مقدار را نشان دهد. انواع اسکالر عددی، رشته ای، باینری، بولی و تهی هستند.
- انواع سند: یک نوع سند می تواند یک ساختار پیچیده با ویژگی های تو در تو، مانند یک سند JSON را نشان دهد. انواع سند لیست و نقشه هستند.
- انواع را تنظیم کنید: یک نوع مجموعه می تواند مقادیر اسکالر زیادی را نشان دهد. انواع مجموعه عبارتند از مجموعه رشته ای، مجموعه عددی و مجموعه باینری.
5. سازگاری را بخوانید
در نهایت سازگار می خواند
- وقتی دادهها را از جدول DynamoDB میخوانید، پاسخ ممکن است نتیجه عملیات نوشتن اخیراً تکمیلشده را منعکس نکند.
- پاسخ ها ممکن است شامل برخی از داده های قدیمی باشد.
- اگر پس از مدت کوتاهی درخواست خواندن خود را تکرار کنید، پاسخ آخرین داده ها را برمی گرداند.
خواندنی های کاملاً منسجم
وقتی درخواست می کنید خواندنی های کاملاً منسجم، DynamoDB پاسخی را با بهروزترین دادهها برمیگرداند، که منعکسکننده بهروزرسانیهای همه نوشتههای قبلی موفقیتآمیز است. با این حال، این سازگاری با برخی نکات منفی همراه است:
- خواندنی های کاملاً منسجم در صورت وجود مشکلات یا قطعی شبکه ممکن است در دسترس نباشد. در این سناریو، DynamoDB ممکن است برگردد خطای سرور (HTTP 500).
- خواندنی های کاملاً منسجم ممکن است تاخیر بالاتری نسبت به در نهایت سازگار می خواند.
- شاخص های ثانویه جهانی پشتیبانی نمی شوند خواندنی های کاملاً منسجم.
- خواندنی های کاملاً منسجم از ظرفیت توان دو برابری استفاده می کند در نهایت سازگار می خواند.
6. حالت ظرفیت خواندن/نوشتن
حالت درخواستی
- آمازون DynamoDB بر حسب تقاضا یک گزینه پرداخت انعطاف پذیر است که قادر به ارائه هزاران درخواست در ثانیه بدون برنامه ریزی ظرفیت است. DynamoDB درخواستی برای درخواستهای خواندن و نوشتن پرداخت بر اساس تقاضا ارائه میدهد، بنابراین شما فقط برای آنچه استفاده میکنید پرداخت میکنید.
- وقتی حالت درخواستی را انتخاب می کنید، DynamoDB فوراً به حجم کاری شما پاسخ می دهد زیرا به هر سطح ترافیکی که قبلاً رسیده بود افزایش یا کاهش می یابد. اگر توان عملیاتی حجم کاری به اوج جدیدی برسد، DynamoDB به سرعت برای تطبیق با حجم کار سازگار می شود. جداول با استفاده از حالت درخواستی همان تأخیر میلی ثانیه ای تک رقمی، تعهد قرارداد سطح سرویس (SLA) و امنیتی را ارائه می دهند که DynamoDB قبلاً ارائه می کند. شما می توانید در صورت تقاضا برای جداول جدید و موجود انتخاب کنید و می توانید به استفاده از موجود ادامه دهید DynamoDB API بدون تغییر کد.
- اگر هر یک از موارد زیر درست باشد، حالت درخواستی انتخاب خوبی است:
- شما یک برد جدید با حجم کاری ناشناخته ایجاد می کنید.
- شما ترافیک برنامه غیرقابل پیش بینی دارید.
- شما فقط سهولت پرداخت برای چیزی که استفاده می کنید را دوست دارید.
حالت ارائه شده
- اگر حالت تدارک دیده شده را انتخاب کنید، تعداد خواندن و نوشتن در ثانیه مورد نیاز برای برنامه خود را مشخص می کنید. می توانید از مقیاس خودکار برای تنظیم خودکار ظرفیت جدول خود در پاسخ به تغییرات ترافیک استفاده کنید. این به شما کمک می کند تا استفاده از DynamoDB خود را مدیریت کنید تا در نرخ درخواست مشخص شده یا کمتر از آن برای پیش بینی هزینه باقی بماند.
- اگر یکی از موارد زیر درست باشد، حالت ارائه شده گزینه خوبی است:
- شما ترافیک برنامه قابل پیش بینی دارید.
- شما برنامه هایی را با ترافیک ثابت یا افزایشی اجرا می کنید.
- برای کنترل هزینه ها می توانید نیازهای ظرفیت را پیش بینی کنید.