ما هي قاعدة البيانات المضمنة التي يجب استخدامها في تطبيق دلفي؟

StackOverflow https://stackoverflow.com/questions/222699

سؤال

أقوم بإنشاء تطبيق سطح مكتب في دلفي وأخطط لاستخدام قاعدة بيانات مضمنة.لقد بدأت المشروع باستخدام SQlite3 مع مكتبة DISQLite3.إنه يعمل ولكن التوثيق يبدو خفيفًا بعض الشيء.لقد عثرت مؤخرًا على Firebird (نعم لقد توقفت عن استخدام Windows لفترة من الوقت) ويبدو أنه يحتوي على بعض الميزات والدعم الجذاب.

ما هي بعض إيجابيات وسلبيات كل قاعدة بيانات مضمنة؟الحجم مهم وكذلك الدعم والموارد.ماذا استخدمت ولماذا؟

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

المحلول

ولقد تم استخدام سكليتي (عبر DISQLite3) في FeedDemon لعدة أشهر، وأنا أوصي به - فقد كان سريع للغاية ومستقرة. كما قال خافيير، مستندات للمكتبة قد تكون رقيقة، ولكن مستندات لسكليتي نفسها هي جيدة جدا.

نصائح أخرى

وأنا باستخدام فايربيرد 2.1 جزءا لا يتجزأ من وأنا سعيد جدا مع it.I مثل حقيقة أن حجم قاعدة البيانات غير محدودة عمليا (اختبار مع> قواعد البيانات 4 GB ويعمل) وأن ملف قاعدة البيانات متوافق مع فايربيرد Server بحيث يمكنني استخدام أدوات موحدة لإدارة قواعد البيانات والتفتيش. يتكون توزيع اسقاط بعض الملفات في مجلد إكس الخاص بك.

لا تدعم الوصول في وقت واحد من برامج متعددة في وقت واحد ولكن الوصول من مؤشرات ترابط متعددة هو (طالما يمكنك التأكد من أن واحدا فقط عملية "ربط" قيد التقدم في أي لحظة).

ولقد استخدمت SQlite3 لكثير من المشاريع (ولكن من C / C ++ والهدف-C). انها صغيرة للغاية - عدم الاعتماد على الإطلاق - قاعدة البيانات في ملف واحد

وانها ديسيبل المفضل لمطوري ماك لأنها تتلقى دعما مباشرا CoreData وعلى اي فون - حتى لا يكون هناك قاعدة المستخدمين الكبيرة (ناهيك عن كل من المستخدمين الآخرين)

.

دعونا نرى، مقارنة سريعة:

سكليتي:

  • الكتابة الديناميكية في قاعدة البيانات
  • الملفات عبر الأنظمة الأساسية
  • يعمل على أنظمة التشغيل Windows وLinux وMac وما إلى ذلك.
  • المجال العام
  • يدعم المعاملات
  • يعتمد على أمان نظام الملفات، ولا يشمل الأمان الخاص

فايربيرد مضمن:

  • الكتابة القوية في قاعدة البيانات
    • ليست كل أنواع بيانات SQL مدعومة
  • الملفات عبر الأنظمة الأساسية
    • يعمل Firebird المضمن على نظام التشغيل Windows فقط
    • تكون الملفات من Firebird المضمنة بنفس تنسيق إصدار الخادم الكامل
    • يمكن نسخ الملفات من Firebird المضمنة إلى خادم غير نظام Windows للاستخدام
  • متاح بموجب MPL المعدل ("ما هو لنا هو لنا ويجب أن يظل حرًا، وما هو لك هو لك وليس عليك الإفراج عنه")
  • يدعم المعاملات والمشغلات وما إلى ذلك.

MySQL المضمنة:

  • يعتمد دعم ميزات SQL على تنسيق الملف
  • (IIRC) الملفات عبر الأنظمة الأساسية
  • GPL إلا إذا كنت تدفع الإتاوات
  • يعمل على ويندوز، لينكس، ماك
  • تحظى بشعبية لا تصدق بين جمهور المصادر المفتوحة

