Dbisam Database :

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

در این مقاله میخواهیم شما را با DBISAM ، پدیده دنیای بانکهای اطلاعاتی آشنا کنیم. یک راست و بدون مقدمه میرویم سر اصل مطلب. این لیست قابلیتهای این Database Engine است:

پشتیبانی کامل 100 زبان بین المللی ( از جمله فارسی و انگلیسی )
پشتیبانی تاریخ هجری شمسی
ایندکس و سورت صحیح فارسی
تنظیمات خاصی برای استفاده بصورت Client/Server نیاز نیست .
بازده استثنایی وبهینه سازی Filtering وSQL .
امکانات بازسازی و تعمیر درون ساخت .
امکان تبدیل فرمت تمام انواع Database به فرمت DBISAM .
دارای برنامه کمکی ویژه جهت Browse ،Restructure ، Update وجستجوی Database
پشتیبانی کامل Blob ،شامل block size قابل تنظیم بصورت دلخواه
Buffered Transaction
جهت حفاظت داده‌ها هنگام قطع برق و امثال آن
ایندکس های Primary و Secondary
پشتیبانی کامل Filter
فایلهای داده in-memory با پشتیبانی Streaming
جستجوی در ایندکس با استفاده از علامتهای (* ، ؟)
تعیین محدوده (بازه) با تعداد دقیق رکورد‌ها
پشتیبانی فیلد Auto-Increment
اعداد منطقی ترتیبی
پشتیبانی کامل NULL
Min/Max
وبررسی Validity
مقادیر پیش فرض
فشرده سازی کلیدها وایندکس‌ها
فشرده سازی اتوماتیک ایندکس‌ها
پشتیبانی Database های read-only برروی CD-ROM
پشتیبانی کامل BCD
ایندکس‌های Case-Insensitive
حفاظت از داده ها با Password-Encryption
ایندکس‌های ثانویه Unique
امکان تعریف Version Numbering فایلهای داده توسط کاربر

DBISAM
اصلا چیست؟

DBISAM
یک موتور Database مانند BDE ، SQL Server و Interbase است، با امکانات خارق‌العاده.

عدم نیاز به هیچگونه Driver یا DLL برای اجرای برنامه

جالب است نه؟ یعنی برنامه شما برای اجرا به هیچگونه درایور یا DLL ای نیاز ندارد، چرا که تمام موتور Database و ملحقات آن مستقیما به درون فایل Exe شما کامپایل میشود. حجمی هم که به فایل شما اضافه میشود مقداری جزئی و قابل چشم پوشی است.

این در حالی است که BDE برای باز کردن یک فایل ساده Paradox به مجموعه‌ای از درایورها نیاز دارد و برنامه شما در صورت عدم حضور آنها با نمایش یک Exception با یک دردسر اساسی روبرو خواهد شد.

استفاده از DBISAM بعنوان یک جایگزین برای BDE

اکثر برنامه نویسانی که با BDE کار کرده اند با مشکلات آن به خوبی آشنا هستند: خراب شدن ایندکس‌ها ، خراب شدن فایلهای داده در صورت قطع برق ، مشکل User Lock و ...

اینها همه مشکلاتی است که در DBISAM حل شده است .

تبدیل برنامه Desktop به Client/Server

هنگامی که از یک برنامه‌نویس خواسته می‌شود تا برنامه‌ای که با BDE نوشته است را تبدیل به نسخه Client/Server کند کابوس او شروع می‌شود، زیرا باید اکثر بخشهای برنامه‌اش را باز نویسی کند .

اما با استفاده ازDBISAM این کار به آسانی مقدار‌دهی یک مشخصه در کامپونت Session است:

Session Type := StRemote;

بله به همین سادگی است‌! یعنی با صرف زمانی کمتر از چند دقیقه می‌توانید هم سرور DBISAMرا نصب و راه اندازی کنید و هم برنامه‌تان را تبدیل به نسخه Client /Server کنید. هیجان انگیز است! نه ؟



