سؤال

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

البيانات / المشكلة تبدو وكأنها هذه:

  1. يحتوي كل جدول 2-5 أعمدة أساسية وعمود قيمة واحدة.
  2. كل صف لديه مزيج فريد من المفاتيح.
  3. أحتاج إلى أن أكون قادرا على الاستعلام عن طريق أي مجموعة فرعية من المفاتيح (أي KEY1 = 'BLAH' و KEY4 = "Bloo").
  4. سيكون من الجيد إدراج صفوف جديدة بسرعة (تحديث القيمة إذا كان الصف موجود بالفعل) ولكنني سأكون راضيا إذا أمكنني القيام بذلك ببطء.

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

يحدث أن أحصل على bevy من أجهزة الكمبيوتر السريعة تحت تصرفي (~ 40)، مما يجعل البطء لا يصدق من قاعدة بيانات الجهاز الوحيد الأكثر مزعجا. أريد الاستفادة من كل هذه القوة لجعل قاعدة البيانات هذه سريعة. لقد فكرت في بناء طاولة تجزئة موزعة، لكن من شأنها أن تجعل من الصعب الاستعلام عن مجموعة فرعية فقط من المفاتيح. يبدو أن شيئا ما مثل bigtable / HBase سيكون حل لائق ولكنني لم أقنع بعد أن حل أبسط غير موجود.

شكرا جزيلا، سيكون هناك تقدير كبير أي مساعدة!

لا يوجد حل صحيح

نصائح أخرى

أقترح عليك الاستماع إلى هذا البودكاست لبعض المعلومات الممتازة عن قواعد البيانات الموزعة.EPISODE-109-EBAY- العمارة - مبادئ - مع راندي شوب

للإشارة إلى ما هو واضح: ربما تكون محتاج القرص.

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

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

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