حتى قواعد البيانات المضمنة لها نقاط القوة والضعف.ستحتاج إلى الموازنة بين نقاط القوة والضعف هذه مقابل ما تفعله لاتخاذ القرار.

ولقد استعملت DBISAM على عدد من المشاريع. مضمن تماما من دون حتى الحاجة إلى DLL الخارجية. وخلافا للآخرين أنك مدرج غير التجاري. وهناك الكثير من الميزات الرائعة وعلى الرغم من جيد جدا موثقة ومعتمدة. ويكون خليفة لأنه لم أحاول على الرغم من بعد.

وجزءا لا يتجزأ من فايربيرد هو خيارنا # 1 لأنه مع أية تغييرات التعليمات البرمجية، مستخدم دلفي التطبيق واحد مع قاعدة بيانات جزءا لا يتجزأ من يمكن ترحيل إلى نشر يستند إلى ملقم متعدد المستخدمين دون التضحية بأي من الميزات الراقية (مثل الإجراءات المخزنة، وموجبات وجهات النظر، وما إلى ذلك). ولها قاعدة بيانات مجانية الحقيقة ولا GPL التعليمات البرمجية في هذه العملية.

ونوصي بشدة لاستخدام AnyDAC عند العمل مع قواعد البيانات ودلفي - ثم يمكنك اختيار لاستهداف FB أو سكليتي seamlessingly

وكنت أفضل أن يكون لFB للتطبيقات المدمجة. توم

وأنا استخدم قاعدة بيانات خادم ميزة سايبيس، ولكن أنا أيضا مدير R & D، لذلك هذا المنصب هو منحاز. :)

لدينا المكونات الأصلية دلفي TTable وTQuery لكلا WIN32 VCL وVCL.NET. الجدول الوصول المباشر بالإضافة إلى دعم SQL يجعل ميزة فريدة من نوعها من بين العديد من العروض دلفي الأخرى. ميزة تدعم جداول كبيرة (محدود فقط من عدد السجلات، 2000000000) ويحتوي على محرك المحلي الحرة، والتي هي لطيفة لأجهزة الكمبيوتر تطوير ولمواقع العملاء الصغيرة التي لا تتطلب العميل وظائف / الخادم. التبديل إلى العميل / الخادم مع خاصية اتصال واحدة، أية تغييرات أخرى.

لدينا طن من عملاء حتى الوصول إلى البيانات خارج دلفي هو أيضا من السهل جدا (موفر بيانات .NET، ODBC، OLE DB، PHP، بيرل، JDBC، الخ).

والمنتج الرئيسي موقع ويب: http://www.advantagedatabase.com موقع ويب المطور: http://devzone.advantagedatabase.com

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

وإذا كنت بحاجة إلى شيء بين بين، لتطبيق متعدد المستخدمين المعتدلين، فإن واحدة من قواعد البيانات المسطحة تكون أفضل. لقد وجدت أن قاعدة البيانات المطلقة ComponentAce في الخيار الأفضل لاحتياجاتي من DBISAM، NexusDB أو VistaDB.

وويترك بصمة صغيرة نسبيا (أي دلس)، انها ديسيبل ملف واحد (لا بد منه بالنسبة لي)، ويدعم يونيكود، وضغط BLOB، crypting، وحدود التقنية تبدو تثير إعجاب لقاعدة بيانات مسطحة. وعلاوة على ذلك، كان دعما جيدا في مناسبات قليلة عندما كنت في حاجة إليها.

لسلبيات، وقد لاحظت أنه لا يعتمد المعاملات المتداخلة، ولكن بخلاف ذلك، لم يكن لدي أي مشاكل.

وأما بالنسبة للحجم، لا شيء يتفوق سكليتي.

وعند الرجوع من عدم وجود وثائق، واعتقد انها وثيقة لDISQLite3. و سكليتي مستندات غير كاملة تماما

ونلقي نظرة على NexusDB. وقد استخدمت بنجاح كبير في الماضي.