نصب Database Server در کمتر از چند دقیقه!

اگر تا کنون Database Engine های دیگر مانند SQL Server و امثال آن را نصب کرده باشید حتما میدانید که عملیات نصب و پیکربندی آنها نزدیک به یکساعت وقت میگیرد، البته بشرطی که تجربه لازم در نصب و پیکربندی آنها را داشته باشید، در غیر اینصورت باید ساعتها وقت را نیز برای یادگیری موارد فوق کنید، این درحالی است که می‌توانستید چنین وقتی را صرف رسیدن به امور مهمتری مانند رسیدگی به برنامه خود کنید.

اما نصب Database Server این سیستم در 1 دقیقه نیز ممکن است!!! چگونه؟ با طی مراحل فوق:

انتخاب کامپیوتری که قرار است نقش Database Server را بعهده بگیرد.
انجام تغییرات لازم در فایل .INI مربوطه (از جمله مشخص کردن IP Address سرور، ... ).
اجرای Database Server (که یک فایل Exe بیش نیست!).


قابلیت اجرای برنامه ها در حالت Read-Only

فرض کنید میخواهید برنامه‌ای بنویسید که حاوی یکسری داده باشد (مانند دیکشنری، برنامه های مالتی‌مدیا، دایرة‌المعارف ، و ...) ونیز برنامه شما قرار است در یک محیط Read-Only (مثلا از روی CD یا DVD) اجرا شود . دراین حالتDBISAM بشما اجازه می‌دهد بدون هیچگونه تغییری در کد برنامه، آنرا به محیط مقصد (CD ، DVD) منتقل کنید و بدون نیاز به انجام هیچ تغییر خاصی آنرا اجرا کنید.



پشتیبانی زبان فارسی

DBISAM
اولین Database Engine ای است که زبان Farsi را هم تحویل گرفته و آ نرا پشتیبانی می‌کند، شما هنگام طراحی جداول می‌توانید زبان جدول را بر روی "Farsi" قرار دهید

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

پشتیبانی تاریخ هجری شمسی

حرفه‌ای‌های Database می‌دانند که اکثر Database Engine های موجود محدوده تاریخ شمسی را بعنوان بازه صحیح قبول ندارند و اجازه ذخیره شدن آن در جداول با فیلد Date را نمی‌دهند، اما DBISAM از این قاعده پیروی نمی‌کند. یعنی شما می‌توانید در یک فیلد از نوعDate در جداول DBISAM تاریخی مانند 10/5/1382 را بدون هیچ مشکلی ذخیره کنید .



امکان Partial Search برروی فیلدهای فارسی

در DBISAM امکان جستجو با استفاده از علائم * و ؟ بر روی فیلد های فارسی نیز وجود دارد.

بدین ترتیب شما می توانید بعنوان مثال با استفاده از عبارت *محمد* در ترکیب جستجو کلیه موارد شبیه به کلمه فوق ( مانند "محمد رضا"، "محمدی") را پیدا کنید .

بهینه‌سازی فیلد‌های Image

هنگامی که می‌خوا‌هید تصاویر را در جداول DBISAM نگهداری کنید ، سیستم بصورت اتوماتیک آنها را فشرده و بهینه‌سازی می‌کند تا فضای کمتری برای نگهداری آنها مورد‌نیاز باشد و نیز سرعت خواندن و نوشتن آنها در سیستم افزایش یابد .

امکان بازسازی و تعمیر جداو ل

DBISAM
دارای متدهای ویژه تعمیر و بازسازی database میباشد. با استفاده از این امکان برنامه‌نویس می‌تواند هر گاه که نیاز به تعمیر database دارد با اجرای متدی مانند Table1.Repair; جدول مورد نظر را تعمیر کند.

امکان تبدیل انواع database های دیگر به فرمت DBISAM

