Database Link چیست

database link ها در مرکز سیستم پایگاه داده توزیع شده قرار دارند. یک سیستم پایگاه داده توزیع شده یا Distributed Database System مجموعه ای از چندین پایگاه داده متمرکز که تحت بستر یک شبکه با یکدیگر در ارتباط هستند. اساس پایگاه داده های توزیع شده دسترسی به داده های یک پایگاه داده را دور از پایگاه داده محلی است که این امر با استفاده از database link ها فراهم می شوند. database link یک اتصال میان دو پایگاه داده فیزیکی مجزا است که این امکان را به کلاینت می دهد تا این دو پایگاه داده فیزیکی را در غالب یک پایگاه داده منطقی ببیند و به آن دسترسی داشته باشد.

یک database link (که از این پس “لینک پایگاه داده” می نامیم) مسیری یک طرفه را میان دو سرور پایگاه داده اوراکل فراهم می کند. تعریف این لینک یا link به عنوان یک ورودی در Data Dictionary ثبت خواهد شد. برای دسترسی به لینک باید به پایگاه داده محلی که حاوی تعریف این پیوند است دسترسی پیدا کنید. لینک پایگاه داده ارتباطی یک طرفه است که تنها کلاینتی که به پایگاه داده محلی (که تعریف لینک در آن است) متصل شده است از این لینک می تواند برای دسترسی به سرور پایگاه داده را دور استفاده کند. فرض کنید در ماشین سرور A شامل پایگاه داده اوراکل و تعریف لینک، کاربری از ماشین کلاینت به آن متصل می شود. در سرور A تعریفی برای اتصال به سرور راه دور B وجود دارد، پس تنها کلاینت متصل شده با ماشین A می تواند به اطلاعات سرور B دسترسی پیدا کند و دسترسی از ماشین B با پیوند مشابه وجود ندارد اما کلاینتی که با سرور B متصل شده است می تواند لینکی را (در Data Dctionary) در ماشین B تعریف کند. پس پیوند پایگاه داده امکان اتصال و دسترسی به داده های راه دور را فراهم می کند.

برای برقراری این اتصال هر پایگاه داده باید global database name منحصر به فردی را داشته باشد. global database name متشکل از نام پایگاه داده بعلاوه نام دامنه است. به طور مثال hq.acme.com در شکل زیر

در شکل بالا کاربر scott قصد دسترسی به داده های جدول emp راه دور در پایگاه داده با global database name به نام hq.acme.com را دارد. پس در اینجا hq نام پایگاه داده و acme.com نام دامنه است و global database name آن به صورت hq.acme.com است. برای اطلاع بیشتر می توانید مطلب ” Oracle Global_Name and System Identifier چیست ” را بخوانید. فرم کلی global database name به صورت زیر است :

DB_NAME.DOMAIN_NAME

برای درک اینکه چگونه یک لینک پایگاه داده کار می کند گفته شد که اساس تمایز میان پایگاه داده ها در محیط توزیع شدگی، global database name منحصر به فرد هر کدام از آنها است. شکل زیر به طور کامل نشان می دهد. در آخرین سطح (برگ های) درخت شامل پایگاه داده هستند که قصد داریم از هر سرور پایگاه داده از شاخه های مختلف به یکدیگر لینک ایجاد کنیم. به طور مثال به پایگاه داده mfg به پایگاه داده mgf لینک ایجاد کنیم، پس global database name آن به صورت mfg.division3.acme_tools.com می شود (دقیقا همانند نام های fqdn در DNS)

ممکن است (مانند شکل بالا) در محل های مختلف پایگاه داده ها با نام های (DB_NAME) یکسان وجود داشته باشند. مانند پایگاه داده sales، اما برای لینک ها چون global database name آنها مهم است، و هر یک در زیر دامنه متفاوتی قرار گرفته اند پس هر کدام مانند زیر دارای global database name متفاوت هستند.

sales.us.americas.acme_auto.com

sales.uk.europe.acme_auto.com

