ما هو NoSQL ، كيف يعمل و ما هي الفوائد التي تقدمها ؟ [مغلقة]

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

  •  16-09-2019
  •  | 
  •  

سؤال

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

لذلك أنا فقط لدي بعض الأسئلة:

  1. ما هو بالضبط ؟

  2. كيف يعمل ؟

  3. لماذا يكون أفضل من استخدام SQL قاعدة البيانات ؟ و كيف يكون ذلك ؟

  4. هي تكنولوجيا جديدة جدا للبدء في تنفيذ بعد أو هو يستحق إلقاء نظرة ؟

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

المحلول

  1. ما هو بالضبط؟

    من ناحية، نظام معين, ، لكنها أصبحت أيضا كلمة عامة ل مجموعة متنوعة من تخزين البيانات الجديدة التي لا تتبع نموذج DB العلائقية.

  2. كيف يعمل؟

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

  3. لماذا سيكون أفضل من استخدام قاعدة بيانات SQL؟ وكم أفضل هو؟

    سيكون من الأفضل عندما يحتاج موقعك إلى توسيع نطاق كبير إلى أن أفضل RDBMS يعمل على أفضل الأجهزة التي يمكنك تحملها وتحسينها قدر الإمكان ببساطة لا يمكنها مواكبة الحمل. ما هو أفضل ما يعتمده على قضية الاستخدام المحدد (الكثير من أنشطة التحديث مجتمعة مع الكثير من الانضمام أمر صعب للغاية على "RDBMS" التقليدية) - يمكن أن يكون عاملا 1000 في الحالات القصوى.

  4. هل التكنولوجيا جديدة جدا لبدء التنفيذ بعد أم أنها تستحق إلقاء نظرة على؟

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

نصائح أخرى

لا يوجد شيء مثل NoSQL!

NoSQL هو الكلمة الطنانة.

على مدى عقود ، عندما كان الناس يتحدثون عن قواعد البيانات يعني أنهم قواعد البيانات العلائقية.و عندما كان الناس يتحدثون عن قواعد البيانات العلائقية ، يعني تلك التي يمكنك التحكم مع إدغار F.كود هي لغة الاستعلام الهيكلية.تخزين البيانات في بعض طريقة أخرى ؟ الجنون!أي شيء آخر هو مجرد flatfiles.

ولكن في السنوات القليلة الماضية بدأ الناس السؤال هذه العقيدة.وتساءل الناس إذا الجداول مع الصفوف والأعمدة هي الطريقة الوحيدة لتمثيل البيانات.بدأ الناس في التفكير و الترميز و جاء مع العديد من المفاهيم الجديدة كيف يمكن أن تكون البيانات المنظمة.وأنها بدأت في إنشاء قاعدة بيانات جديدة النظم المصممة لهذه طرق جديدة للعمل مع البيانات.

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

ماذا البيانات NoSQL تكون مشتركة ؟

في الحقيقة ليس كثيرا.

كنت كثيرا ما نسمع عبارات مثل:

  • NoSQL هو تحجيم!
  • NoSQL هو BigData!
  • NoSQL ينتهك حامض!
  • NoSQL هو سبحانه مفتاح/قيمة متجر!

هل هذا صحيح ؟ حسنا, بعض من هذه التصريحات قد يكون صحيحا في بعض قواعد البيانات تسمى عادة NoSQL ، ولكن كل واحد هو أيضا كاذبة عن واحد آخر على الأقل.في الحقيقة الشيء الوحيد البيانات NoSQL مشتركة ، هو أن تكون قواعد البيانات التي لا تستخدم SQL.هذا هو.الشيء الوحيد الذي يحدد لهم ما يفرقهم عن بعضهم البعض.

فما مجموعات البيانات NoSQL على حدة ؟

لذلك نحن جعلت من الواضح أن كل تلك قواعد البيانات يشار إلى NoSQL هي أيضا مختلفة لتقييم لهم معا.كل واحد منهم يحتاج إلى تقييم منفصل أن تقرر إذا كانت هي مناسبا لحل مشكلة محددة.ولكن من أين نبدأ ؟ الحمد لله, قواعد بيانات NoSQL يمكن تجميعها في فئات معينة ، والتي هي مناسبة لمختلف حالات الاستخدام:

الوثيقة الموجهة

أمثلة:MongoDB ، CouchDB

