الحد العلوي لعدد الصفوف في قواعد بيانات مفتوحة المصدر؟

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

سؤال

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

CREATE TABLE data (
    source1 CHAR(5),
    source2 CHAR(5),
    idx11   INT,
    idx12   INT,
    idx21   INT,
    idx22   INT,
    point1  FLOAT,
    point2  FLOAT
);

كم عدد النقاط مثل هذا يمكنني الحصول على أداء معقول؟ لدي حاليا 150 مليون نقطة بيانات، ربما لن يكون لدي أكثر من 300 مليون. افترض أنني أستخدم مربع مع 4 CPUs ثنائي النواة 2 جيجا هرتز Xeon و 8 جيجابايت من ذاكرة الوصول العشوائي.

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

المحلول

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

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

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

حظا سعيدا مع المشروع الخاص بك.

نصائح أخرى

postgresql. يجب أن تكون قادرا على استيعاب بياناتك بما يصل إلى 32 Terabytes لكل جدول، إلخ، إلخ، إلخ. إذا فهمت بشكل صحيح، فأنت تتحدث عن 5 جيجابايت حاليا، 10 جيجابايت كحد أقصى (حوالي 36 بايت / صف وما يصل إلى 300 مليون صف )، لذلك يجب أن تكون أي قاعدة بيانات تقريبا في الواقع قادرة على استيعابك بسهولة.

FYI: مقاييس Postgres أفضل من MySQL على طلبات متعددة المعالجات / المتداخلة، من مراجعة كنت أقرأ بضعة أشهر مرة أخرى (آسف، لا يوجد رابط).

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

Otoh، إذا تم تحميل البيانات مرة واحدة، فمن ثم مسحها ممسوحة ضوئيا من خلال مؤشر ترابط واحد، ربما MySQL في وضع "حمض غير مطلوب" سيكون أفضل مباراة.

لديك بعض التخطيط للقيام به في حالة استخدام Access Case (S) قبل أن تتمكن من تحديد المكدس "الأفضل".

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