سؤال

أنا أبحث عن متاجر قيمة NOSQL الرئيسية التي توفر أيضا تخزين / الحفاظ على العلاقات بين الكيانات المخزنة. أعرف أن Datastore Google App Engine يسمح للعلاقات المملوكة وغير المملوكة بين الكيانات. هل يقدم أي من متجر NOSQL الشهير شيئا مشابها؟

على الرغم من أن معظمهم هم مخطط أقل، إلا أن هناك أساليب للعلاقات المناسبة على متجر قيمة رئيسية؟

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

المحلول

إنه ينتمي إلى السمات الأساسية لل قواعد البيانات الرسم البياني لتوفير الدعم للعلاقات بين الكيانات. عادة، تقوم بنمط كياناتك كعقد وعلاقات العلاقات / الحواف في الرسم البياني. على عكس RDBMS. ليس لديك لتحديد العلاقات مقدما - فقط أضفها إلى الرسم البياني حسب الحاجة (مخطط خالي). لقد أنشأت أ معرض النمذجة المجال إعطاء أمثلة قليلة حول كيفية النظر في هذه الممارسة العملية. تستخدم الأمثلة من Graphdb NEO4J، وهو مشروع أشارك فيه. ال القائمة البريدية من هذا المشروع، استخدم لإثبات مفيدة للغاية لأسئلة النمذجة الرسم البياني.

قاعدة البيانات الموجهة المستند رياك لديه دعم للروابط بين الوثائق.

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

عفوا، شاهدت الآن أن العنوان يقول "متجر Nosql" ثم سؤالك الفعلي يضيق هذا إلى "متجر Nosql Value Value". نظرا لأن مخازن المفاتيح / القيمة ليس لديها دلالات لتحديد العلاقات بين الكيانات، سأظل نشر إجابتي.

نصائح أخرى

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

هذا مناسب لنفس أنواع الأشياء التي تستخدمها مفاتيح أجنبية، لكنها غير محسنة لجمل الرسوم البيانية الخطيرة.

العلاقات في محرك تطبيق Google هي مفاتيح فقط للكيانات التي يتم الرجوع إليها تلقائيا عند الوصول إليها في التعليمات البرمجية. ويتم فقط القيم عند استخدامها للتصفية ضد. إنها وظيفة API DB بدلا من أي شيء صريح، لذا فإن الوصول إلى ReleverProperty سيقوم ببساطة بإجراء استعلام ضد النموذج المشار إليه للوصول إلى الكائن.

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

بول.

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