Latest web development tutorials

MongoDB مابريديوس

خريطة لتخفيض هو نموذج الحوسبة، يعني ببساطة أن الجزء الأكبر من العمل (بيانات) التحلل (MAP) لأداء، ومن ثم دمج النتائج في النتيجة النهائية (الحد من).

يوفر MongoDB خريطة-تقليل مرنة للغاية لتحليل البيانات على نطاق واسع هو أيضا عملية جدا.


قيادة مابريديوس

ما يلي هو بناء الجملة الأساسية من مابريديوس:

>db.collection.mapReduce(
   function() {emit(key,value);},  //map 函数
   function(key,values) {return reduceFunction},   //reduce 函数
   {
      out: collection,
      query: document,
      sort: document,
      limit: number
   }
)

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

وظيفة خريطة يجب استدعاء تنبعث منها (الرئيسية، قيمة) إرجاع أزواج.

المعلمة الوصف:

  • وظيفة رسم الخرائط (إنشاء تسلسل الرئيسية عن الحد من المعلماتوظيفة): خريطة.
  • خفض الوظائف الإحصائية، والمهمة للحد من وظيفة القيم الأساسية إلى قيمة أساسية، وهذا هو، ومجموعة القيم إلى قيمة قيمة واحدة..
  • من النتائج الإحصائية مجموعة المخزنة (لا تحديد استخدام جمع مؤقت حذف تلقائيا بعد قطع الاتصال العميل).
  • حالة تصفيةالاستعلام، فقط لتلبية شروط وسوف يطلق خريطة وظيفة وثيقة.(Query.limit، نوع يمكن خلط)
  • نوع والحد ملزمة نوع نوع المعلمة (أيضا وثيقة سابقة أرسلت إلى وظيفة خريطة لفرز)، يمكنك تحسين آلية تجميع
  • الحد من عدد الوثائق المرسلة إلى الحد الأعلى من وظيفة خريطة (إذا كان هناك أي حد، نوع وحده من استخدام القليل)

استخدام مابريديوس

النظر في هيكل الوثيقة التالية لتخزين المواد والوثائق للمستخدم، ويخزن اسم_المستخدم المستخدم حقل حالة المادة:

>db.posts.insert({
   "post_text": "本教程,最全的技术文档。",
   "user_name": "mark",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "本教程,最全的技术文档。",
   "user_name": "mark",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "本教程,最全的技术文档。",
   "user_name": "mark",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "本教程,最全的技术文档。",
   "user_name": "mark",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "本教程,最全的技术文档。",
   "user_name": "mark",
   "status":"disabled"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "本教程,最全的技术文档。",
   "user_name": "w3big",
   "status":"disabled"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "本教程,最全的技术文档。",
   "user_name": "w3big",
   "status":"disabled"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "本教程,最全的技术文档。",
   "user_name": "w3big",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })

الآن سوف نستخدم المشاركات التي تحدد وظيفة مابريديوس لتحديد مقالة منشورة (الوضع: "نشط")، وحزمة اسم_المستخدم حساب لكل مستخدم المشاركات:

>db.posts.mapReduce( 
   function() { emit(this.user_name,1); }, 
   function(key, values) {return Array.sum(values)}, 
      {  
         query:{status:"active"},  
         out:"post_total" 
      }
)

فوق مابريديوس الناتج هو:

{
        "result" : "post_total",
        "timeMillis" : 23,
        "counts" : {
                "input" : 5,
                "emit" : 5,
                "reduce" : 1,
                "output" : 2
        },
        "ok" : 1
}

وأظهرت النتائج أن ما مجموعه أربعة تتطابق مع معايير الاستعلام (الوضع: "نشطة") وثائق ولدت أربعة المفتاح في وظيفة خريطة في الوثيقة، ومن ثم استخدام نفس الوظيفة للحد من مفتاح تقسيمها إلى مجموعتين.

معايير محددة:

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

باستخدام مشغل تجد لعرض نتائج الاستعلام مابريديوس من:

>db.posts.mapReduce( 
   function() { emit(this.user_name,1); }, 
   function(key, values) {return Array.sum(values)}, 
      {  
         query:{status:"active"},  
         out:"post_total" 
      }
).find()

وأظهرت نتائج الاستعلام أعلاه أدناه، هناك نوعان من المستخدمين توم وعلامة اثنين من المقالات المنشورة:

{ "_id" : "mark", "value" : 4 }
{ "_id" : "w3big", "value" : 1 }

بطريقة مماثلة، مابريديوس يمكن استخدامها لبناء كبيرة، الاستفسارات الإجمالية المعقدة.

خريطة وظيفة وخفض وظائف يمكن تنفيذها باستخدام جافا سكريبت، مابريديوس الاستفادة من مرونة جدا وقوية.