نام گذاری لینک ها همانند نام global database name پایگاه داده راه دوری است که به آن لینک زده می شود. به طور مثال اگر global database name پایگاه داده راه دور sales.uk.europe.acme_auto.com باشد، پس نام لینک در ماشین محلی نیز sales.uk.europe.acme_auto.com خواهد بود. اگر پارامتر GLOBAL_NAMES به TRUE تنظیم شده باشد، پایگاه داده نام لینک را همنام با global database name در نظر خواهد گرفت. اگر این پارامتر FALSE باشد، پس می توانید نام دلخواه را برای لینک انتخاب کنید.

انواع لینک ها

لینک های پایگاه داده به دو صورت خصوصی یا Private و عمومی یا Public هستند. اگر به صورت خصوصی باشد، تنها کاربری که آنرا ایجاد کرده می تواند از آن استفاده کند، ولی اگر عمومی باشد تمام کاربران پایگاه داده می توانند از آن استفاده کنند. یک لینک خصوصی در اسکیمای متعلق به کاربر ایجاد کننده لینک قرار می گیرد و تنها کاربر یا مالک لینک و برنامه های PL/SQL درون اسکیمای همان کاربر می توانند از این لینک استفاده کنند.

لینک های خصوصی نسبت به عمومی امن تر هستند چونکه تنها مالک یا دیگر برنامه های PL/SQL درون اسکیمای آن کاربر می توانند از آن استفاده کنند. اما وقتی بخواهیم تعدادی کاربر به یک پایگاه داده راه دور دسترسی پیدا کنند، آنگاه یک لینک عمومی برای تمامی انها ایجاد می شود. اما وقتی از یک Directory server (مانند LDAP در لینوکس) استفاده شود، آنگاه می توان مدیریت و ایجاد لینک ها را به صورت متمرکز و ساده تر و در یک جا انجام داد.

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

  • Connected user link : در این حالت کاربر باید حساب کاربری همسانی در ماشین راه دور با حساب کاربری خود (نام کاربری و پسورد) در ماشین راه محلی داشته باشد.
  • Fixed user link : کاربران با استفاده از نام کاربری و پسورد ارجاع دادع شده به لینک، به پایگاه داده راه دور متصل می شوند. برای مثال اگر کاربری به نام jane با لینکی دارای نام کاربری/پسورد scott/tiger به پایگاه داده راه دور hq متصل شود، پس jane با تمامی مجوز ها (privileges) و نقش های (roles) اختصاص داده شده به کاربر scott بر روی پایگاه داده hq به آن متصل شده است.
  • Current user link : در این حالت کاربران به عنوان یک کاربر سراسری یا global user به پایگاه داده راه دور متصل می شوند. کاربر محلی (پایگاه داده) به عنوان یک کاربر سرارسری که در متن یک رویه ذخیره شده یا stored procedure و بدون ذخیره کردن پسورد در تعریف پیوند، به پایگاه داده راه دور متصل می شود. به طور مثال jane می تواند به پروسجر نوشته شده توسط scott دسترسی داشته باشد، به حساب کاربری scott و اسیکمای scott بر روی پایگاه داده راه دور به نام hq دسترسی پیدا می کند. Current user links یک جنبه امنیتی پایگاه داده اوراکل است.

 Shared Database Link چیست

نوع دیگری از لینک های پایگاه داده در اوراکل است. Shared Database Link لینکی میان یک فرانید سرور محلی (یا local server process) با سرور پایگاه داده راه دور است. لینک ها به این دلیل share شده اند که چندین فرایند کلاینت می توانند به طور همزمان از لینک استفاده کنند.

وقتی یک کلاینت از طریق لینکی به سرور پایگاه داده راه دور مصتل می شود، سرور می تواند یکی از دو نوع dedicated یا shared server باشد که بر این اساس جدول زیر ممکن خواهد بود. یک Shared Database Link در هر یک از چهار پیکربندی زیر می تواند وجود داشته باشد.

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

دستور زیر در محیط SQL*PLUS یک لینک از نوع عمومی  و Connected User Link را ایجاد می کند

