الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما الدليل على فرق السرعة بين ADO وDAO

مغلق
بدأه l-omari في 6 مارس 2006 · 8 رد · 2,361 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني الأعزاء

السلام عليكم ورحمة الله وبركاته

شكرا على جهودكم جميعا وخاصة اخواننا المشرفين على الموقع والمنتدى

قرأت كثيرا عن ADO

وأنها أسرع من DAO

ولكنني لم ألمس ذلك بشكل عملي

فأرجو ممن لديه معلومات ومواضيع عن فرق الأداء أن يزودني بها

وشكرا

#2

اخي الفاضل

السلام عليكم ورحمة الله وبركاته

دعني اناقش معك هذا الموضوع طالما انك قرأت الكثير عن ADO و DAO

س : ماذا تعني ADO و DAO

ج :

DAO

تعني Data Access Objects ( كائنات الوصول إلى البيانات )

1. هذه التقنية ظهرت قديما مع اصدارات اكسيس حتى عام 1997 .

2. وتستخدم فقط مع قاعدة بيانات واحدة فقط

3. كما انها واجهة وصول إلى البيانات تتصل بـ Microsoft Jet ومصادر البيانات المتوافقة مع ODBC للاتصال بالبيانات وبنيات قواعد البيانات واستردادها وتحديثها والتعامل معها.

4. ابطأ بكثير من التقنية الجديده ADO

مثال لعمل قاعدة بيانات بهذه التقنية وهي تحتاج لمرجع MDAC2.0 ليكون مثبت على الجهاز

At least MDAC2.0 installed is required to run next code. Const Jet10 = 1
Const Jet11 = 2
Const Jet20 = 3
Const Jet3x = 4
Const Jet4x = 5
Sub CreateNewMDB(FileName, Format)
  Dim Catalog
  Set Catalog = CreateObject("ADOX.Catalog")
  Catalog.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
     "Jet OLEDB:Engine Type=" & Format & _
    ";Data Source=" & FileName
End Sub

'Create Access2000 database

CreateNewMDB "G:\a2000.mdb", Jet4x

ADO

تعني ActiveX Data Object ( كائنات بيانات آكتيف أكس )

1. ظهرت هذه التقنية بداية العام 1998 واستطاعت التغلب على جميع المشاكل السابقة

2. تستخدم مع جميع قواعد البيانات ومع اي قاعدة بيانات

3. واجهة وصول إلى البيانات تسمح للبرامج العميلة بالوصول إلى البيانات الموجودة في قواعد البيانات المستندة إلى ملف أو ملقم والتعامل معها.

4. اسرع بكثير من سابقتها نظرا لتعدد الكائنات الموجوده بها

مثال لعمل قاعدة بيانات بإستخدام ADO وتحتاج لمرجع DAO 3.6

DAO 3.6 is required to run the code (You can also use other version of DAO, for example DAO.DBEngine.35) Const dbVersion10 = 1
Const dbVersion11 = 8
Const dbVersion20 = 16
Const dbVersion30 = 32
Const dbVersion40 = 64
Sub CreateNewMDB(FileName, Format)
  Dim Engine 
  Set Engine = CreateObject("DAO.DBEngine.36")
  Engine.CreateDatabase FileName, ";LANGID=0x0409;CP=1252;COUNTRY=0", Format
End Sub

Create Access2000 database

CreateNewMDB "G:\a2000.mdb", dbVersion40

اذا رغبت بالشرح المفصل بين التقنيتين فإقرأ الروابط التالية

الشرح الوافي بين التقنيتين

http://www.officena.com/Tips/AC3-ADO&DAO.htm

شرح من موقع الدعم لمايكروسوفت

http://support.microsoft.com/default.aspx?...product=acc2002

http://office.microsoft.com/ar-sa/assistan...1866451025.aspx

بمعنى انك تقوم بمقارنة برنامج الاكسيس 97 مع اكسيس 2003 فهل هناك فرق في الاداء

اختكم

زهره

#3

ماذا عن OLEDB؟ هل هي مختلفة؟ وهي هي أفضل؟

وما هي أفضل تقنية لإعطاء أفضل أداء للاتصال بقاعدة بيانات على السيرفر سواء MS SQL أو Oracle أو غيرهما؟

#4

اخي الفاضل