والمشكلة مع (جزءا لا يتجزأ) فايربيرد هي أن قاعدة البيانات لا يمكن أن تتواجد على محرك أقراص الشبكة. أيضا، فإنه من الصعب أن يكون قاعدة بيانات على محرك أقراص للقراءة فقط (CD / DVD).

لبعض الخارقة حول هذه القيود رؤية دلفي ويكي: http://delphi.wikia.com/wiki/Firebird_tipps

وNexusDB تقدم مجموعة كاملة من جزءا لا يتجزأ، لكامل العميل / الخادم / جهاز التحكم عن بعد. SQL2003 أيضا متوافقة، على ما أعتقد. أنا استخدامه على عدد قليل من المشاريع، وأنا سعيد للغاية حتى الآن، وحقيقة أن تتمكن من العمل في مجموعة واسعة من "موازين" هو زائد كبيرة (لا وجود لتعلم DB آخر للتطبيقات توسيع نطاقها، الخ).

وانظروا الى هذه المقارنة قاعدة بيانات جزءا لا يتجزأ من: http://sql-db.cz.cc/ ، يمكن أن تكون مفيدة. يتم عرض معظم المنتجات المذكورة أعلاه هناك: ميزة، DBISAM، فايربيرد، MS SQL Server و أكثر من ذلك بكثير: Accuracer، أبولو، ElevateDB، NexusDB، TurboDB

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

وأنا باستخدام SQL Server Express و مكونات ADO. يعمل كبيرة. يمكنك تشغيل خادم اكسبرس SQL تثبيت مع فلكس لإخفاء تعقيدات من المستخدمين. يمكنك أيضا توزيع قاعدة البيانات التي يتم تحميلها من قبل اسم الملف. هناك الملايين من المستخدمين خادم SQL حتى يتم إيجاد حلول لأية مشاكل بسهولة في intertubes: -)

ولقد فعلت ذلك باستخدام WebSearch لإيجاد حزمة قاعدة بيانات سريعة لبلدي تطبيق دلفي. أردت أن تكون واردة تماما في تنفيذ مع أي دلس خارجية أو المكتبات المطلوبة. أنا أصلا وجدت Accuracer التي كتبها AidAim. وكانوا قد شارك مدى سرعة كانت قاعدة البيانات الخاصة بهم وحتى أعطى مقارنات مع مجموعات أخرى مماثلة ل "إثبات" وجهة نظرهم.

وأردت أن نعتقد مطالباتهم لكنني اعتقدت أن البحث في الويب أكثر قليلا للعثور على مواعيد مجموعات أخرى. وفوجئت جدا العثور على وظيفة في منتديات النقاش دلفي حيث سأل شخص ما قاعدة البيانات للاستخدام، وكان هناك 14 اقتراحات مختلفة. واحدة من المستجيبين قد فعلت له مقارنات توقيت الخاصة ووجدت Accuracer إلى أن تكون بطيئة جدا بالمقارنة مع عدة أشخاص آخرين، والتي كان Accuracer (مريح) استبعد من صفحة المقارنة الخاصة بهم.

وظيفة، بالإضافة إلى إجراء بحوث إضافية متابعة شبكة الإنترنت عن طريق لي، دفعتني إلى تميل <لأ href = "http://www.yunqa.de/delphi/doku.php/products/sqlite3/index" يختلط = "نوفولو noreferrer "> DISQLite3 أو منتج على أساس برنامج المصدر المفتوح سكليتي، ولكن مع التحسينات على العمل في دلفي بسرعة كبيرة، مع مقدار حمل صغيرة جدا، ومع دعوات القيادة المستندة - التي أحب. ومن بنشاط قيد التطوير، وسوف يكون قريبا النسخة الرسمية دلفي 2009، على الرغم من أن ما يبدو فإن النسخة الحالية تعمل تحت D2009.

وAddenum: DISQLite3 النسخة 2.0.0، الذي صدر 17 نوفمبر، ويدعم D2009