فرض کنید می‌خواهید جداول خود را از Interbase ، SQL Server و یا Paradox بهDBISAM تبدیل کنید. برای انجام این کار کافی است یک Alias به database مبدا تعریف و یا مسیر محتوی فایلها database مبدا را برای DBISAM Transfer Utility مشخص کنید . ظرف مدت کوتاهی ابزار فوق ساختار جداول و تمام داده‌های درون آنها را به فرمت DBISAM تبدیل خواهد کرد.

دسترسی به Source Code کل سیستم!

هنگامی که شما نسخه کامل DBISAM را نصب میکنید سورس کلیه بخشهای سیستم آن مانند سورس Server ، سورس Component ها، سورس ابزارهای جانبی هم بهمراه سیستم اصلی نصب میشوند. بدین ترتیب علاوه بر تمام مزایای دیگر این سیستم، هرگاه نیاز به مطالعه نحوه کار یکی از بخشها، یا نیاز به ایجاد تغییر در یک بخش از سیستم یا ابزارهای جانبی آن داشتید میتوانید براحتی این کار را انجام دهید. نکته فوق‌العاده این است که حتی کامپوننتهای استفاده شده برای ساختن ابزارهای کمکی DBISAM نیز بهمراه سورس کامل‌شان بهمراه DBISAM (در قالب یک tab بنام DBISAM Utilities) در محیط IDE دلفی نصب میشوند و شما بدون هیچگونه مشکلی میتوانید کل سیستم را هر وقت که نیاز داشتید re-compile کنید!

]
اینم یواشکی بهتون بگم که کامپوننتهای موجود در DBISAM Utilities در حقیقت همان کامپوننتهای معروف InfoPower هستند که راست به چپ را نیز پشتیبانی می‌کنند! یادتون نره یه نگاهی هم به آنها بیاندازید[.

در مقالات بعدی این سری شما را با نحوه ایجاد برنامه‌های Desktop و Client/Server با استفاده از DBISAM آشنا خواهیم کرد.


آشنایی با DBISAM (بخش دوم): نوشتن یک برنامه Desktop

در این مقاله به بررسی نحوه ایجاد یک برنامه Desktop با استفاده از DBISAM و چگونگی در نظر گرفتن پیش‌نیازهای لازم برای تبدیل آن به یک برنامه Client/Server در آینده خواهیم پرداخت.

حالتهایی که بررسی خواهند شد عبارتند از:

A)
برنامه قرار است در محیط تک کاربره اجرا شود.

B)
برنامه طوری نوشته شود که امکان تبدیل به نسخه Client/Server‌ در آینده در نظر گرفته شود.


A)
برنامه قرار است در محیط تک کاربره اجرا شود:

در این حالت با استفاده از کامپوننت Table و Query ویژه DBISAM (بنامهای TDBISAMTable و TDBISAMQuery) و بدون انجام تنظیمات خاصی به جداول مربوطه متصل میشویم.

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

ایجاد جداول مربوطه:

1)
برنامه Database System Utility را اجرا کنید.

2)
از منوی File گزینه New Table را انتخاب کنید. پنجره New Table باز خواهد شد

3)
فیلدهای جدول را بصورت زیر تعریف کنید:



Primary Index
Required
Size
Data Type
Field Name

Yes
Yes
0
AutoInc
UserID

No
Yes
20
String
UserName

No
Yes
12
String
Password

No
No
0
Date
RegDate





4)
اکنون از لیست Language گزینه Farsi‌ را انتخاب کنید. اینکار باعث فعال شدن Sort و دیگر امکانات فارسی میشود

5)
برای ذخیره جدول بر روی دکمه Save کلیک کنید.

6)
در پنجره Save new table as گزینه Connection Type بصورت پیش فرض بر روی Local (Single/Multi User) قرار دارد و این همان چیزی است که ما اکنون میخواهیم.

