سؤال

أنا أبحث عن إطار عمل شائع للوصول إلى البيانات سيوفر قابلية نقل الحمل عبر مختلف قواعد بيانات NOSQL مثل SimpledB ، و Azure Tables ، و Cassandra ، و CouchDB ، و MongoDB ، وما إلى ذلك. أنا أقوم بإنشاء تطبيق وأرغب في أن يتمكن عملاؤي من استخدامه على الإطلاق متجر NOSQL يريدون.

في سيناريو أكثر علائقية ، كنت أستخدم LINQ على Nhibernate أو إطار الكيان ، لكنني لم أجد إطارًا مكافئًا لقواعد بيانات NOSQL. كل ما وجدته هو API الخاص بقاعدة البيانات على الرغم من أنه يبدو أن هناك قواسم مشتركة كبيرة. هل يوجد واحد؟ ويفضل واحد مع LINQ.

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

المحلول

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

ومع ذلك ، خارج مجموعة أساسية صغيرة من الميزات ، تختلف قواعد بيانات "NOSQL" هذه بشكل كبير في العديد من التحيات. أعني ، كيف يمكنك تنفيذ مختلف الخريطة/تقليل الوظائف بشكل لذيذ؟ كيف يمكنك تنفيذ العمليات الذرية عندما تدعم العمليات الذرية المختلفة؟

في كلتا الحالتين ، نحن في وقت مبكر جدًا في دورة حياة NOSQL للحصول على إطار عمل لاأدري لكل هذا. أسقطت Azure أساسًا عرض NOSQL لصالح "SQL Server المستضافة". ربما يبلغ عمر MongoDB 20 شهرًا ، لا يزال CouchDB في الإصدار 0.11.x ، يبلغ عمر SimpledB أقل من 24 شهرًا ، وكاساندرا في الإصدار 0.6.2 وربما كان في الاستخدام المنتظم لبضع سنوات.

نحن لسنا هناك بعد.

نصائح أخرى

يتم تطوير لغة استعلام شائعة (تسمى UNQL): http://www.unqlspec.org/display/unql/home

هناك مزودون LINQ لـ MongoDB ، لكنني لا أعتقد أن هناك مزودًا عامًا .NET LINQ لـ "All" NOSQL DB.

لقد فكر بعض الناس في لغة استعلام NOSQL العامة: http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language

إذا كان لديك فقط متطلبات الثبات الأساسية ، فأنا أحافظ واجهة برمجة تطبيقات التخزين المؤقت المشتركة مع مقدمي الخدمات لـ Memcached و Redis و Inmemory و FileSystem Caching.

إنه يدعم Redis فقط ، لكن لديّ C# Redis Client التي لديها مألوفة جدا C# API. إنه يدعم أصليًا أنواع POCO المستمرة وتكشف جميع هياكل البيانات المتقدمة من جانب الخادم من Redis باعتبارها هياكل بيانات ICollection الأصلية .NET ، بحيث يمكن استخدامها بسهولة في واجهات برمجة التطبيقات C# الحالية مثل LINQ ، إلخ ، إلخ.

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