سؤال

هل هناك متجر قيمة رئيسي يعطيني ما يلي:

  • اسمح لي ببساطة بإضافة العقد وإزالتها وستعمل Redstruble على البيانات تلقائيًا
  • اسمح لي بإزالة العقد وما زال لديّ عقد بيانات إضافيان لتوفير التكرار
  • اسمح لي بتخزين النص أو الصور حتى 1 جيجابايت في الحجم
  • يمكن تخزين بيانات الحجم الصغير حتى 100 تيرابايت من البيانات
  • سريع (لذلك سوف تسمح بإجراء الاستفسارات فوقها)
  • اجعل كل هذا شفافًا للعميل
  • يعمل على Ubuntu/FreeBSD أو Mac
  • مصدر مجاني أو مفتوح

أريد أساسًا شيئًا يمكنني استخدامه "أغنية واحدة" ، ولا داعي للقلق بشأن الحصول على memcached و DB والعديد من مكونات التخزين ، لذا نعم ، أريد قاعدة بيانات "Silver Bullet" يمكنك قولها.

شكرًا

زبير

الإجابات حتى الآن: mogilefs على رأس Backblaze - بقدر ما أستطيع أن أرى أن هذا مجرد نظام ملفات ، وبعد بعض الأبحاث يبدو أنه مناسب فقط لملفات الصور الكبيرة

طوكيو الطاغية - يحتاج Lightcloud. هذا لا يتمكن من المقياس التلقائي أثناء إضافة عقد جديدة. لقد نظرت إلى هذا ويبدو أنه سريع للغاية بالنسبة للاستعلامات التي تتناسب مع عقدة واحدة رغم ذلك

رياك - هذا واحد أبحث عنه بنفسي ، لكن ليس لدي أي نتائج بعد

Amazon S3 - هل يستخدم أي شخص هذا كطبقة استمرار وحيد في الإنتاج؟ من ما رأيته يبدو أنه يستخدم لتخزين الصور لأن الاستعلامات المعقدة مكلفة للغاية

اقترح shaman كاساندرا - بالتأكيد واحد أبحث عنه

حتى الآن يبدو أنه لا توجد قاعدة بيانات أو متجر قيمة رئيسي يفي بالمعايير التي ذكرتها ، ولا حتى بعد تقديم مكافأة قدرها 100 نقطة ، تم الإجابة على السؤال!

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

المحلول

أنت تسأل الكثير من البرامج المفتوحة المصدر.

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

"سريع (لذلك سوف تسمح بإجراء الاستفسارات فوقها)"

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

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

هذا يحدك إلى 50 بحثًا عن القيمة الرئيسية في الثانية لكل خادم. بينما عندما يتم تخزين أزواج القيمة الرئيسية في ذاكرة الوصول العشوائي ، ليس من غير المعتاد الحصول على 100 ألف عملية في الثانية الواحدة لكل خادم على أجهزة السلع (على سبيل المثال. redis).

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

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

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

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

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

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

سريع (لذلك سوف تسمح بإجراء الاستفسارات فوقها)

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

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

بالنسبة لهذه الأنواع من الأنظمة ، إذا كان لديك ذاكرة الوصول العشوائي الإضافية أو مساحة التخزين ، فإن أفضل استخدام لها هو أن يكون حوسبة وتخزينها لنتيجة الفوتات الفرعية المشتركة لأسباب في الأداء ، بدلاً من إضافة المزيد من التكرار إلى متجر القيمة الرئيسية. نتائج ما قبل الحوسبة والترتيب من قبل المفاتيح التي ستعمل عليها لتحويل N^2 إلى البحث عن سجل (N). أي استعلام أو مساع فرعي يرقى أسوأ من N*log (n) هو شيء يجب أن يتم تنفيذ نتائجه وتخزينه مؤقتًا في متجر القيمة الرئيسية.

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

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

حتى الآن يبدو أنه لا توجد قاعدة بيانات أو متجر قيمة رئيسي يفي بالمعايير التي ذكرتها ، ولا حتى بعد تقديم مكافأة قدرها 100 نقطة ، تم الإجابة على السؤال!

أنت تطلب معجزة. انتظر 20 عامًا حتى يكون لدينا قواعد بيانات معجزة مفتوحة المصدر أو يجب أن تكون على استعداد لدفع المال مقابل حل مخصص لاحتياجات طلبك.

نصائح أخرى

Amazon S3 هو حل تخزين ، وليس قاعدة بيانات.

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

هناك حل آخر ، يبدو أنه بالضبط ما تبحث عنه: مشروع Apache Cassandra: http://incubator.apache.org/cassandra/

في الوقت الحالي ، يتحول Twitter إلى Cassandra من مجموعة Memcached+MySQL

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

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

يمكنني أن أقترح عليك حلين محتملين:

1) شراء خدمة Amazon (Amazon S3). مقابل 100 تيرابايت ، سيكلفك 14 512 دولارًا شهريًا.
2) حل أرخص بكثير:

بناء اثنين من قرون تخزين backblaze مخصصة (حلقة الوصل) وتشغيل mogilefs فوقه.

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

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

من ما أراه في سؤالك مشروع فولدمورت يبدو أن الأقرب. ألقوا نظرة على صفحة التصميم.

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

قد ترغب في إلقاء نظرة على mongodb.

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

قد ترغب في إلقاء نظرة على أنظمة الملفات الموزعة مثل موسيف أو غلوستر والحفاظ على بياناتك كملفات. كلا النظامين متحمسين للأخطاء وتوزيعه (يمكنك وضع العقد كما تريد) ، وكلاهما شفاف للعملاء (مبني على أعلى الفتيل) - أنت تستخدم OPS نظام الملفات البسيط. هذا يغطي الميزات التالية: 1) ، 2) ، 3) ، 4) ، 6) ، 7) ، 8). نحن نستخدم MOOSEFs لتخزين الأفلام الرقمية مع شيء AROUNG 1،5 PB من التخزين وتحميل/تنزيل هو أسرع كما يسمح إعداد الشبكة (وبالتالي فإن الأداء يعتمد على الإدخال/الإخراج ، وليس البروتوكول أو التنفيذ المعتمد). لن يكون لديك استعلامات (الميزة 5) في قائمتك) ، ولكن يمكنك إقران نظام الملفات هذا بشيء مثل mongodb أو حتى بعض محرك البحث مثل Lucene (يحتوي على فهارس مجمعة) للاستعلام عن البيانات المخزنة في نظام الملفات.

زبير ،

أنا أعمل على متجر قيمة رئيسي حتى الآن أسرع من أي شيء آخر.

لا يستخدم (بعد) النسخ المتماثل ، وفقدان المتطلبات الأولى ، لكن هذا السؤال ألهمني - شكرًا على ذلك!

لا: اسمح لي ببساطة بإضافة العقد وإزالتها وستعمل RedStruble على البيانات تلقائيًا
لا: اسمح لي بإزالة العقد ولا يزال لديّ عقدان إضافيان لتوفير التكرار
حسنًا: اسمح لي بتخزين النص أو صور ما يصل إلى 1 جيجابايت في الحجم (نعم: غير محدود)
حسنًا: يمكن تخزين بيانات الحجم الصغير حتى 100 تيرابايت من البيانات (نعم: غير محدود)
حسنًا: سريعًا (لذلك سيسمح بإجراء الاستفسارات فوقها) (نعم: أسرع من صفيف TC في خزانة طوكيو)
حسنًا: اجعل كل هذا شفافًا للعميل (نعم: مدمجة لخادم الويب)
حسنًا: يعمل على Ubuntu/FreeBSD أو Mac (نعم: لينكس)
طيب: مجاني أو مفتوح المصدر (نعم: مجاني)

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

Marklogic يسير في هذا الاتجاه. ليس حرا على الإطلاق ، على الرغم من ...

بالإضافة إلى ما ذكره الآخرون - يمكنك إلقاء نظرة على OrientDB - http://code.google.com/p/orient/ وثيقة ومتجر K/V تبدو واعدة للغاية.

الدفع bigcouch. إنه CouchDB ، ولكن تم تحسينه للمجموعات (وجميع مجموعات مشاكل البيانات الضخمة مناسبة). BigCouch يحصل اندمج في مشروع CouchDB ونحن نتحدث من قبل الناس في Cloudant, ، العديد منهم من الالتزامات الأساسية لـ Couchdb.

المتهدمة من متطلباتك:

اسمح لي ببساطة بإضافة العقد وإزالتها وستعمل Redstruble على البيانات تلقائيًا

اسمح لي بإزالة العقد وما زال لديّ عقد بيانات إضافيان لتوفير التكرار

نعم. يستخدم BigCouch مفهوم Dynamo للكوروم لتعيين عدد العقد التي تحتفظ بها عدد نسخ بياناتك.

اسمح لي بتخزين النص أو الصور حتى 1 جيجابايت في الحجم

نعم. تمامًا مثل CouchDB ، يمكنك دفق النقط (مثل الملفات) من الحجم التعسفي إلى قاعدة البيانات.

يمكن تخزين بيانات الحجم الصغير حتى 100 تيرابايت من البيانات

نعم. قام الفريق الذي بنى BigCouch بذلك لأنهم كانوا يواجهون نظامًا يولد بيتات من البيانات في الثانية.

سريع (لذلك سوف تسمح بإجراء الاستفسارات فوقها)

نعم. يتم إجراء الاستعلامات بواسطة MapReduce في o (سجل n) الوقت.

اجعل كل هذا شفافًا للعميل

يعمل على Ubuntu/FreeBSD أو Mac

مصدر مجاني أو مفتوح

نعم! مفتوح المصدر تحت ترخيص Apache 2.0. تعليمات التثبيت الافتراضية هي لنظام Debian ، مثل Ubuntu.

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