7)
در قسمت Available Databases بر روی دکمه Select کلیک کرده و مسیر مقصد را مشخص کنید.

8)
در قسمت Save As نام فایل جدول را مشخص کنید (در اینجا ما UserInfo را وارد کرده‌ایم). این پنجره پس از تکمیل شدن همه بخشها مانند تصویر 4 خواهد بود.

استفاده از جداول ایجاد شده در یک پروژه در دلفی:

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

1)
دلفی را اجرا کنید.

2)
در Component Palette صفحه DBISAM‌ را فعال کنید

3)
یک کامپوننت TDBISAMTable بر روی فرمتان قرار دهید.

4)
در Object Inspector مسیری که جداول را در آنجا ذخیره کرده‌اید را در مشخصه DatabaseName وارد کنید.

5)
مقدار مشخصه TableName را از لیست انتخاب کنید (در اینجا UserInfo).

6)
روی کامپوننت DBISAMTable1 بر روی فرم دابل کلیک کنید.

7)
در پنجره Form1.DBISAMTable1 که باز شده است رایت کلیک و گزینه Add all fields را انتخاب کنید. اینکار باعث میشود فیلدهای جدول بصورت کامپوننتهای جداگانه در دسترس برنامه قرار گیرد


8)
اکنون از صفحه Data Access در Component Palette یک کامپوننت TDataSource بر روی فرم قرار دهید.

9)
مشخصه Dataset کامپوننت DataSource1 را بر روی DBISAMTable1‌ قرار دهید.

10)
اکنون وقت وصل کردن این مجموعه به یک یا چند کامپوننت Data-Aware‌ است. از صفحه Data Controls در Component Palette یک کامپوننت TDBGrid انتخاب کرده و بر روی فرم قرار دهید.

11)
مشخصه DataSource کامپوننت DBGrid1 را بر روی DataSource1 قرار دهید.

12)
مشخصه Active کامپوننت DBISAMTable1 را برابر True‌ قرار دهید.


13)
برنامه را اجرا کنید. اکنون میتوانید مانند برنامه‌های معمول نوشته شده با دلفی در DBGrid‌ به افزودن، ویرایش و حذف داده‌ها بپردازید.

همانطورکه دیدید ایجاد یک برنامه بانک اطلاعاتی معمولی با DBISAM درست مانند ایجاد یک برنامه با استفاده از BDE است و تنها تفاوت آن استفاده از TDBISAMTable بجای TTable است. بطور کلی برای استفاده از DBISAM بجای BDE کافی است معادل کامپوننتهای BDE در DBISAM استفاده کنید.


B)
برنامه طوری نوشته شود که امکان تبدیل به نسخه Client/Server‌ در آینده در نظر گرفته شود:

برای تعبیه امکان تبدیل یک برنامه به نسخه Client/Server باید 2 کامپوننت TDBISAMSession و TDBISAMDatabase را به فرم برنامه‌تان اضافه کنید.

Session
چیست؟

در برنامه نویسی بانکهای اطلاعاتی هر Session بمنزله یک کاربر میباشد. بعنوان مثال اگر قرار باشد 3 کاربر به یک سرور بانک اطلاعاتی (Database Server) متصل شوند این سرور 3 Session خواهد داشت.

کاربرد کامپوننت Database چیست؟

در برنامه نویسی بانکهای اطلاعاتی در دلفی هر کامپوننت Database نماینده یک Database واقعی است. یک Database واقعی معمولا یک فولدر یا دایرکتوری حاوی تعدادی جدول (Table) و فایلهای مرتبط با آنها میباشد.

