سؤال

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

ما هي إيجابيات وسلبيات إيف؟

هل هناك طريقة بديلة قاعدة بيانات للسماح للسمات / الحقول المعرفة بالمستخدمين؟

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

المحلول

لا ينبغي اعتبار هذا إجابة شاملة، ولكن فقط بضع نقاط حول هذا الموضوع.

منذ السؤال هو الموسومة أيضا مع [sql] علامة، واسمحوا لي أن أقول ذلك، بشكل عام، قواعد البيانات العلائقية ليست مناسبة بشكل خاص لتخزين البيانات باستخدام إمرأة نموذج. لا يزال بإمكانك تصميم نموذج إياف في SQL، لكن سيكون عليك التضحية بالعديد من المزايا التي ستقدمها قاعدة بيانات علائقية. ليس فقط لن تكون قادرا على فرض سلامة المرجعية، واستخدام أنواع بيانات SQL للقيم وفرض السمات الإلزامية، ولكن حتى الاستعلامات الأساسية للغاية يمكن أن تصبح من الصعب الكتابة. في الواقع، للتغلب على هذا القيد، تعتمد العديد من حلول IAV على ازدواجية البيانات، بدلا من الانضمام إلى الجداول ذات الصلة، والتي يمكنك تخيلها، لديها الكثير من العيوب.

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

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

نصائح أخرى

إلقاء نظرة على posgtres hstore http://www.postgresql.org/docs/9.0/static/hstore.html.هذا سيفعل بالضبط ما تريد دون أن معظم العيوب

ال منصة التدفق يقترح الطريقة البديلة بناء على تيارات (في الواقع، إنه نموذج المجال), مجالات و تعيينات جهات.

هل هناك طريقة بديلة قاعدة بيانات للسماح للسمات / الحقول المعرفة بالمستخدمين؟

بديل واحد هو تغيير مخطط قاعدة البيانات بناء على إدخال المستخدم: على سبيل المثال عندما يريد المستخدم حقل جديد، ثم قم بإضافة عمود مقابلة إلى قاعدة البيانات.

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