برنامه نویسی

من 5 سال در ساخت با DynamoDB گذراندم ، در اینجا 3 مورد غذای برتر من وجود دارد

5 سال گذشته در حال ساختن پایگاه داده های مقیاس پذیر برای مشتری و سازمان است.

در اینجا چند درس وجود دارد که من در این راه آموخته ام.

بسیاری از این موارد موضوعاتی است که بسیاری از کاربران DynamoDB دارند و یادگیری از این موارد شما را با یک مزیت ناعادلانه تنظیم می کند.

1. الگوهای دسترسی خود را درک کنید

قبل از شروع هرگونه طراحی پایگاه داده با DynamoDB ، این کار را متوقف کرده و به جای آن انجام دهید: الگوهای دسترسی به داده های خود را شناسایی و درک کنید.

منظور من این است که مدتی وقت بگذارید تا دریابید که کاربران شما چگونه داده های برنامه شما را می خوانند و می نویسند.

به عنوان مثال ، آیا کاربران محصولات شما را براساس دسته بندی یا به اصطلاح محبوب ترین مرور می کنند؟ (این می تواند هر دو باشد)

آیا به فروشندگان اجازه می دهید چندین محصول را همزمان اضافه کنند یا فقط یک مورد؟

با روشی که برنامه شما معمولاً داده ها را واگذار می کند که باید به شما بگوید که چگونه آن را مدل می کنید.

به جای استفاده از یک مدل داده کلی ، داده های خود (یعنی کلیدهای اصلی) را بر اساس نحوه پرس و جو از آنها مدل کنید.

اگر برنامه شما غالباً داده های کاربران را به همراه سفارشات و سابقه خرید خود پرس و جو می کند ، باید اطلاعات کاربر ، سفارشات و خریدها را با استفاده از همان کلید پارتیشن ذخیره کنید.

DynamoDB برای تأخیر در مقیاس و طراحی بر اساس الگوهای دسترسی برنامه شما بهینه سازی می کند یا سرعت و مقیاس پذیری را می شکند.

2. طراحی کلید پارتیشن به شما امکان می دهد مقیاس

همیشه ابتدا به کاردینال بودن بالا فکر کنید.

کاردینال بودن بالا صرفاً اندازه گیری منحصر به فرد بودن کلیدهای پارتیشن شماست.

یک کلید پارتیشن کاردینال بالا به عنوان مثال “userid” یا “productId” است – معمولاً فقط در پایگاه داده شما وجود دارد.

یک کلید پارتیشن کم کاردینال به عنوان مثال “وضعیت” یا “iSfeatured” است – می تواند مقادیر مشترک زیادی مانند “فعال” یا “درست/نادرست” باشد.

هرچه کاردینال بودن کلید پارتیشن بالاتر باشد ، پایگاه داده شما می تواند مقیاس بیشتری داشته باشد. کلیدهای پارتیشن که دارای مقادیر مشترک زیادی هستند ، به پارتیشن های داغ تبدیل می شوند – پارتیشن هایی که ترافیک زیادی دارند.

پارتیشن شما همیشه نیازی به داشتن یک ارزش منحصر به فرد واحد ندارد ، گاهی اوقات چاره ای ندارید که به آن ارزشی بدهید که به اشتراک گذاشته شود. نکته ای که باید در اینجا به خاطر بسپارید این است که کلید پارتیشن شروع به محبوب شدن می کند ، باید به دنبال آن باشید.

کلیدهای پارتیشن Sharding می توانند به سادگی اضافه کردن پیشوند قبل از نام کلید پارتیشن مانند تاریخ یا مقدار مکان باشند. این می تواند بیشتر پارتیشن در کاردینالیت بیشتر شود.

3. طبقه بندی طراحی کلید به شما امکان فیلتر می کند

API DynamoDB دارای یک روش “FilterExpression” است. این به شما امکان می دهد تا موارد فیلتر انعطاف پذیری بالایی داشته باشد.

از آن استفاده نکنید

چرا؟

خوب از آنجا که FilterExpressions تمام داده های موجود در پرس و جو را واگذار می کند و پس از گرفتن داده ها ، فیلتر را اعمال می کند. این در اصل بدان معنی است که شما بدون بهره برداری از فیلتر ، واحدهای ظرفیت و هزینه های مشابه را خرج می کنید.

بنابراین چگونه می توانید به جای آن داده ها را در DynamoDB فیلتر کنید؟

از کلیدهای مرتب سازی استفاده کنید.

کلیدهای مرتب سازی از عملیات پرس و جو زیر پشتیبانی می کنند:

= (برابری)
Begins_With () (کلید مرتب سازی با بستر شروع می شود)
<= (کمتر از یا مساوی)

= (بزرگتر از یا مساوی)
بین (کلید مرتب سازی بین مقدار A و B است)
با استفاده از اپراتور Begins_With () ، می توانیم فیلترهای قدرتمندی را انجام دهیم.

به عنوان مثال ، اگر ما نیاز به فیلتر کردن اتاق های هتل بر اساس ویژگی ها داریم می توانیم از طراحی کلید مرتب سازی زیر استفاده کنیم:

room#####
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

به عنوان مثال:
اتاق 1: “اتاق#نمای دریا#2-مهمان#سیگار کشیدن#F1#101”
اتاق 2: “اتاق#نمای دریا#3-مهمان#سیگار کشیدن#F2#201”
اتاق 3: “اتاق#باغ-نمای باغ#4-مهمان#بدون سیگار#F3#301”
با استفاده از مدل داده بالا می توانیم اتاق ها را با نمای آنها ، تعداد مهمانان ، ویژگی ها (مانند سیگار کشیدن مجاز) ، شماره کف و شماره اتاق فیلتر کنیم.

در این مقاله ، من در مورد استفاده از روش regins_with () برای انجام این استراتژی های قدرتمند فیلتر ، بیشتر به جزئیات می پردازم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا