روبي على القضبان/Merb باعتباره الواجهة على المليارات من سجلات التطبيق

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

سؤال

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

HBase مع Hadoop

Couchdb

مشاكل مع HBase الحل كما أرى-روبي الدعم ليست قوية جدا ، Couchdb لم تصل إلى 1.0 نسخة حتى الآن.

هل لديك اقتراح ما من شأنه أن استخدام مثل هذه كمية كبيرة من البيانات ؟

البيانات سوف تتطلب بدلا من ذلك بسرعة الواردات في بعض الأحيان من 30-40Mb في آن واحد ، لكن الواردات سوف تأتي في قطع.لذلك ~95 ٪ من الوقت سوف تكون البيانات للقراءة فقط.

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

المحلول

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

والميزة الكبرى من استخدام RDBMS مع القضبان أو Merb ويمكنك الوصول إلى كل الدعم أداة ممتازة للوصول إلى هذه الأنواع من قواعد البيانات.

ونصيحتي هي في الواقع لمحة البيانات الخاصة بك في غضون هذه الأنظمة وأعتبر من هناك.

نصائح أخرى

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

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

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

كلمة تحذير عن HBase وغيرها من المشاريع من هذا النوع (لا أعرف أي شيء عن CouchDB -- أنا أعتقد انها ليست حقا db على الإطلاق, مجرد تخزين قيمة المفتاح):

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

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

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

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

إذا كانت مؤسستك لديها جيوب عميقة, ما تحقق من Vertica, AsterData و الإشراف على الموظفين لديك لتقدمه.

والواجهة الخلفية ستعتمد على البيانات وكيف سيتم الوصول إلى البيانات.

ولكن بالنسبة للORM، فما استقاموا لكم فاستقيموا على الأرجح استخدام DataMapper والكتابة محول DataObjects مخصصة للوصول الى كل ما اخترت الخلفية.

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

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

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

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