بهبود پورتال

02188272631   09381006098  
تعداد بازدید : 52
8/1/2023

 

پیش گفتار

      در این مقاله فرض بر این است که خواننده :

·        با زبان برنامه نویسی C یا C++ آشناست .

·        فن آوری COM را می شناسد .

·        و نیز اطلاعات عمومی و کلی در مورد پایگاه داده و SQL دارد .

مقدمه

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

 

·        file systems

·        indexed-sequential files ( Btrieve )

·        personal databases ( Access | Visual FoxPro )

·        Productivity tools (Spread sheets |electronic mails )

·        On the word wide web (www)

 

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

 

·        declarative queries

·        transactions

·        Security

 

      سازمانها و شرکت ها برای بهره بردن از این مزایا مجبور شده اند که داده ها را از سیستم های اولیه به درون انواعی از سیستم های DBMS (DataBase Management Systems) منتقل کنند .

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

    برای برآورده کردن این نیاز مهم مایکروسافت OLE DB را بوجود آورده است .

 

و اما OLE DB                 

      OLE DB مجموعه ای از Interface های مبتنی بر فناوری COM است . Application ها با استفاده از این Interface ها می توانند دسترسی یکسانی به انواع مختلف پایگاههای داده داشته باشند . منظور از دسترسی یکسان این است که ابزارهایی که OLE DB در اختیار Application قرار می دهد ، با تغییر پایگاه داده ، همچنان یکسان می مانند .

      OLE DB علاوه بر آنکه تمام قابلیت ها و سرویس های DBMS را در اختیار Application قرار می دهد ، می تواند سرویس ها و قابلیت های جدیدی را نیز به آن بیفزاید . به عنوان مثال OLE DB داده های پایگاه را بین Application ها Share می کند .

 

مدل OLE DB و دو مفهوم اساسی

 OLE DB    برای دسترسی Application به داده ها مدلی را ارائه می دهد . مدل فرض می کند که داده ها مستقیما در دسترس Application نیست بلکه در انبارهای اطلاعاتی جداگانه ای مانند یک فایل ،
  E-mail ، پایگاه داده و یا در منبعی بر روی اینترنت قرار دارند .

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

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

     در مدل OLE DB به واسطه ای که اطلاعات را برای Application فراهم ( Provide ) می کند ، Provider و به Application که داده ها را مصرف ( Consume ) می کند ، Consumer می گویند . دو مفهوم Provider و Consumer در مدل OLE DBچنان اساسی هستند که باید تمام توصیفات مربوط به فن آوری OLE DB را از درون آنها تجسم نمود .

      از دید فنا آوری COM می توان این دو مفهوم اساسی را دقیقتر بررسی کرد . Consumer هر جزئی از سیستم یا کدهای Application است که از یک Interface متعلق به OLE DB استفاده می کند . Provider نیز هر Object ی است که در قالب COM طراحی شده و ارائه دهنده ی یک Interface متعلق به OLE DB است .

 

مدل برنامه نویسی OLE DB

      OLE DB  وظایفی را که Consumer و Provider در قبال هم دارند تا داده ها بین آنها و بین انبار داده ها جابجا شود را در قالب مدلی ارائه کرده است . برنامه نویسان برای طراحی Provider و Consumer باید در قالب ارائه شده توسط OLE DB برنامه نویسی کنند . واین مدل برنامه نویسی OLE DB است (Programming model ) .

      مدل برنامه نویسی OLE DB یک مدل شئی گراست که Object های آن از COM هستند . هر Object نیز تعدادی Interface دارد که OLE DB وظایف هر کدام را دقیقا بیان کرده است .

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

      برنامه نویسانی که Provider می نویسند با دو عملکرد از پیش تعریف شده روبرو هستند . یکی ، روشی که پایگاه داده برای جابجا کردن اطلاعات در اختیار ما قرار می دهد . دیگری ، عملکردی است که OLE DB برای Interface های خود تعریف می کند . طراح Provider وظیفه اش نظیر کردن این دو عملکرد تعریف شده به هم است . برنامه نویسانی که Consumer می نویسند برای دسترسی به داده باید سرویس های ارائه شده توسط Interface ها را صدا بزنند .

      پیاده سازی بعضی از Interface ها برای Provider بنیادین است و بعضی اختیاری . ممکن است Interface های اختیاری در Provider ی پیاده سازی شده باشند و در Provider دیگری خیر . از این رو Interface های اختیاری پیاده سازی شده ، یک ویژگی برای Provider است .Consumer ها می توانند از ویژگی های Provider ها در زمان اجرا باخبر شوند .

      برای درک بهتر OLE DB می توان آن را در دو مدل بررسی کرد . یکی مدل Row و دیگری مدل Binder در این مقاله تنها به مدل اول پرداخته شده است .

 