نقاط القوة:غير متجانسة بيانات العامل وجوه المنحى ، التنمية رشيق

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

الرسم البياني قواعد البيانات

أمثلة:Neo4j, GiraffeDB.

نقاط القوة:استخراج البيانات

في حين أن معظم البيانات NoSQL التخلي عن مفهوم إدارة البيانات العلاقات في قواعد البيانات هذه ، تبني أنه حتى أكثر من تلك ما يسمى قواعد البيانات العلائقية.

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

قيمة المفتاح مخازن

أمثلة:رديس ، كاساندرا ، MemcacheDB

نقاط القوة:سريع البحث القيم المعروفة مفاتيح

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

لسوء الحظ أنها تفترض أنك تعرف بالضبط ما كنت أبحث عنه.كنت في حاجة إلى ملف User157641?لا توجد مشكلة ، ميكروثانية.ولكن ماذا عندما تريد أسماء جميع المستخدمين الذين تتراوح أعمارهم بين 16 و 24 ، "الفطائر" كما طعامهم المفضل الدخول في الـ 24 ساعة الماضية ؟ حظ.عندما لا يكون واضح و فريدة من نوعها مفتاح نتيجة محددة, لا يمكنك الحصول عليه من K-V متجر بسهولة.

هو SQL عفا عليها الزمن ؟

بعض NoSQL أنصار الادعاء بأن المفضلة لديهم قاعدة بيانات NoSQL هو طريقة جديدة لعمل الأشياء و SQL هو شيء من الماضي.

هل هم على حق ؟

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

قواعد بيانات NoSQL ليست بديلا عن SQL فهي بديل.

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

أيضا, هناك ما هو أكثر بكثير من الدراية SQL حولها.أجيال من علماء الكمبيوتر قضوا عشرات السنين من حياتهم المهنية في مجال الأبحاث مع التركيز على قواعد البيانات العلائقية ، وهذا يظهر:الأدب المكتوب حول SQL وقواعد البيانات العلائقية نمذجة البيانات ، سواء النظرية والعملية, يمكن أن تملأ عدة مكتبات كاملة من الكتب.كيفية بناء قاعدة بيانات علائقية البيانات الخاصة بك هو الموضوع لذا بحث جيدا أنه من الصعب أن تجد قضية الزاوية حيث لا يوجد به عموما من قبل الكتاب أفضل الممارسات.

معظم البيانات NoSQL, من ناحية أخرى, لا تزال في مهدها.نحن ما زلنا في معرفة أفضل طريقة لاستخدامها.

منذ أن قال أحدهم إن رسالتي السابقة كانت خارج الموضوع، سأحاول التعويض :-) NOSQL ليس كذلك، ولم يكن من المفترض أن يكون بديلا لاستبدال قواعد بيانات SQL الرئيسية أكثر، لكن بضعة كلمات من أجل الحصول عليها الأشياء في المنظور الصحيح.

في قلب فلسفة NOSQL. يكمن في الاعتبار أنه، ربما بالنسبة لأسباب تجارية وإمكانية النقل، تميل محركات SQL إلى تجاهل القوة الهائلة لنظام تشغيل UNIX ومشتقاتها.

مع قاعدة بيانات تعتمد على النظام، يمكنك الاستفادة الفورية من القدرات المتزايدة باستمرار وقوة نظام التشغيل الأساسي، والتي كانت تتزايد بشكل مطرد لسنوات عديدة الآن وفقا لقانون مور. مع هذا النهج، أصبح العديد من أوامر نظام التشغيل تلقائيا أيضا "مشغلو قاعدة البيانات" (فكر في "LS" "فرز"، "البحث" والمرافق الأخرى التي لا تعد ولا تحصى من UNIX).

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

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

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

من الأرقام بشكل عام بشكل عام بتطبيقات الويب التي تعتمد على أداء قاعدة البيانات، ولا تحتاج إلى ميزات أكثر تقدما لمحركات قاعدة بيانات العلاقة. على سبيل المثال، قد يكون مخزن قيمة> يوفر استعلام بسيط من خلال واجهة المعرف 10-100x أسرع من تطبيق SQL Server المقابل، مع تكلفة صيانة مطور منخفضة.

