اقتراح قاعدة بيانات الملف مع دعم لعدة مستخدمين متزامنين

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

سؤال

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

أنا أفكر في MS Access أو Berkeley DB.

هل يمكنك مشاركة تجربتك مع قواعد بيانات الملفات؟
أي واحد استخدمته، هل واجهت أي مشاكل معه؟

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

المحلول

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

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

نصائح أخرى

لا أعتقد حقًا أن قواعد البيانات المبنية على الملفات يمكن أن تتجاوز ستة مستخدمين.آخر مرة كان لدي فيها قاعدة بيانات Access (من المسلم به أن هذا كان منذ فترة طويلة) كان علي أن أعمل بجد لجعلها تعمل لـ 8-9 أشخاص.

من الأسهل حقًا تثبيت Ubuntu على جهاز كمبيوتر قديم غير هام باستخدام PostgreSQL أو MySQL.هذا ما كان علي فعله حتى عندما احتفظت بالواجهة الأمامية لـ Access.

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

من الأسئلة الشائعة حول SQLite

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

http://www.sqlite.org/whentouse.html

يمكن أن يكون الوصول عاهرة.لقد كنت في موقف اضطررت فيه إلى التجول وإخبار 20-50 شخصًا بإغلاق الوصول حتى أتمكن من الانتقال إلى "وضع التصميم" لتغيير تصميم النماذج وربما العمود.ليس ممتعا على الاطلاق.(وصول قديم، وقد يكون مجرد إعداد سيئ)

ايندي كان يحاول مؤخرًا اتخاذ قرار مماثل، وجرب مجموعة مما يسمى بقواعد البيانات المدمجة.نأمل له الملاحظات يستطيع مساعدتك.

لقد كنت أستخدم Access لبعض الوقت وفي مجموعة متنوعة من المواقف، بما في ذلك عبر الإنترنت.لقد وجدت أن Access يعمل بشكل جيد إذا تم إعداده بشكل صحيح وفقًا لـ القواعد الارشادية.إحدى ميزات Access هي أنه يتضمن كل شيء في حزمة واحدة:النماذج وبناء الاستعلام والتقارير وإدارة قواعد البيانات وVBA.بالإضافة إلى ذلك، فهو يعمل بشكل جيد مع جميع تطبيقات Office الأخرى.يمكن الحصول على وقت تشغيل Access 2007 مجانًا من هنا, مما يجعل التوزيع أقل تكلفة.من المؤكد أن الوصول غير مناسب للعمليات الكبيرة، ولكنه يجب أن يكون مناسبًا تمامًا لعشرين مستخدمًا.يحرر: مايكروسوفت يضع عدد المستخدمين المتزامنين في 255.

هل يمكن إعداد Access لدعم 10-20 مستخدمًا؟نعم.ومع ذلك، فهي، بالإضافة إلى جميع قواعد البيانات المستندة إلى الملفات، تستخدم نظام الملفات للقفل والتحكم في التزامن.وتكون ملفات بيانات Access أكثر عرضة لتلف قاعدة البيانات من خوادم قواعد البيانات.وبينما يمكنك إعداده لهذا الغرض، يجب عليك، كما ذكر David Fenton أعلاه، اتباع أفضل الممارسات، إذا كنت تريد أن ينتهي بك الأمر إلى نظام موثوق.

شخصيًا، أجد أنه نظرًا للمعوقات التي تحتاج إلى تجاوزها للتأكد من أن حل Access خالٍ من المشاكل بشكل معقول، فإن تنفيذ مثيل MSDE/SQL Server Express، أو postgreSql هو أقل صعوبة بكثير.

تدعم قاعدة بيانات Berkeley درجة عالية من التزامن (أكثر بكثير من 20)، ولكنها تفعل ذلك بشكل أساسي من خلال استخدام الذاكرة المشتركة وكائنات المزامنة (وربما حتى النسخ المتماثل) - وهي مرافق لا تعمل بشكل جيد عند نشر BDB كقاعدة بيانات. الملف المخزن على محرك أقراص الشبكة.

من أجل الاستفادة من إمكانيات التزامن DBD، سيتعين عليك إنشاء تطبيق حولها.

السؤال الأصلي لا معنى له بالنسبة لي، حيث أن الخيارات لا تنتمي معا.BerkeleyDB هو محرك قاعدة بيانات فقط، في حين أن Access هو أداة لتطوير التطبيقات التي تأتي مع محرك قاعدة بيانات افتراضي قائم على الملفات (أي غير خادم) (Jet).بحكم وضع Access مع بيركلي، يبدو من الواضح أن المطلوب هو المطلوب فقط محرك قاعدة بيانات، ولا يوجد تطبيق على الإطلاق، ولكن كيف يستخدم المستخدمون النهائيون Berkeley DB بدون واجهة أمامية، لا أعرف (لقد استخدمته فقط من سطر الأوامر).

أولئك الذين لا يستطيعون تشغيل Jet MDB مع 20 مستخدمًا متزامنًا هم ببساطة غير مؤهلين لتقديم المشورة بشأن استخدام Jet كمخزن بيانات.إنه أمر ممكن التنفيذ تمامًا طالما يتم اتباع أفضل الممارسات.وأود أن أوصي، بالإضافة إلى صفحة الويب لأفضل ممارسات Microsoft، أفضل ممارسات توني تويز, ، و الأسئلة الشائعة حول فساد توني (أي الأشياء التي تريد تجنب القيام بها من أجل الحصول على تطبيق مستقر).

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

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