وأنا أعلم الوصول MS هو ديسيبل حماقة نسبيا (ونتوقع أن يتم اسقاطها في النيران هنا)، ولكن إذا كانت هناك حاجة بيانات صغير فقط أنها قد تكون له مزايا إذا تم استخدام مايكروسوفت أوفيس على أي حال. بالنسبة لي كان وسيلة لتخزين بيانات البرنامج مع المزيد من المرونة من ملفات csv والذي هو نهج مشترك لرمز العلمي.

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

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

إذا جزءا لا يتجزأ من هو يجب المطلق، والنظر في DBISAM.

وkbMemTable هو مرشح جيد. يعمل في الذاكرة، سريع، متعدد threadding. تستخدم ليكون حرا.

Components4Developers

ولقد استخدمت DBISAM وkbMemTable في مناسبات مختلفة.

وما يعجبني DBISAM هو أن لديها ميزات كبيرة، وعادة ما يكون موثوق للغاية. لقد استخدمت في قواعد البيانات الكبيرة، البحث عن النص الكامل، وضع للقراءة فقط، من CGIs والعديد من الحالات الأخرى.

وكانت كبيرة إلى حد ما بالمقارنة مع المكونات kbMemTable أو سكليتي مقرها، وإن كان. وأنت لا يمكن أن يكون ملف واحد لكل قاعدة البيانات (أو حتى الجدول) - تبعا للحالة، وهذا هو العيب الرئيسي

وkbMemTable هو صغير وانه لشيء رائع لكميات صغيرة من البيانات. منذ تشغيله في الذاكرة، فإنه يجب أن يكون هناك كمية صغيرة من البيانات، بطبيعة الحال.

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

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

وجزءا لا يتجزأ من فايربيرد هو خيارنا # 1 كذلك. وجناح <م> الموحدة ينترباسي V2.0 معها. حل كبيرة ومستقرة!

ولقد استخدمت ScimoreDB. لديها المراوغات لأنها تعطيه مجانا الملوك ولها المراوغات في أنواع البيانات ومع بعض مشكلات التثبيت. وكان هذا على C # المشروع.

وفايربيرد على طول الطريق. بشكل جيد جدا كل شيء، وحتى الآن الإصدار 2.1 صلبة جدا.

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

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

ونوده هو أوسم حقا ولها بصمة صغيرة بحيث يمكنك استخدام جزءا لا يتجزأ من ويمكن زيادتها إلى أعلى لكثير من المستخدمين ويفعل يونيكود جيدا الفيليين يمكنني استخدام مكونات devart مع دلفي 2009 وFIB زائد عن دلفي 6/7 (النسخة الخاصة لعام 2009 ويونيكود ليست مستعدة بعد سيئة للغاية)

وهممم، لا أحد قد أوصى BDE - أتساءل لماذا هذا؛ -)

وBlackFishSQL هو احتمال آخر، على الرغم من أنني لم تختبر في العمق حتى الآن.

ولدي قاعدة البيانات التي لا بد لي من تسجيل 5 البيانات الميدانية عن كل 20 ثانية لمدة 10 يوما .. 3 المجال هي عدد صحيح (1)، الحقل مزدوج (الوقت) و 1 الحقل سلسلة [5].

وأنا لا تزال تستخدم Delphi6 srv2 بسبب المكونات بلدي. أحدث إصدارات دلفي رهيبة في المكونات التي يجب أن أقوم تنفق آلاف الدولارات من المال لإعادة بناء مكتبة مكون بلدي. لذلك دلفي 6 لا يزال أفضل لتطبيقات حقيقية commertial التي لم نسخة من DELPHIS تعطي العديد من المشاكل. في العديد من النقاط مثل USB أو تنسجم قراءات هلم جرا ... يطلقون الأحدث منها قبل الإصدارات السابقة أبدا الجلوس على السوق.

ولدي الإعداد رمز مع Delphi6 ما يلحق 43200 السجلات في الجدول لاختبار لأنني ستنشر الجدول في تطبيق حين أن لديها 43200 السجلات. وسوف يظهر كل البيانات الموجودة على DBChart.

