ما هي الحالات استخدام قواعد البيانات القائمة على الرسم البياني (http://neo4j.org/)؟ [مغلق]

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

  •  05-07-2019
  •  | 
  •  

سؤال

ولقد استخدمت الكثير العلائقية DB وقرر الخروج على أنواع أخرى متوفرة.

وهذا منتج معين تبدو جيدة وواعدة: http://neo4j.org/

وقد أي شخص استخدام قواعد البيانات على الرسم البياني؟ ما هي إيجابيات وسلبيات من prespective الاستخدام؟

هل استخدمت هذه في بيئة الإنتاج؟ ما هو شرط أن مطالبتك استخدامها؟

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

المحلول

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

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

وكانت

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

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

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

وكان العيب الآخر من قاعدة بيانات الرسم البياني لدينا أن بنينا أنفسنا، وهو ما يعني أننا عندما ضرب مشكلة (عادة مع قابلية) كان علينا أن حل ذلك بأنفسنا. إذا كنا قد تستخدم قاعدة بيانات علائقية، البائع قد بالفعل حل المشكلة قبل عشر سنوات.

إذا كنت بناء المنتج للعملاء enterprisey والبيانات الخاصة بك يلائم نموذج العلائقي، استخدم قاعدة بيانات علائقية إذا كنت تستطيع. إذا طلبك لا تتناسب مع النموذج العلائقي لكنها لا تناسب نموذج الرسم البياني، استخدام قاعدة بيانات الرسم البياني. اذا كان يناسب شيء فقط آخر، واستخدام ذلك.

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

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

نصائح أخرى

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

إذا كنت تعمل بالفعل في جاوة، وأعتقد أن النمذجة باستخدام Neo4j غير مستقيمة جدا ولها تسطحا أداء أسرع / لR / W من أي حلول أخرى حاولنا.

لنكون صادقين، ولدي صعوبة في لا التفكير من حيث الرسم البياني / شبكة لأنه أسهل بكثير من تصميم بنية الجدول الملتوية لعقد خصائص الكائن والعلاقات.

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

وحظا سعيدا.

وهناك نقطتان:

أولا، على البيانات لقد تم العمل مع السنوات ال 5 الماضية في SQL Server، لقد ضرب مؤخرا جدار التوسع مع SQL لنوع من الاستفسارات ونحن بحاجة إلى تشغيل (relationhsips متداخلة ... تعلمون. ..graphs). لقد لعب حولها مع neo4j، ومرات البحث بلدي عدة أوامر من حجم أسرع عندما كنت بحاجة الى هذا النوع من البحث.

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

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

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

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

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

ومنذ طراز كائن في التعليمات البرمجية عموما هو هيكل الرسم البياني، ورسم الخرائط من قاعدة البيانات هو أيضا أكثر بساطة، مع أقل رمز وبالتالي أقل البق.

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

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

وأنا على بناء شبكة داخلية في الشركة التي أعمل بها.

وأنا مهتم في فهم كيفية تحميل البيانات التي تم تخزينها في جداول (أوراكل، MySQL، SQL Server و اكسل، أكسس، مختلف القوائم عشوائي) وتحميله في Neo4J، أو بعض أخرى قاعدة بيانات الرسم البياني. Specifcally، ماذا يحدث عندما يتداخل البيانات المشتركة البيانات الموجودة بالفعل في النظام.

نعم، أنا أعرف بعض البيانات أفضل على غرار في RDBMS، ولكن لدي هذه الفكرة الحكة لي، وهذا عندما تحتاج إلى فرض عدة جداول واضحة، ونموذج الرسم البياني هو أفضل من بنية الجدول.

وعلى سبيل المثال، أنا أعمل في بيئة التصنيع. هناك مشروع كبير ونحن نعمل على وبسبب تعقيد، كل قسم قد خلق جداول البيانات إكسل منفصلة له <لأ href = "http://en.wikipedia.org/wiki/Bill_of_materials" يختلط = "نوفولو noreferrer "> BOM (بيل من المواد) التسلسل الهرمي في عمود على الأعمدة اليسرى ثم عدة من الملاحظات وشيكات من قبل الأفراد الذين جعلوا هذه الأوراق.

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

والمشكلة الثانية هي أن جداول البيانات إكسل تمتص في ما يمثل BOM hierarchial عند استخدام عنصر مشترك في جمعية ثانوية أكثر من واحد. وهذا يعني أنه إذا كان شخص ما يكتب مذكرة حول تتابع P34 في جمعية ثانوية الاشتعال، يجب أن تكون مرتبطة نفس التعليق مع التبديلات P34 المستخدمة في جمعية ثانوية سائق السيارات. هذا لن يحدث في جداول اكسل.

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

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

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

وهنا هو مادة جيدة أن يتحدث عن الاحتياجات التي قواعد البيانات العلائقية غير ملء: <لأ href = "http://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed. فب "يختلط =" noreferrer نوفولو "> http://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed.php

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

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

<الفرعية> ملاحظة: أنا جزء من فريق Neo4j

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