;’CREATE PUBLIC DATABASE LINK sales.division3.acme.com USING ‘sales1

در مثال بالا اگر کاربر متصل شده (connected user) بر روی پایگاه داده محلی SYSTEM باشد، پس کاربری که به سرور راه دور متصل می شود SYSTEM خواهد بود و همانطور که در باره لینک connected user گفته شد، باید کاربری با حساب کاربری مشابه (نام کاربری و پسورد) در راه دور وجود داشته باشد، پس SYSTEM محلی به اسکیمای اشیا SYSTEM راه دور متصل می شود. connected user به دلیل public بودن لینک نیازی ندارد که مالک و ایجاد کننده آن باشد.

مثال زیر برای ایجاد لینک عمومی و current user استفاده می شود.

;’CREATE PUBLIC DATABASE LINK hq CONNECT TO CURRENT_USER using ‘hq

مثال زیر برای ایجاد لینک عمومی و fixed user استفاده می شود. همانطور که می بینید در fixed user نام کاربری و پسورد در تعریف لینک گنجانده شده است.

;’CREATE PUBLIC DATABASE LINK hq CONNECT TO jane IDENTIFIED BY doe USING ‘hq

به طور کلی عمومی و خصوصی بودن لینک به مالکیت و حق استفاده از لینک پرداخته و سه نوع اتصال connected user, current user و fixed user چگونگی اتصال به راه دور را تعیین می کنند. برای اطلاع بیشتر می توانید مستندات اوراکل را بخوانید.

معماری پایگاه داده توزیع شده
یک سیستم پایگاه داده توزیع شده یا Distributed Database System متشکل از دو یا چند پایگاه داده متمرکز (پایگاه داده محلی) تحت بستر شبکه به هم متصل شده اند و می توان به داده های هر پایگاه داده از پایگاه داده دیگر دسترسی داشت. درواقع هر ماشین بعنوان سروری است که یک پایگاه داده را نگه می دارد و این ماشین ها در یک شبکه به هم متصل و امکان دسترسی به داده های پایگاه داده بر روی ماشین های دیگر را فراهم کرده اند. این محیط توزیع شدگی پایگاه داده ها می تواند به صورت همگن (homogenous) یا نا همگن (heterogeneous) باشد. در صورتی که تمامی پایگاه داده های محیط توزیع شدگی از اوراکل باشند، آنگاه آنرا همگن و اگر حتی یک پایگاه داده غیر اوراکل باشد آنرا ناهمگن گویند.

سیستم پایگاه داده توزیع شده همگن

این سیستم شبکه ای از دو یا چند پایگاه داده که بر روی یک یا چند ماشین مقیم هستند. شکل زیر نمونه ای از این سیستم (شبکه) را متشکل از سه پایگاه داده hq, mfg و sales را که همگی از اوراکل هستند را نشان می دهد. یک Application (تراکنش) می تواند به طور همزمان به داده های چندین پایگاه داده دسترسی یا آنها را تغییر دهد. به طور مثال یک پرس و جوی از ماشین Manufacturing که بر روی پایگاه داده محلی خودش یعنی mfg اجرا شود می تواند داده های از جدول محلی خودش یعنی products و جدول راه دور emp بر روی پایگاه داده hq را بدست آورده و آنها را با هم join کند. توجه کنید این پرس و جو از پایگاه داده محلی که ماشین Manufacturing به آن دسترسی داشت آغاز شد و به دو جدول محلی و راه دور دسترسی پیدا کرد.

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

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

سیستم پایگاه داده توزیع شده ناهمگن

در این سیستم حداقل یک پایگاه داده به جز اوراکل وجود دارد. با این حال برای کلاینت (کاربر) یا Application کل سیستم به عنوان یک پایگاه داده واحد به نظر می آید. در این حالت سرور پایگاه داده محلی که کاربر پرس و جو را بر روی آن اجرا کرده توزیع شدگی و ناهمگن بودن داده ها را پنهان می سازد.