مدل برنامه نویسی Row

      همانطور که گفته شد Provider از تعدادی object های COM تشکیل شده است . Consumer در مدل Row به تعدادی از این object ها نیاز دارد که عبارتند از :

Enumerator

Data Source Object

Session Object

Command Object

Row Object

Row Object

    در ابتدا Consumer باید یک نمونه از Data Source Object  بسازد و آن را مقدار دهی اولیه کند . سپس Consumer با استفاده از این نمونه ، Session Object را بوجود می آورد ، که این object نیز به نوبه ی خود همانند کارخانه ای برای تولید Command ها و Transaction ها عمل می کند . وظیفه ی اصلی
Session Object تعریف Transaction است .

      بنابراین object ها طبق یک سلسه مراتبی ساخته می شوند . به این معنا که object های سطح بالاتر بصورت صریح یا ضمنی object های سطح پائین تر را می سازند .

 

Enumerator

 

      با استفاده از این object می توان سیستم را جستجو کرد و از Data Source Object های موجود با خبر شد .در هنگام پیاده سازی اگر Provider خاصی برای Consumer تعیین نشده باشد ، می توان در زمان اجرا به وسیله Enumerator ، Provider مناسبی را جستجو ، و در صورت وجود از آن استفاده کرد .

توجه : گرچه در این مدل |Enumerator اولین object است ، ولی اغلب از روش های دیگری جهت بدست آوردن Data Source Object استفاده می شود .

      جهت دست یابی به Data Source Object ها و Enumerator های موجود در سیستم باید از اینترفیس ISourceRow متعلق به Enumerator استفاده کرد .

 

 

 

 

Data Source Object

 

      Data Source Object یک object متعلق به COM است که  Consumer از طریق این object با Provider ارتباط برقرار می کند .

Interface های این object در زیر لیست شده اند .

Interface های ضروری ( mandatory )

·        interface IDBCreateSession;

·        interface IDBInitialize;

·        interface IDBProperties;

·        interface IPersist;

 

Interface های اختیاری ) optional )

·        interface IConnectionPointContainer;

·        interface IDBAsynchStatus;

·        interface IDBDataSourceAdmin;

·        interface IDBInfo;

·        interface IPersistFile;

·        interface ISupportErrorInfo;

 

Provider ها به هنگام نصب بر روی سیستم عامل ، کلاسهای Data Source  شان را در Registry ثبت
 می کنند و از همین طریق
Enumerator می تواند آنها را در Registry و پیدا کند .

 

Session Object

 

      این object توابعی برای ساختن Command ها و Row ها دارد . و نیز توابعی برای ساختن و اصلاح کردن Table ها و Index ها در پایگاه داده ، در اختیار برنامه نویس قرار می دهد .Interface های ضروری و اختیاری این object در زیر لیست شده اند .

1) mandatory

·        interface IGetDataSource;

·        interface IOpenRow;

·        interface ISessionProperties;

 

 

2) optional

 

·        interface IAlterIndex;

·        interface IAlterTable;

·        interface IBindResource;

·        interface ICreateRow;

·        interface IDBCreateCommand;

·        interface IDBSchemaRow;

·        interface IIndexDefinition;

·        interface ISupportErrorInfo;

·        interface ITableCreation;

·        interface ITableDefinition;

·        interface ITableDefinitionWithConstraints;

·        interface ITransaction;

·        interface ITransactionJoin;

·        interface ITransactionLocal;

·        interface ITransactionObject;

 

 

Consumer برای ساختن یک Session باید تابع IDBCreateSession :: CreateSession از
Data Source Object صدا بزند .

یک Data Source Object می تواند چندین Session را ایجاد کند .

 

