الگوهای مدلسازی برای پایگاههای داده document، key-value، wide-column، graph و vector — چه زمانی embed، reference، denormalize یا bucket کنید.
پایگاههای داده NoSQL اسکیمای ثابت و join را با مقیاسپذیری افقی معامله میکنند. هر خانواده روابط را به روش خودش مدل میکند، پس الگوی دسترسی — نه فرم نرمال — است که ساختار را دیکته میکند.
جدول مرجع · 28 مورد
مدلسازی داده NoSQLExplained
28 of 28 rows
Document
سابسندهای تودرتو درون یک سند والد زندگی میکنند، نه در جدولهای جداگانه.
رابطههای one-to-few که با هم خوانده میشوند. یک سفارش با اقلام آن. یک کاربر با سه آدرس.
یک id خارجی ذخیره کنید، نه خود داده. آن را با یک خواندن دوم یا $lookup حل کنید.
زیرموجودیتهای بزرگ، مشترک یا دارای بهروزرسانی مستقل. پیوندهای چند-به-چند بین collectionها.
والد یک آرایه کوتاه از فرزندان را embed میکند؛ کل مجموعه بهصورت یک سند جا میشود و بارگذاری میشود.
چند شماره تلفن یا تنظیمات روی یک پروفایل. یک خواندن، والد و فرزندان را برمیگرداند.
فرزندان در collection خودشان زندگی میکنند؛ هر فرزند id والد را دارد، یا والد یک آرایه id محدود نگه میدارد.
مجموعههایی که برای embed کردن زیادی بزرگ یا زیادی مستقلاند. فرزندان را با id والد پرسوجو کنید.
فرزند id والد را ذخیره میکند؛ والد هرگز فرزندان را فهرست نمیکند چون مجموعه بیکران است.
رویدادها، لاگها یا رأیهای متصل به یک هاست یا کاربر. فرزندان را با id والد فیلتر و صفحهبندی کنید.
سندهایی از نوع موجودیت متفاوت یک collection را به اشتراک میگذارند و با یک فیلد type از هم تشخیص داده میشوند.
نظرها یا اعلانهایی که به انواع والد متصلاند و همگی با یک روش پرسوجو میشوند.
چند موجودیت حدی از شکل مشترک جدا میشوند تا اندازه یا ترافیکشان بقیه را منحرف نکند.
حسابهای معروف که فهرست دنبالکنندهها یا شمارندههایشان از سند عادی بزرگتر میشود.
هر بازنگری سندی جدید با همان id و شماره نسخه افزایشی است؛ پرسوجو آخرین را برمیگزیند.
ردپای حسابرسی و تاریخچه ویرایش، جایی که بازنگریهای قدیمی قابل پرسوجو میمانند.
مقادیر مشتق در زمان نوشتن محاسبه و کنار دادهای که خلاصه میکنند ذخیره میشوند.
جمعها، امتیازها و top-Nهایی که وگرنه در هر خواندن یک aggregation اجرا میکردند.
Key-value و wide-column
اصطلاح طراحی DynamoDB: فرو بردن انواع بسیاری از موجودیت در یک جدول با کلیدهای partition و sort بارگذاریشده.
بازیابی اقلام ناهمگون در یک پرسوجو بدون join.
یک صفت کلید به انواع بسیاری از موجودیت خدمت میکند و با پیشوندهایی مثل USER# یا ORDER# مشخص میشود.
طراحیهای single-table. اقلام مرتبط را زیر یک partition خوشهبندی و در یک پرسوجو بازیابی کنید.
کلید partition ردیفها را میان گرهها پخش میکند؛ کلید sort هر partition را مرتب میکند.
Cassandra و DynamoDB. پویش بازهای، لاگهای مرتب، کلیدهای ترکیبی سلسلهمراتبی.
چند صفت را در یک sort key جداشده انباره کنید — country#region#city — تا تطبیق پیشوند در سلسلهمراتب پایین برود.
سلسلهمراتب و فیلترهای چندوجهی. یک پرسوجوی بازهای مرتب جای بسیاری از lookupهای ایندکسشده را میگیرد.
رویدادها را در پنجرههای ثابت — ساعت، روز، ماه — زیر partitionها یا جدولهای اختصاصی گروهبندی کنید.
متریکها، لاگها و تلهمتری IoT. اندازه partition را محدود و داده سرد را قدیمی میکند.
فیلدهای پرمخاطب-خواندنی را میان رکوردها تکرار کنید تا پرسوجو هرگز به دنبال lookup دوم نرود.
بارهای کاری خواندنمحور که در آنها سازگاری نهایی قابل تحمل و ذخیرهسازی ارزان است.
یک ایندکس ثانویه ساختهشده روی صفتی که فقط برخی اقلام دارند؛ اقلام بدون آن هرگز وارد ایندکس نمیشوند.