ونتيجة الاختبار أقل من قواعد البيانات ملأت الجداول من قبل القيادة إدراج مع 43200 السجلات

<اقتباس فقرة>   

وDBISAM = 34 ثانية،
  ElevateDb = 11 ثانية،
  AbsoluteDB = 45 ثانية،
  SQLlite = 32 دقيقة،
  فايربيرد = 12 دقيقة،
  MSSQL12 localDB = 28 دقيقة،
  من السهل الجدول = 8 دقائق،
  BDE = محظور،

وأنا طعاما أوراكل اختبار، blackfish، sysbase، nexsusDb الخ .. ولكن يبدو أنها سوف أيضا بطيئة جدا. لقد تم توصيل مع DBChart وفقط elevateDb وabsoluteDB وقد حملت 43200 سجلات DBchart في الوقت exceptable مثل 7 ~ 10 ثانية. أخرى اتخذت كل دقيقة. لذلك قواعد البيانات أبطأ يحتاج دائما الترميز الحيل لتحقيق النجاح في بعض وظائف حقيقية ..

ولقد اختبرت سرعة بحثهم وكذلك عن طريق تحديد الأمر الذي قواعد بيانات ملقم يستند للأسف دائما ما تكون أبطأ في.

من الصعب للغاية لإدارة في لدلفي أنهم جعلني متعب جدا

وMSSQL وSQLLite3.

وهذه هي بلدي نتائج الاختبار
في النهاية قررت استخدام AbsoluteDB، DBISAM وارفع. لقد طرح بقية قبالة PC.

وارفع البرامج دويسنت دعم RECNO وظيفة تتطلب رموز إضافية في وقت لإدارتها. وهذا يجعل قاعدة البيانات أبطأ علة الآخر هو مع برنامج ارفع هي autoinc المجالات. لا توجد وسيلة لإعادة تعيينها. لذلك أنا لم اختار البرنامج Elevat حتى أنها أسرع قاعدة البيانات. يقولون العديد من وظائف جيدة ولكن كم منهم نستخدمها في الواقع. أنها مجرد ترك أهم وظائف غير معتمدة ولكن الثابتة العديد من وظائف كثيرة لا لزوم لها. وعلى ما يبدو منذ 8 سنوات لا يوجد أي ميزة سواء.

إذا كنت تريد أن ترى مع الرجاء العين الخاصة بك مجرد محاولة ونرى ..

وأنا أفكر بين اثنين DB الآن المطلق أو DBisam4

وعندما يتعلق الأمر إلى قواعد البيانات جزءا لا يتجزأ من السؤال الأول هو: هل متعددة؟ في الواقع، الذي يحتاج الى قاعدة البيانات التي لا يسمح اتصالات متعددة (قراءة وكتابة) لذلك؟ لقد حاولت (intensly) جميع قواعد البيانات المذكورة وجدت واحد فقط الذي يعمل في الواقع على النحو الذي ينبغي. وهذا هو Accuracer. من المؤسف الوحيد مع accuracer أن ه عصابة من ثلاثة رجال ونقص مزمن في الدعم المناسب. بل هو أيضا ثابت بشكل رئيسي في تطوير كما رأينا أي ميزات حقيقية في years.Not المستغرب منذ شخص واحد فقط يتطور فعلا. ويبدو أنهم يعيشون في الشهرة القديمة. مستخدمين الثناء تعكس ذلك (تعليق عادة 10 سنة). للحصول على تجربة مستخدم واحد أوصي قاعدة البيانات المطلقة. أما بالنسبة للاعبين الرئيسيين أوصي SQL Server من مايكروسوفت. أصبح أوراكل من bloatware وتموت ببطء.

ملاحظة ما هو لطيف في accuracer هو أن مهامهم قاعدة البيانات جزءا لا يتجزأ تماما مثل الخادم مهب كامل. تستقر السجل الحالي فقط إذا كان استخدام في، بينما وظائف بقية طبيعي. قاعدة بيانات لطيفة. المؤسف فقط أنها راكدة.

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