ما هي خدمات قاعدة بيانات AWS المصممة لتخزين سجلات التسجيل مثل log4j أو log4perl؟

dba.stackexchange https://dba.stackexchange.com/questions/118909

سؤال

لقد كنت أستخدم نظام الملفات لسجلات log4j وlog4perl وأريد البدء في استخدام قاعدة بيانات لتخزين المعلومات، خاصة سجلات البحث المنظمة بواسطة معرف المنتج.نحن نستخدم MySQL RDS في معظم قواعد البيانات لدينا، لذا كان رد فعلي الأولي هو الاستمرار في استخدام ذلك (أو تجربة Aurora RDS)، لكن RDS يتطلب InnoDB للقطات وكنت أفضل MyISAM للسرعة.

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

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

هل تم تصميم SimpleDB أو DynamoDB لتسجيل السجلات أكثر من MySQL أو Aurora؟

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

المحلول

نظرًا لأنك تتطلع إلى تخزين 135.000.000 * 30 * 10 سجلات والاستعلام عنها والتي من المحتمل ألا تستفيد من ميزات RDBMS التقليدية، أعتقد أن Hadoop سيكون هو الحل الأمثل.

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

يمنحك الرابط التالي، على الرغم من تركيزه على Azure، ملفًا تعليمي جيد كيفية الاستعلام عن سجلات log4j باستخدام Hive.يبدو أن أمازون EMR لديه توثيق عظيم.

النقاط الرئيسية لموقفك:قم بإنشاء بنية جدول فوق ملفاتك:

    CREATE EXTERNAL TABLE log4jLogs
    (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ';'
    STORED AS TEXTFILE LOCATION 'yourdrive:///logs/';

باستخدام الجدول المحدد، يمكنك بعد ذلك الاستعلام بشكل مشابه لـ SQL:

    SELECT t4 AS sev, COUNT(*) AS ErrorCount
    FROM log4jLogs
    WHERE t4 = '[ERROR]'
    AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;

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

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