Latest web development tutorials
×

MongoDB หลักสูตร

MongoDB หลักสูตร NoSQL แนะนำโดยย่อ MongoDB แนะนำโดยย่อ Window ติดตั้ง MongoDB Linux ติดตั้ง MongoDB MongoDB การแปลความหมายของแนวคิด MongoDB สัมพันธ์ MongoDB การสร้างฐานข้อมูล MongoDB ลบฐานข้อมูล MongoDB แทรกเอกสาร MongoDB การปรับปรุงเอกสาร MongoDB การลบเอกสาร MongoDB เอกสารแบบสอบถาม MongoDB ผู้ประกอบการที่มีเงื่อนไข MongoDB $type ผู้ประกอบการ MongoDB Limit & Skip MongoDB ลำดับ MongoDB ดัชนี MongoDB การรวมตัว MongoDB สำเนา MongoDB ชิ้น MongoDB สำรองและกู้คืน MongoDB หน้าจอ MongoDB Java MongoDB PHP กระจาย MongoDB PHP MongoDB PHP7

MongoDB การสอนที่ทันสมัย

MongoDB ความสัมพันธ์ MongoDB อ้างอิงฐานข้อมูล MongoDB ครอบคลุมแบบสอบถามดัชนี MongoDB การวิเคราะห์แบบสอบถาม MongoDB การดำเนินงานของอะตอม MongoDB การจัดทำดัชนีขั้นสูง MongoDB ข้อ จำกัด ของดัชนี MongoDB ObjectId MongoDB Map Reduce MongoDB ค้นหาข้อความเต็ม MongoDB นิพจน์ปกติ MongoDB เครื่องมือการจัดการ MongoDB GridFS MongoDB ชุดถาวร MongoDB การเจริญเติบโตอัตโนมัติ

MongoDB แผนที่ลด

แผนที่ลดเป็นแบบจำลองคอมพิวเตอร์เพียงแค่หมายความว่าเป็นกลุ่มของการทำงาน (ข้อมูล) การสลายตัว (MAP) เพื่อดำเนินการแล้วรวมผลเป็นผลสุดท้าย (ลด)

MongoDB มีแผนที่ลดมีความยืดหยุ่นมากสำหรับการวิเคราะห์ข้อมูลขนาดใหญ่นอกจากนี้ยังมีการปฏิบัติค่อนข้าง


คำสั่ง MapReduce

ต่อไปนี้เป็นรูปแบบพื้นฐานของ MapReduce:

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

ฟังก์ชั่นการใช้ MapReduce เพื่อให้บรรลุทั้งสองฟังก์ชั่นแผนที่และลดฟังก์ชั่น, แผนที่เรียกฟังก์ชันปล่อย (คีย์ค่า) สำรวจเก็บรวบรวมในบันทึกทั้งหมดและค่าคีย์ถูกส่งไปยังฟังก์ชั่นลดสำหรับการประมวลผล

ฟังก์ชั่นแผนที่จะต้องเรียกปล่อย (คีย์ค่า) คืนคู่

พารามิเตอร์คำอธิบาย:

  • แผนที่: ฟังก์ชั่นการทำแผนที่ (สร้างคีย์ลำดับลดค่าฟังก์ชัน)
  • ลดฟังก์ชันทางสถิติงานคือการลดการทำงานที่สำคัญค่าเป็นค่าคีย์ที่เป็นค่าอาร์เรย์เป็นค่าค่าเดียว.
  • ออกผลทางสถิติที่เก็บไว้ชุด (ไม่ได้ระบุการใช้งานของคอลเลกชันชั่วคราวลบโดยอัตโนมัติหลังจากที่ลูกค้าจะถอด)
  • สภาพกรองแบบสอบถามเท่านั้นที่จะเป็นไปตามเงื่อนไขของเอกสารที่จะถูกเรียกว่าฟังก์ชั่นแผนที่(Query.limit เรียงลำดับสามารถผสม)
  • จัดเรียงและวงเงินผูกพันเรียงลำดับพารามิเตอร์ (ยังเป็นอดีตเอกสารส่งไปยังฟังก์ชั่นแผนที่เพื่อเรียงลำดับ) คุณสามารถเพิ่มประสิทธิภาพกลไกการจัดกลุ่ม
  • จำกัด จำนวนของเอกสารที่ส่งไปยังขีด จำกัด บนของฟังก์ชั่นแผนที่ (ถ้ามีไม่มีขีด จำกัด ของการจัดเรียงเพียงอย่างเดียวในการใช้งานเล็ก ๆ น้อย ๆ )

ใช้ MapReduce

พิจารณาโครงสร้างของเอกสารดังต่อไปนี้ในการจัดเก็บบทความเอกสารของผู้ใช้และร้านค้าผู้ใช้ user_name ช่องสถานะบทความ:

>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 })

ตอนนี้เราจะใช้โพสต์ตั้งค่าฟังก์ชั่น MapReduce เพื่อเลือกบทความที่ตีพิมพ์ (สถานะ: "ใช้งาน") และแพ็คเก็ต user_name คำนวณได้สำหรับผู้ใช้แต่ละกระทู้:

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

ดังกล่าวข้างต้น MapReduce เอาท์พุท:

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

ผลการศึกษาพบว่าทั้งหมดสี่ตรงกับเกณฑ์การค้นหา (สถานะ: "ใช้งาน") สร้างเอกสารสี่ที่สำคัญในฟังก์ชั่นแผนที่ในเอกสารแล้วใช้ฟังก์ชันเดียวกันเพื่อลดที่สำคัญแบ่งออกเป็นสองกลุ่ม

พารามิเตอร์ที่เฉพาะเจาะจง:

  • ผล: ผลการจัดเก็บชื่อคอลเลกชันนี้เป็นชุดชั่วคราวกลับปิดการเชื่อมต่ออัตโนมัติของ MapReduce ได้ถูกลบออก
  • timeMillis: การดำเนินการต้องใช้เวลาในมิลลิวินาที
  • การป้อนข้อมูล: จำนวนสภาพของเอกสารที่ถูกส่งไปยังฟังก์ชั่นแผนที่
  • ปล่อย: ครั้งในฟังก์ชั่นแผนที่ปล่อยถูกเรียกว่าเป็นจำนวนเงินรวมของการเก็บรวบรวมข้อมูลทั้งหมด
  • ouput: ผลการค้นหาจำนวนของเอกสารในการเก็บรวบรวม (นับเป็นประโยชน์มากสำหรับการแก้จุดบกพร่อง)
  • ตกลง: ความสำเร็จความสำเร็จ 1
  • ผิดพลาด: ถ้ามันล้มเหลวอาจจะมีเหตุผลที่จะล้มเหลว แต่จากประสบการณ์เหตุผลคือคลุมเครือไม่ได้มีประโยชน์มาก

ใช้ประกอบการค้นหาเพื่อดู MapReduce ผลการค้นหาของ:

>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 }

ในลักษณะที่คล้ายกัน MapReduce สามารถนำมาใช้ในการสร้างขนาดใหญ่แบบสอบถามรวมที่ซับซ้อน

ฟังก์ชั่นแผนที่และลดฟังก์ชั่นสามารถดำเนินการได้โดยใช้ JavaScript, MapReduce ทำให้การใช้งานมีความยืดหยุ่นมากและมีประสิทธิภาพ