التي بيرل واجهة قاعدة البيانات التي يجب استخدامها ؟
سؤال
هو CPAN DBI أفضل واجهة قاعدة البيانات لاستخدامها في بيرل العامة قاعدة بيانات الاستخدام ؟ هناك بعض أفضل الخيارات ؟
المحلول
إذا كنت تبحث فقط على مستوى منخفض الوصول إلى قاعدة البيانات—يمكنك تغذية أي سلسلة SQL (اختياريا مع أصحاب المكان وربط القيم) وأنه يعمل الاستعلام الخاص بك ويعطيك مرة—ثم نعم ، DBI هو أفضل رهان ، إلى حد بعيد.
إذا كنت ترغب في مستوى أعلى واجهة (أي واحد التي تتطلب قليلا أو لا استخدام SQL الخام في التعليمات البرمجية الخاصة بك) ثم هناك العديد من ORMs (كائن علائقي المخططون) المتاحة بيرل.تحقق من ORM الصفحة في بيرل مؤسسة بيرل 5 ويكي لمزيد من المعلومات و الروابط.(إذا كنت تريد مساعدة في اختيار من بينها أو لديك أسئلة محددة يمكنك تضييق نطاق التركيز من هذا السؤال أو ربما بعد آخر.)
نصائح أخرى
DBI هو "مستوى منخفض" واجهة بين Perl و DBMS.انها الى حد كبير الخيار الواقعي الوحيد للقيام بذلك.مقارنة JDBC في جاوة.هل سيكون ضربا من الجنون (أو محددة جدا في حالة استخدام) لاختيار أي شيء آخر من DBI لك انخفاض مستوى التفاعل بين Perl و قاعدة البيانات.
على رأس DBI, هناك العديد من كائن/العلائقية المخططون التي تجعل العمل مع قاعدة البيانات أسهل بكثير وأكثر نظافة.
بعض مشتركة/أكثر شعبية منها هي
إذا اخترت استخدام عادي DBI
من أجل المهمة التي لا تحتاج إلى ORM أنا
بقوة أقترح عليك أن نلقي نظرة على DBIx::بسيطة.
انها ليست بديلا ، ولكن مصممة بشكل جيد جدا API على رأس DBI
الذي يجعل الأشياء البسيطة البسيطة والمعقدة الأمور الممكنة دون
فقدان أي من flexibilty من DBI
.
هل وجدت من أي وقت مضى كان لديك للبحث على ما يبدو أشياء بسيطة في DBI
الوثائق ، مثل الحصول على نتائج الاستعلام كما arrayref (الصفوف)
من التجزئة (الأعمدة و قيمها)?مع DBIx::Simple
هذا هو بسيط:
# DBI
my $rows = $dbh->selectall_arrayref($sql, { Slice => {} });
# tell it we want "hashes" (yuck!) ^^^^
# DBIx::Simple
my $rows = $db->query($sql)->hashes; # does the same as the above code underneath!
نلقي نظرة على أمثلة لمزيد من.كما التكامل مع SQL::مجردة ، يجعل استعلامات بسيطة نسيم.هو استخدامه في كل من قانون بلدي حيث كنت قد استخدمت DBI
من قبل ،
أنا لا ننظر الى الوراء.
تجدر الإشارة إلى أن الغالبية العظمى من "أعلى مستوى" واجهات (مثل SQL::الملخص) و (DBIx::بسيطة) استخدام DBI نفسها عندما في الواقع أداء الاستعلامات.DBI هو الى حد كبير مستوى مقبولا طريقة اتصال قاعدة البيانات في بيرل.
إذا كنت ترغب في العمل مع الكائنات (مع التأمل!), نلقي نظرة على طفولي::ORM التي تنفذ ORM على أساس موس.هو أيضا جدا SQL مثل بناء الجملة لذلك يناسب بلدي RDBMS القائم على الدماغ على نحو أفضل قليلا من بعض من غيرها من ORM الأطر.
إلقاء نظرة على الطبقة::DBI وكذلك.
في رأيي ، DBI هو خيار جيد حقا.لقد استعملت DBD::mysql بنشاط و وجدنا أنه يكون حل جيد حقا.
نحن نستخدم DBI وحدة في جميع مشاريعنا أيضا.مرات عديدة ونحن بناء مخصصة الحزمة على أعلى من ذلك لتطبيق معين ولكن تحت هذا هو جوهر DBI وحدة.و في كثير من الأحيان انها مجرد أسهل لاستخدام DBI وحدة المهام مباشرة.
DBI كبيرة ، ولكن نوعية DBD وحدات يمكن أن تختلف.كنت للعض من قبل 'ميزة' في واحدة من الإصدارات من DBD:pg.فإنه يحب لتحميل بيانات كاملة من النتائج الخاصة بك في الذاكرة بدلا من interate أكثر من ذلك مع المؤشرات.
حسب المعتاد - التحذير programmor.
DBI الصخور!ولكن مناسبة تماما ميزاتها ORM سريعة الذهاب DBIx::الفئة في كل وقت.
في الأساس يجب أن تستخدم فقط باستخدام DBI أولا.