سؤال

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

أعلم أن Amazon SimpleDB موجود، ولكني أريد حلاً لا يعتمد على النظام الأساسي (في حالة احتياجنا إلى الخروج من AWS على سبيل المثال).

لذا فإن سؤالي هو، ما هي إيجابيات وسلبيات هذين الخيارين لتخزين واسترجاع مجموعات البيانات.كيف يمكن مقارنة الأداء؟

  • قم بتخزين أجزاء البيانات كملفات على S3 واحصل عليها عند الحاجة
  • قم بتخزين قطع البيانات على مجموعة MySQL Server

هل سيكون هناك فرق كبير في الأداء؟

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

المحلول

هل تحتاج إلى توفير الوصول إلى مجموعات البيانات هذه مباشرةً لمستخدمي تطبيقك؟إذا لم يكن الأمر كذلك، فإن طلبات S3 وHTTP GET تعتبر مبالغة.مع الأخذ في الاعتبار أيضًا أن S3 هي خدمة آمنة، فإن الحمل لكل طلب GET (لـ 1 كيلو بايت فقط من البيانات) سيكون كبيرًا إلى حد كبير.

قد تكون مجموعة خوادم MySQL فكرة أفضل، ولكن لتشغيلها في EC2 تحتاج إلى استخدام Elastic Block Storage.وأخيرا، لا تستبعد SimpleDB.ربما يكون هذا هو الحل الأفضل لمشكلتك.صمم نظامك بعناية وستكون قادرًا على الانتقال بسهولة إلى أنظمة قواعد البيانات الأخرى (الموزعة أو العلائقية) في المستقبل.

نصائح أخرى

حاولت استخدام S3 كنوع من "قاعدة البيانات" باستخدام ملفات XML صغيرة للاحتفاظ بكائنات البيانات المنظمة الخاصة بي، والاعتماد على "مفاتيح" S3 للبحث عن هذه الكائنات.

كان الأداء غير مقبول، حتى من EC2 - زمن الوصول إلى S3 مرتفع جدًا.

سيكون تشغيل MySQL على جهاز EBS أسرع بكثير، حتى مع وجود العديد من السجلات.

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