Command Object

 

      این object دستوراتی ( Commands ) را که بصورت text و یا stream می باشند و برای اجرا روی انبار داده صادر می شوند ، را مدیریت می کند .

  این Command را Consumer صادر و provider آن را اجرا می کند .

Command    ها اغلب بصورت   text و دستور رایج SQL مانند SELECT صادر می شوند . در این حالت Command Object می تواند Row تولید کند .یک Session می تواند چندین Command را ایجاد کند.

  هر Command Object دارای ویژگی هایی است که با کردن آنها می توان :

·        اجرای Command را کنترل کرد .

·        نحوه ی تشکیل Row بعد از اجرای Command را تعیین کرد .

 

با استفاده از Command ها می توان فرایندهای زیر را روی داده ها و ساختار بانک از Provider در خواست کرد

 

·        insert

·        modify

·        retrive

·        delete

·        otherwise manipulating

 

      به عنوان مثال text Command زیر یک دستور SQL است که تمام داده های یک Table  از درون یک پایگاه داده ی رابطه ای ( Relational database ) را بازیابی می کند .

“ SELECT * FROM table_name “

 

 

 

 

Interface های ضروری و اختیاری این object در زیر لیست شده اند .

1) mandatory

 

·        interface IAccessor;
·        interface IColumnsInfo;
·        interface ICommand;
·        interface ICommandProperties;
·        interface ICommandText;
·        interface IConvertType;
 
2 ) optional
·        interface IColumnsRow;
·        interface ICommandPersist;
·        interface ICommandPrepare;
·        interface ICommandWithParameters;
·        interface ISupportErrorInfo;
·        interface ICommandStream;
 

 

 

 

Row Object

 

Row    یک Cach است که داده هایی را که از انبار داده آورده می شود نگهداری می کند . می توان Row را شبیه یک آرایه دو بعدی فرض کرد که دارای تعدادی سطر و ستون است و در هر ستون یک نوع داده ی خاص وجود دارد .

این object بخش مرکزی Provider است که وظیفه فراهم کردن داده ها برای Consumer را بر عهده دارد . این داده ها در قالب جدولی ارائه می شوند .

Row    در نتیجه ی اجرای یک Command و یا از طریق Session ساخته می شوند و امکاناتی برای جابجایی بین سطرهای داده وتست و تغییر داده دارد و نیز امکاناتی برای بازگرداندن داده ی اصلاح شده به درون بانک .

Interface های ضروری و اختیاری این object به قرار زیر است  .

1) mandatory

·        interface IAccessor;
·        interface IColumnsInfo;
·        interface IConvertType;
·        interface IRow;
·        interface IRowInfo;
 
2 ) optional 
·        interface IChapteredRow;
·        interface IColumnsInfo2;
·        interface IColumnsRow;
·        interface IConnectionPointContainer;
·        interface IDBAsynchStatus;
·        interface IGetRow;
·        interface IRowChange;
·        interface IRowChapterMember;
·        interface IRowCurrentIndex;
·        interface IRowFind;
·        interface IRowIdentity;
·        interface IRowIndex;
·        interface IRowLocate;
·        interface IRowRefresh;
·        interface IRowScroll;
·        interface IRow;
·        interface IRowView;
·        interface ISupportErrorInfo;
·        interface IRowBookmark;
 

 

Row and Stream

Row    عنصری است که تعدادی ستون داده را در بر دارد به عبارتی بخشی از یک رکورد است . Stream عنصری است که محتویات یک فایل یا e-mail را کپسوله می کند .

پایان

بهبود پورتال پورتال پرتال پرتال سازمانی پورتال سازمانی پورتال شرکتی سامانه سازمانی سامانه شرکتی پرتال شرکتی وب سایت شرکتی وب سایت سازمانی مدیریت آسان مدیریت محتوا مدیریت محتوا بدون دانش فنی پنل ویژه همکاران نظرسنجی آنلاین فیش حقوقی آپلود فیش حقوقی مدیریت بیمه مدیریت خدمات بیمه خدمات بیمه بیمه تکمیلی آموزش پیشنهادات انتقادات مدیریت جلسات فرم ساز مدیریت منو مدیریت محتوا مدیریت سئو پنل مدیریتی چند کاربره ریسپانسیو گرافیک ریسپانسیو
All Rights Reserved 2022 © BSFE.ir
Designed & Developed by BSFE.ir