موضوع مقاله: افراز (پایگاه داده) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # افراز (پایگاه داده) | مقدمه: افراز یا پارتیشن به تقسیم یک پایگاه داده منطقی یا اجزای تشکیل‌دهنده آن، به بخش‌های مستقل و مجزا گفته می‌شود. | ## بخش 1: افراز (پایگاه داده) | پارتیشن‌بندی پایگاه داده به فرایند شکستن آگاهانه یک پایگاه داده بزرگ به پایگاه داده‌های کوچک‌تر با هدف مقیاس‌پذیری اشاره دارد. در یک پایگاه داده افراز شده، هر قطعه داده دقیقاً به یک پارتیشن تعلق دارد و عملاً هر پارتیشن به‌عنوان یک پایگاه داده کوچک مستقل عمل می‌کند. پارتیشن‌بندی پایگاه داده معمولاً به دلایلی مثل مدیریت‌پذیری، کارایی یا دسترس‌پذیری، یا متعادل‌سازی بار انجام می‌شود. این روش در سامانه‌های مدیریت پایگاه داده توزیع‌شده بسیار رایج است؛ که در آنها هر پارتیشن می‌تواند روی چندین گره توزیع شود و کاربران در هر گره، تراکنش‌های محلی را روی پارتیشن مربوطه انجام دهند. این کار باعث افزایش کارایی برای سامانه‌هایی می‌شود که تراکنش‌های منظم بر روی نماهای مشخصی از داده دارند، در حالی که دسترس‌پذیری و امنیت نیز حفظ می‌شود. پارتیشن‌بندی امکان توزیع مجموعه‌داده‌ها روی چندین دیسک و توزیع بار پرس‌وجوها روی چندین پردازنده را فراهم می‌کند. برای پرس‌وجوهایی که تنها روی یک پارتیشن عمل می‌کنند، هر گره به طور مستقل پرس‌وجوها را روی پارتیشن محلی خود اجرا می‌کند و این امر باعث می‌شود توان عملیاتی پرس‌وجوها با افزودن گره‌های بیشتر، به صورت خطی مقیاس‌پذیر شود. پرس‌وجوهای پیچیده‌تر می‌توانند به صورت موازی روی چندین گره اجرا شوند، هرچند این موضوع چالش‌های اضافی به همراه دارد. تاریخچه پارتیشن‌بندی پایگاه داده در دهه ۱۹۸۰ و با سامانه‌هایی مانند ترادیتا و نان‌استاپ اس‌کیوال پدیدار شد. این رویکرد بعدها توسط پایگاه داده‌های نواس‌کیوال و انبارهای داده مبتنی بر آپاچی هدوپ نیز پذیرفته شد. اگرچه پیاده‌سازی‌ها میان بارهای کاری تراکنشی و تحلیلی متفاوت هستند، اصول بنیادین پارتیشن‌بندی در هر دو مورد ثابت باقی مانده‌اند. اصطلاح‌شناسی پایگاه داده‌های مختلف از اصطلاحات متفاوتی برای پارتیشن‌بندی استفاده می‌کنند: شارد در مانگودی‌بی، الستیک‌سرچ و سولِر کلاد ریجِن در اچ‌بیس تبلِت در بیگ تیبل وی‌نود در کسندرا و ریاک وی‌باکت در کوچ‌بیس پارتیشن‌بندی و تکثیر پارتیشن‌بندی معمولاً در کنار تکثیر پایگاه داده پیاده‌سازی می‌شود، به‌گونه‌ای که نسخه‌هایی از پارتیشن‌ها روی چندین گره ذخیره می‌شوند. هر رکورد به یک پارتیشن تعلق دارد، اما برای تحمل خطا ممکن است روی چندین گره نیز وجود داشته باشد. در سامانه‌های تکثیر ارباب-برده، هر گره می‌تواند به طور هم‌زمان رهبر برخی پارتیشن‌ها و پیرو پارتیشن‌های دیگر باشد. متعادل‌سازی بار و نقاط داغ هدف پارتیشن‌بندی، توزیع یکنواخت داده و بار پرس‌وجو میان گره‌ها است. | ## بخش 2: افراز (پایگاه داده) | در حالت توزیع ایده‌آل، ظرفیت سامانه به صورت خطی با افزودن گره‌ها افزایش می‌یابد. به طوری که ده گره باید بتوانند ده برابر داده و توان عملیاتی یک گره منفرد را پردازش کنند. توزیع نامتوازن که با عنوان skew شناخته می‌شود، کارایی پارتیشن‌بندی را کاهش می‌دهد. چندین راهبرد برای مقابله با نقاط داغ وجود دارد: تخصیص تصادفی رکوردها به گره‌ها، به بهای افزایش پیچیدگی بازیابی پارتیشن‌بندی مبتنی بر بازه کلید با مرزهای بهینه‌شده پارتیشن‌بندی مبتنی بر هش برای توزیع یکنواخت بار معیارهای پارتیشن‌بندی سامانه‌های پیشرفته امروزی مدیریت پایگاه داده رابطه‌ای معیارهای مختلفی را برای تقسیم پایگاه داده فراهم می‌کنند. این سامانه‌ها یک کلید پارتیشن‌بندی دریافت کرده و بر اساس معیارهای مشخصی، یک پارتیشن را تعیین می‌کنند. برخی از معیارهای رایج عبارت‌اند از: پارتیشن‌بندی بازه‌ای: بازه‌های پیوسته‌ای از کلیدها را به پارتیشن‌ها اختصاص می‌دهد، مشابه جلدهای یک دانشنامه. اگرچه این روش اسکن بازه‌ای کارآمدی را ممکن می‌سازد، اما برخی الگوهای دسترسی باعث ایجاد نقاط داغ می‌شوند. برای مثال، در شبکه‌های حسگر که از کلیدهای مبتنی بر زمان استفاده می‌کنند، عملیات نوشتن در پارتیشن مربوط به بازه زمانی جاری متمرکز می‌شود. استفاده از کلیدهای مرکب—مانند افزودن شناسه حسگر به ابتدای برچسب زمانی—می‌تواند این بار را توزیع کند. به‌عنوان نمونه، می‌توان پارتیشنی برای تمام ردیف‌هایی داشت که مقدار ستون «کدپستی» آن‌ها بین ۷۰۰۰۰ تا ۷۹۹۹۹ است. پارتیشن‌بندی فهرستی: در این روش، به هر پارتیشن فهرستی از مقادیر اختصاص داده می‌شود. اگر کلید پارتیشن‌بندی یکی از این مقادیر را داشته باشد، آن پارتیشن انتخاب می‌شود. برای مثال، تمام ردیف‌هایی که مقدار ستون کشور در آن‌ها یکی از مقادیر دانمارک، آیسلند، نروژ، سوئد، یا فنلاند است، می‌توانند یک پارتیشن برای کشورهای نوردیک تشکیل دهند. پارتیشن‌بندی ترکیبی: امکان استفاده از ترکیبی از طرح‌های پارتیشن‌بندی فوق را فراهم می‌کند؛ برای مثال، ابتدا پارتیشن‌بندی بازه‌ای و سپس پارتیشن‌بندی هش اعمال می‌شود. هش‌سازی سازگار را می‌توان ترکیبی از پارتیشن‌بندی هش و فهرستی دانست، که در آن هش فضای کلید را به اندازه‌ای کوچک می‌کند که بتوان آن را فهرست کرد. | ## بخش 3: افراز (پایگاه داده) | با این حال، دسترسی مستقیم به تاپل‌های منفرد بر اساس یک شرط، مستلزم دسترسی به کل رابطه است. پارتیشن‌بندی هش: با اعمال یک تابع هش، داده‌های نامتوازن را به توزیع یکنواخت گسسته تبدیل می‌کند تا بار به طور یکنواخت میان پارتیشن‌ها توزیع شود. اگرچه این روش به طور مؤثری از ایجاد نقاط داغ جلوگیری می‌کند، اما کارایی پرس‌وجوهای بازه‌ای را قربانی می‌سازد، زیرا کلیدهای مجاور در پارتیشن‌های مختلف پراکنده می‌شوند. برخی سامانه‌ها، مانند کسندرا، رویکردهای ترکیبی را با استفاده از کلیدهای اصلی مرکب به‌کار می‌گیرند، به طوری که مؤلفه نخست برای پارتیشن‌بندی هش می‌شود و ترتیب مرتب‌سازی مؤلفه‌های باقی‌مانده درون هر پارتیشن حفظ می‌گردد. در هر کدام از طرح‌های پارتیشن‌بندی، داده‌ها معمولاً به‌گونه‌ای سازمان‌دهی می‌شوند که هر قطعه داده (رکورد، ردیف یا سند) دقیقاً به یک پارتیشن تعلق داشته باشد. اگرچه برخی پایگاه داده‌ها از عملیات میان‌پارتیشنی پشتیبانی می‌کنند، این وابستگی تک‌پارتیشنی اصل بنیادین مفهوم پارتیشن‌بندی است. روش‌های پارتیشن‌بندی پارتیشن‌بندی می‌تواند یا با ایجاد چندین پایگاه داده کوچک و مستقل (که هر یک جدول‌ها، نمایه‌ها و تراکنش‌های گزارش پایگاه داده مخصوص به خود را دارند) انجام شود، یا با تقسیم عناصر منتخب، برای مثال تنها یک جدول. پارتیشن‌بندی افقی پارتیشن‌بندی افقی شامل قرار دادن ردیف‌های مختلف، در جدول‌های متفاوت است. با این حال، پارتیشن‌بندی عمودی ازاین موضوع نیز فراتر می‌رود و حتی ستون‌هایی را که پیش‌تر نرمال‌سازی شده‌اند نیز پارتیشن می‌کند. این نوع پارتیشن‌بندی با عنوان row splitting نیز شناخته می‌شود، زیرا ردیف‌ها بر اساس ستون‌هایشان شکافته می‌شوند و می‌تواند به صورت صریح یا ضمنی انجام شود. برای تحقق پارتیشن‌بندی عمودی، ممکن است از ماشین‌های فیزیکی مجزا استفاده شود؛ برای مثال، ذخیره ستون‌هایی که به‌ندرت استفاده می‌شوند یا بسیار عریض هستند و حجم قابل‌توجهی از حافظه را اشغال می‌کنند، روی یک ماشین جداگانه، نوعی پارتیشن‌بندی عمودی محسوب می‌شود. شکل رایج پارتیشن‌بندی عمودی، جداسازی داده‌های ایستا از داده‌های پویا است، زیرا دسترسی به داده‌های ایستا، به‌ویژه در جدولی که داده‌های پویا کمتر مورد استفاده قرار می‌گیرند، سریع‌تر است. ایجاد یک نما روی دو جدول جدید، جدول اصلی را به بهای فدا کردن کارایی بازسازی می‌کند، اما دسترسی صرف به داده‌های ایستا کارایی بالاتری خواهد داشت. | ## جمع‌بندی | یک پایگاه داده ستون‌گرا را می‌توان پایگاه داده‌ای دانست که تا حدی پارتیشن‌بندی عمودی شده است که هر ستون در جدول مخصوص به خود ذخیره می‌شود.