السلام عليكم ورحمة الله وبركاته

لقد اخذتنا بزاوية انحراف 180 درجة عن السؤال السابق في المشاركه فنحن نتحدث عن تقنية ADO و DAO

وانت الان تشطح بنا الى OLE DB ولكن حسنا لا يوجد لديك مشكلة سنشرح لك هذه الخدمة

ماذا تعني OLE DB

تعني Object Linking and Embedding Database ( ريط الكائنات وتضمينها ) مع نفسها وتسمى الان automation الأتممه التي ظهرت في عام 1996

كما انها تعتبر جزء من مصدر البيانات المفتوح ODBC = Open Data Base Connectivity

وهي الاسلوب القياسي للمشاركة بالبيانات بين قواعد البيانات والبرامج. وتستخدم برامج تشغيل ODBC لغة الاستعلام الهيكلية (SQL) القياسية للوصول إلى بيانات خارجية.) (ODBC) .

في معمارية ODBC، يتصل أحد التطبيقات مثل Access أو برنامج Microsoft Visual Basic، بإدارة برنامج تشغيل ODBC، الذي يستخدم بدوره برنامج تشغيل ODBC معين مثل، برنامج تشغيل Microsoft SQL ODBC للاتصال بمصدر بيانات قاعدة بيانات Microsoft SQL Server

كما يمكنك استخدام برامج تشغيل ODBC للارتباط بقواعد بيانات Microsoft SQL Server وقواعد بيانات Microsoft FoxPro وبيانات من برامج أخرى توفر برامج تشغيل ذات 32 بت المتوافقة مع ODBC Level 1 للوصول إلى ملفات البيانات. يثبت Microsoft Access تلقائياً برنامج تشغيل Microsoft SQL Server ODBC (Sqlsrv32.dll) وبرنامج تشغيل Microsoft FoxPro ODBC (vfpodbc.dll) وبرنامج تشغيل Oracle ODBC (msorcl32.dll) وبعض ملفات دعم ODBC (ملفات التعليمات ورمز لوحة التحكم/الأدوات الإدارية لمصادر بيانات (ODBC)).

استخدام خصائص الاتصال في موفر Microsoft OLE DB لـ Jet

لتخصيص إعدادات "تسجيل Microsoft® Windows®"، يمكنك استخدام خصائص الاتصال في موفر Microsoft OLE DB لـ Jet. يتم تنفيذ ذلك بواسطة الرجوع إلى إحدى الخصائص في كائن الاتصال وتغيير قيمتها. على سبيل المثال، بافتراض أن كائن الاتصال يسمى ADOConnection، سيقدم ما يلي نفس النتائج أثناء استخدام كائنات البيانات النشطة (ADO):

ADOConnection.Properties("Jet OLEDB:Max Locks Per File") = 20000

تكون أسماء الخصائص مختلفة عن إعدادات التسجيل وثوابت DAO. وتكون أسماء الخصائص كما يلي:

Jet OLEDB:Max Locks Per File

Jet OLEDB:Implicit Commit Sync

Jet OLEDB:Flush Transaction Timeout

Jet OLEDB:Lock Delay

Jet OLEDB:Max Buffer Size

Jet OLEDB:User Commit Sync

Jet OLEDB:Lock Retry

Jet OLEDB:Exclusive Async Delay

Jet OLEDB:Shared Async Delay

Jet OLEDB:Page Timeout

Jet OLEDB:Recycle Long-Valued Pages

مثال

ينشئ الإجراء Sub جدولاً، ذو حقل واحد، OrderID. ويوفر مثالاً للتصريح بالكائنات وتعيين قيمة والإشارة إلى هذه الكائنات في التعليمات البرمجية:

Public Sub ADOXCreateTable()
' The ADOX Catalog object corresponds to the DAO Database
' object
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
   ' Open the catalog
   cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=<full path to your database>\<your database name>.mdb;"

   ' Create a new Table object.
   With tbl
      .Name = "Old Invoices"
      ' Create a field and append it to the new Table
      ' object. This must be done before appending the
      ' Table object to the Tables collection of the
      ' Catalog.
      .Columns.Append "OrderID", adVarWChar
   End With

   ' Add the new table to the database.
   cat.Tables.Append tbl
  
'Clean up the references
   Set cat = Nothing
   Set tbl = Nothing
  
End Sub

