سؤال

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

لديّ خبرة واسعة مع MySQL ، لكن التطبيق الاجتماعي يقدم تعقيدًا لا يناسب MySQL أيضًا. أعلم أن Facebook و Twitter وما إلى ذلك انتقلوا نحو كاساندرا لكثير من بياناتهم ، لكنني لست متأكدًا من مدى مسافة الذهاب إليها.

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

هل سيتمكن أي شخص من تقديم المشورة لي في هذا؟ آمل ألا أكون عامة جدًا!

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

المحلول

على سبيل المثال ، هل يمكنك تخزين أشياء مثل بيانات المستخدم - اسم المستخدم وكلمات المرور والعناوين وما إلى ذلك في كاساندرا؟

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

لقد قرأت أيضًا الكثير أن شيئًا مثل Neo4J أفضل بكثير لتمثيل علاقات الأصدقاء التي تستخدمها التطبيقات الاجتماعية لأنها قاعدة بيانات رسم بياني.

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

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

نصائح أخرى

أود أن أقترح إجراء بعض الاختبارات مع MySQL ومع كاساندرا. عندما اضطررنا إلى الاختيار بين PostgreSQL و MongoDB في إحدى وظائفي ، قارنا وقت الاستعلام على ملايين السجلات في كليهما ووجدنا أنه مع حوالي 10 ملايين سجلات ستوفر لنا Postgres أوقات استجابة كافية.

كنا نعلم أننا لن نصل إلى هذا العدد من السجلات لمدة عامين على الأقل ، وكان لدينا خبرة مع Postgres (في حين لم يكن Mongodb ناضجًا جدًا في ذلك الوقت) ، لذلك ذهبنا مع Postgres.

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

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

الفيسبوك لم يفعل نقل إلى كاساندرا ، قاموا بإنشائها. :) على حد علمي ، لا تتطلب dbmses noSQL أو حتى ذكر (بفضل Mnemosyn على التصحيح ، يستخدم Facebook Oracle و Cassandra) جنبًا إلى جنب مع قاعدة بيانات علائقية. هذه هو أحد الأمثلة المعاكسة (تخزين معلومات المستخدم في DB NOSQL).

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

إخلاء المسئولية: لم يكن لدي (بعد؟) أي تجربة على قواعد بيانات NOSQL: ما أعرفه يأتي من القراءة حول هذا الموضوع.

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

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