کامپوننت Database بما کمک میکند تا تمام جداول مرتبط با هم را در قالب یک Database در پروژه گروه‌بندی کنیم. مزیت دیگر استفاده از کامپوننت Database اینستکه میتوان کلیه مشخصات یک Database واقعی (مسیر نگهداری جداول، ...) را در آن تنظیم کرده و در کامپوننت‌های Table و Query بجای مشخص کردن مسیر محل نگهداری جداول برای هر کدام، فقط مشخصه DatabaseName آنها را برابر نام تعریف شده در کامپوننت Database قرار دهیم. بدین ترتیب با عوض کردن مقادیر در کامپوننت‌ Database تمام Table ها و Query های متصل به آن نیز از تنظیمات آن پیروی خواهند کرد.

اکنون که با مفاهیم لازم آشنا شدید اقدام به انجام تغییرات در برنامه‌ای که قبلا ایجاد نموده‌ایم می‌کنیم تا امکان تبدیل آن به نسخه Client/Server در آینده را به آن اضافه کنیم.

1)
از صفحه DBISAM در Component Palette یک کامپوننت TDBISAMSession انتخاب کرده و بر روی فرم قرار دهید.

2)
مشخصه‌هایی که فعلا باید در این کامپوننت تنظیم کنید عبارتند از:

AutoSessionName = True

PrivateDir

فعال کردن مشخصه AutoSessionName باعث میشود خود DBISAM، Session ها را بصورت مقتضی نامگذاری کند. این امکان بخصوص زمانی مفید است که چند کاربر با استفاده از یک نرم‌افزار واحد (مثلا همین برنامه) بخواهند به Database Server متصل شوند. در چنین حالتی اگر نام Session ها یکسان باشد کاربر اول وارد میشود، اما ورود کاربران دیگر مشکلاتی را بهمراه خواهد داشت.امکان AutoSessionName این مشکل را با نامگذاری اتوماتیک Session ها حل میکند.

DBISAM
هنگام باز کردن یک جدول با استفاده از Table یا Query یک نسخه موقتی از جدول مربوطه را در جایی ایجاد میکند و با آن کار میکند، سپس تغییرات را در جدول اصلی اعمال میکند. استفاده از این جدول موقتی برای سرعت بخشیدن به کار با جداول Database‌ میباشد. اگر شما مسیری را برای نگهداری فایلهای موقتی ایجاد نکنید سرعت کار با جداول (خصوص در محیط Client/Server) پایین خواهد بود. شما میتوانید با مقدار دادن به مشخصه PrivateDir در کامپوننت DBISAMSession این مشکل را حل کنید.

3)
از صفحه DBISAM در Component Palette یک کامپوننت TDBISAMDatabase انتخاب کرده و بر روی فرم قرار دهید.

4)
در مشخصه DatabaseName آن یک عبارت (مثلا dbDatabase1) وارد کنید.

5)
همانطور که می‌بینید مقدار SessionName در کامپوننت DBISAMDatabase1 بصورت اتوماتیک مقداردهی شده و برابر DBISAMSession1_1 قرار گرفته است.

6)
به مشخصه DatabaseName کامپوننت DBISAMTable1 نگاه کنید. اکنون این مشخصه حاوی گزینه‌ای بنام dbDatabase1 (و یا عبارتی که شما قبلا در مرحله 4 مشخص کرده‌اید) میباشد (تصویر 8). آنرا انتخاب کنید.

7)
در کامپوننت DBISAMDatabase1 مشخصه Directory را برابر مسیر کنونی جداول قرار دهید.

8)
مقدار مشخصه Active کامپوننت DBISAMTable1 را برابر True قرار دهید. همانطورکه می‌بینید اینکار باعث فعال شدن اتوماتیک کامپوننت‌های DBISAMDatabase1 و DBISAMSession1 نیز میشود.

اکنون برنامه ما این قابلیت را دارد که در کمتر از چند دقیقه تبدیل به نسخه Client/Server شود.

در مقاله بعدی نحوه راه‌اندازی DBISAM Database Server بر روی شبکه و نحوه متصل شدن به آن از طریق همین برنامه را شرح خواهیم داد.

 

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد