سؤال

أيهما أفضل (ولأسباب) لاستخدامها للاتصال بسال أو Oracle أو Firebird من تطبيق Delphi Win32 - ADO أو DBX (قاعدة بيانات Express)؟

كلاهما يسمح لك بالاتصال بقواعد البيانات الرئيسية. أنا أحب الطريقة التي يقوم بها ADO كل شيء بتغيير سلسلة الاتصال وحقيقة أن ADO وبرامج التشغيل المضمنة مع Windows، لذلك لا يوجد شيء إضافي لنشره (يبدو، صححني إذا كنت مخطئا).

DBX مرنة أيضا ويمكنني تجميع برامج التشغيل في تطبيقي، هل لا أستطيع؟

أنا حقا حريص على أن يكون لديك مصدر واحد إذا كان ذلك ممكنا، مع تخلاص قواعد البيانات اعتمادا على قسم / تفضيلات تكنولوجيا المعلومات في العميل.

ولكن هذا هو أسهل في البرنامج، وأداء أفضل، يستخدم الذاكرة الأكثر كفاءة؟ أي أشياء أخرى للتمييز منها؟

شكرا ريتشارد

هل كانت مفيدة؟

المحلول

ADO سهل الاستخدام وهو موجود هناك، يجب عليك فقط التأكد من تثبيت برنامج تشغيل عميل CorrePonding في جانب العميل.

لقد وجدت DBX أكثر مرونة، ومن الأفضل دمجها داخل IDE وتقنيات أخرى مثل DataSnap.

لنفس الغرض منك، لقد استخدمت DBX مع برامج تشغيل الطرف الثالث من ديفارتوبعد يمكنك ترجمة برامج التشغيل مع طلبك إذا قمت بشراء مصادر السائقين.

نصائح أخرى

في بداية دلفي، أشاد الناس بدعم متعدد DBMS في دلفي. أحب الجميع BDE (لأن هذه هي الطريقة الوحيدة للقيام بذلك).

ولكن عند النظر إلى العملاء أكثر من الزمان الماضية، رأيت انخفاضا مطردا لدعم متعدد DBMS في تطبيقاتهم.

تكلفة دعم DBMS متعددة من تطبيق واحد مرتفع.

ليس فقط لأنه يجب أن يكون لديك معرفة بكل DBMS، ولكن أيضا لأن كل DBMS لديها مجموعة خاصة بها من ماءاتها، حيث يجب عليك التكيف مع طبقة الوصول إلى البيانات الخاصة بك. لا تشمل هذه الاختلافات فقط في بناء الجملة وأنواع البيانات الأساسية، ولكن أيضا استراتيجيات التحسين.

أيضا، تعمل بعض DBMS بشكل أفضل مع ADO، بعضها أفضل مع اتصال مباشر (مثل تخطي عميل Oracle الخاص بك معا).

أخيرا، اختبر جميع مجموعات برنامجك مع أنظمة DBMS متعددة كثيفة للغاية.

لقد شاركت في عدد قليل من المشاريع حيث اضطررنا إلى تغيير تقنية DBMS Backend و / أو تقنية الوصول إلى البيانات (من IE BDE إلى DBX، أو من DBX إلى اتصال مباشر). كان تغيير الخلفية دائما أكثر مؤمنا من تغيير تقنية الوصول إلى البيانات. جعلت مناهج متعددة الطبقات أسهل إلى حد ما، ولكنها زادت درجات الحرية وهناك جهود الاختبار.

بعض المنتجات التي أرى أن الدعم متعدد DBMS في تطبيقات السوق العمودي حيث يكون لدى العميل النهائي بالفعل البنية التحتية ل DBMS الخاصة بهم ويحتاج التطبيق إلى التكيف مع ذلك. على سبيل المثال، في المناطق الحكومية الهولندية، كانت أوراكل قوية حقا، لكن SQL Server قد أنشأ قاعدة مستخدم تماما.

لذلك عليك أن تفكر في مجموعات DBMS التي تريد دعمها، ليس فقط من حيث الوظائف، ولكن أيضا من حيث التكلفة.

إذا كنت تلتصقا ل DBMS واحدة، فلا معنى لها أن تذهب لطبقة وصول إلى بيانات عامة مثل BDE أو DBX أو ADO: إنها تؤدي إلى إجراء اتصال بشكل مباشر قدر الإمكان. لقد علمتني تجربتي أن هذه المجموعات تعمل بشكل جيد:

آمل أن يمنحك هذا بعض البصيرة في إمكانيات وقيود دعم DBMS متعددة من تطبيقات Delphi الخاصة بك.

-

القاعدة العامة: كل طبقة من المكونات ستضيف طبقة إضافية من الأخطاء. كل من ADO و DBX مغلفة مكونات حول وظائف قاعدة البيانات القياسية، وبالتالي كلاهما قوي بنفس القدر. لذلك يجب أن يستند الاختيار الصحيح إلى عوامل أخرى، مثل قواعد البيانات التي تريد استخدامها. إذا كنت ترغب في الاتصال ب MS-Access أو SQL Server، فسيكون ADO الخيار الأفضل لأنه أكثر أمانا لهذه قواعد البيانات. لكن Firebird و Oracle أكثر أمانا لمكونات DBX.

أنا شخصيا أميل إلى استخدام ADO ADO API، رغم ذلك. ثم مرة أخرى، أنا لا أستخدم مكونات علم البيانات في مشاريعي. انها أقل راد، وأنا أعلم. لكنني غالبا ما أحتاج إلى العمل بهذه الطريقة لأنني أكتب بشكل عام تطبيقات العميل / الخادم مع العديد من الطبقات بين قاعدة البيانات والوجه واجهة المستخدم الرسومية، مما يجعل الأمور أكثر تعقيدا.

بلدي سنتان: DBX أسرع بكثير (على Oracle و SQL)، وأكثر صعوبة بشكل كبير وأصعب نشره.

إذا كان الأداء عاملا، سأذهب مع DBX. خلاف ذلك، أود فقط استخدام ADO من أجل البساطة.

كما قال آخرون، قد يكون لدى DBX الحافة في الأداء الخام في بعض الحالات أو في ظل ظروف محددة، لكن ADO هو الأساس لعدد أكبر من التطبيقات في العالم، رغم أنه قد يكون أداء ADO أكثر فقرا نسبيا، بوضوح لا يعني فقير "غير مقبول".

بالنسبة لنفسي، وأبلغها المشاريع الكبرى التي عملت عليها، فإن أكبر "مشكلة" مع DBX هي أنه بغض النظر عن مدى جودة قد يكون، فهي تكنولوجيا البنية التحتية الرئيسية مقدمة من شركة لغة / أدوات.

أي شخص مبني بالتطبيقات على تقنية BDE السابقة سيشهد على الاضطراب الناتج عند إهمال تلك التكنولوجيا ولم تعد مدعومة. في حين أن أي تكنولوجيا محصنة من الاستهلاك من قبل مزودها، إلا أن ADO بوضوح لديه الحافة عندما يتعلق الأمر بدعم الصناعة خارج مزود التكنولوجيا أنفسهم.

لهذا السبب أنا نفسي الآن دائما استخدام ADO. فقط تغيير سلسلة الاتصال ليس دائما الشيء الوحيد للقلق عند التغيير من نوع قاعدة بيانات إلى آخر. يمكن أن يختلف بناء جملة استدعاء الإجراء المخزن من موفر ADO إلى آخر، ولا يزال عليك مشاهدة بناء جملة SQL الذي تستخدمه إذا كنت تنوي النشر ضد محركات SQL مختلفة متعددة، حيث قد يختلف دعم SQL من ON إلى آخر.

لتخفيف هذه المشكلات التي أستخدمها لتغليف نموذج كائن ADO. لا يحاول هذا التغليف تغيير نموذج الكائن في شيء لا يشبه ADO، فهو ببساطة يكشف هذه الأجزاء من ADO أنني بحاجة إلى استخدامها مباشرة في شكل أكثر ودية OfficePascal ودية) (مثل أنواع ENUM و يحدد الثوابت والأعلام وغيرها، بدلا من مجرد عشرات إذا لم يكن مئات الثوابت الصحيحة).

تعتني أيضا بتغليف بعض الاختلافات الصفراء في سلوكيات / متطلبات مختلفة للمزود، مثل الاختلافات المذكورة سابقا في بناء جملة استدعاء الإجراء المخزن.

يجب أن أقول أيضا أنه على غرار ملصق آخر، فأنا منذ فترة طويلة توقفت عن "أدوات التحكم في علم البيانات"، والتي تفتح هذا النهج. إذا كنت بحاجة أو ترغب في استخدام عناصر تحكم البيانات التي تدركها وترغب في استخدام ADO، فلن تتمكن من استخدام ADO مباشرة ويجب أن تجد بعض التغليف التي تعرض ADO Thru Thru DataSet Model.

ADO هو Microsoft World

تم إنشاء DBX في البداية (Delphi 6) للمنصة المتقاطعة و Kylix

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top