تكوين مشغل قاعدة بيانات Microsoft Jet للوصول إلى ODBC

تصف الأجزاء التالية إعدادات "تسجيل Microsoft® Windows®" الخاصة بمشغل قاعدة بيانات Microsoft Jet للاتصال بقاعدة بيانات ODBC.

تهيئة الإعدادات لـ Microsoft Jet المتصل بقواعد بيانات ODBC

يحتوي المجلد \HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\ODBC على إعدادات تهيئة لمشغل قاعدة بيانات Microsoft Jet.

ملاحظة يتم عرض الإعدادات النموذجية للإدخالات الموجودة في المجلد Jet\4.0\Engines\ODBC في المثال التالي.

LoginTimeout=20

QueryTimeout=60

ConnectionTimeout=600

AsyncRetryInterval=500

AttachCaseSensitive=0

AttachableObjects='TABLE','VIEW','SYSTEM TABLE','ALIAS','SYNONYM'

SnapshotOnly=0

TraceSQLMode=0

TraceODBCAPI=0

DisableAsync=1

TryJetAuth=1

PreparedInsert=0

PreparedUpdate=0

FastRequery=0

FatBlastRows=-1

FatBlastTimeout=3

ODBCISAMAttach=0

لمزيد من المعلومات الرجاء الانتقال الى هذا الرابط

http://www.microsoft.com/data

اختكم

زهره

#5

شكرا جزيلاً على الشرح

#6

أختي الفاضلة زهرة

شكرا جزيلا على الردود

ولكن كنت أريد مثال فعلي عن فرق الأداء(من ناحية الزمن) في معالجة البيانات ما بين ADO وDAO

وشكرا

#7

اخي الفاضل

السلام عليكم ورحمة الله وبركاته

كما تعلم ان الامثله في المنتدى محدوده وصغيرة الحجم وهي لغرض ايضاح فكره معينه

وقد لا تلاحظ ابدا ان هناك فرق بين الاداء على مستوى قاعدة بيانات صغيره فسيكون الزمن المقارن في اجزاء صغيره جدا من الثانية

ولكن يتضح الفرق في قواعد البيانات الضخمة التي تتعدى حوالى 100000 سجل وهنا يمكنك المقارنه وستعرف الفارق الزمنى بين التقنيتين

وقد قمت بالتجربة بواسطة كود طويل جدا ومعقد لست بحاجة له واتضح منه التالي

TableName = tblCompany

RowsQty = 1000

1000 cycles.

DAO: STime = 2006.03.15 22:48:29, ETime = 2006.03.15 22:48:45, Avg = 0,016

ADO: STime = 2006.03.15 22:49:02, ETime = 2006.03.15 22:49:11, Avg = 0,009

كما تلاحظ ان الفارق ضئيل جدا بينهما في البحث عن سجل معين في جدول يحتوي 1000 سجل وبسرعة دوران حوالى 1000 دوره في الثانية فلاحظ 0,016 ثانية للـ DAO و 0,009 ثانية للـ ADO

عموما اخي الكريم انا لا اعلم لماذا تشغل نفسك بمثل هذه الامور لانها امور تقنية اكثر منها تعليميه بحته

لهذا من الافضل استخدام اكسيس 2003 فهو يفي بالمتطلبات وزيادة .

اختكم

زهره

#8

أختي الفاضلة/ زهرة

حقيقة لابد من أن نذكرها في أننا دائما نستمد الجديد من عبق علمك المزدهر شكرأ لك أختى زهرة وجزاك الله كل خير وجعل كل هذا في ميزان حسناتك

الله هو الموفق لسواء السبيل

#9

أختي الفاضلة زهرة

السلام عليكم ورحمة الله وبركاته

شكرا على جهودك في المنتدى

أعتذر على اعادة اثارة هذا الموضوع بعد هذه الفترة الزمنية الطويلة،

ولكنني الى الآن لم أجد الفارق بين التقنيتين...آسف مجداا

علما أنني أتعامل مع قواعد بيانات فيها عشرات الالاف ومئات الالاف من السجلات.....!!!!!

قد يكون العذر من طريقة الكود التي أكتبها

لذا هل يمكنك تزويدي بالكود الذي قمت بتجريبه

مع الشكر الجزيل

هذا الموضوع مغلق.

مواضيع مشابهة