مثال واحد هو هذا ورق ل OLTP. Tuple Store، الذي ضحى بالمعاملات للمعالجة الفردية الخيوط (لا توجد مشكلة في التزامن لأنه لا يسمح بتزايز)، وحافظ على جميع البيانات في الذاكرة؛ تحقيق أداء أفضل 10-100x بالمقارنة مع مماثلة RDBMS. نظام مدفوع. في الأساس، ينتقل بعيدا عن "حجم واحد يناسب الجميع" من أنظمة SQL وقاعدة البيانات.

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

خلف المشهد إنه قبول غير مباشر لفشل نموذج SQL لدعم أي شكل من أشكال OLTP أو دعم DataFormats الجديد. "الدعم" يعني عدم تخزين فقط وقدرات الوصول الكامل - برنامجي واستعلام باستخدام النموذج القياسي.

كانت المتحمسون العلائقية سريعة لتعديل الاختلال في NOSQL من غير SQL إلى SQL غير فقط SQL للحفاظ على SQL لا يزال في الصورة! هذا ليس جيدا ولا سيما عندما نرى أن معظم برامج Java اليوم تلجأ إلى رسم خرائط أورم للنموذج العلائقي الأساسي. يجب أن يكون مفهوم جديد تعريف واضح. آخر سوف ينتهي مثل الخدمية.

يكمن أساس أنظمة NOSQL في زوج القيمة العشوائية. ولكن هذا ليس جديدا. قامت أنظمة قاعدة البيانات التقليدية مثل IMS و IDMS بدعم مفاتيح Ramdom Hashed (دون الاستفادة من أي فهرس) وما زالوا يفعلون ذلك. في الواقع، لدى IDMS بالفعل كلمة رئيسية NONSQL حيث أنها تدعم إمكانية الوصول SQL إلى قاعدة بيانات الشبكة القديمة التي وصفتها باسم Nonsql.

انها مثل الجاكوزي: كل من العلامة التجارية والاسم العام. انها ليست مجرد تقنية محددة، ولكنها محددة اكتب من التكنولوجيا، في هذه الحالة تشير إلى قواعد بيانات كبيرة الحجم (غالبا ما تكون متناثرة) مثل Google BigTable أو CouchDB.

نوسكل يبدو أن البرنامج الفعلي قاعدة بيانات علنية مطبقة في AWK باستخدام ملفات مسطحة على الخلفية. على الرغم من أنهم يعترفون، إلا أن NoSQL ليس لديه حدود تعسفية، ويمكن أن تعمل حيث لا يمكن أن لا تستطيع المنتجات الأخرى. على سبيل المثال، لا يوجد حد لحجم مجال البيانات أو عدد الأعمدة أو حجم الملف "، لا أعتقد أنه كذلك قاعدة بيانات النطاق الكبير للمستقبل.

كما يقول جويل، قواعد بيانات قابلة للتطوير بشكل كبير طاولة كبيرة أو HBase, ، أكثر إثارة للاهتمام. GQL هي لغة الاستعلام المرتبطة بمحرك التطبيق والتطبيقات. يعد SQL إلى حد كبير لتجنب ميزات Google تعتبر رقاب زجاجة (مثل الانضمام). ومع ذلك، لم أسمع هذا يشار إليه باسم "NOSQL" من قبل.

NOSQL هو نظام قاعدة بيانات لا يستخدم استعلامات SQL المستندة إلى السلسلة لجلب البيانات.

بدلا من ذلك، يمكنك بناء استفسارات باستخدام API، وسوف يوفرون، على سبيل المثال Amazon Dubnessodb هو مثال جيد لقاعدة بيانات Nosql.

قواعد بيانات NOSQL هي أفضل للتطبيقات الكبيرة حيث تكون قابلية التوسع مهمة.

هل يعني NOSQL قاعدة البيانات غير العلائقية؟

نعم، NOSQL يختلف عن RDBMS و OLAP. يستخدم نماذج الاتساق الخاسر من قواعد البيانات العلائقية التقليدية.

يتم استخدام نماذج الاتساق في أنظمة موزعة مثل أنظمة الذاكرة المشتركة الموزعة أو مخزن البيانات الموزعة.

كيف يعمل داخليا؟

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

يمكن أن تعمل على بيانات منظمة وغير منظمة. يستخدم مجموعات بدلا من الجداول

كيف يمكنك الاستعلام عن هذه قاعدة البيانات "؟

راقب SQL VS NOSQL: معركة الرجعية; ؛ يشرح كل شيء.

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