ฉันใช้ NoSQL DB มาระยะหนึ่งแล้วและนี่คือส่วนที่ฉันมีส่วนร่วม:
กรณีการใช้งานที่ดีสำหรับฐานข้อมูล NoSQL เป็นโปรแกรมสำหรับสถิติและ / หรือรายงานรุ่น , โดยเฉพาะเมื่อข้อมูลที่มีให้จากแหล่งที่มาของบุคคลที่สาม
ในสถานการณ์เช่นนั้นฐานข้อมูล NoSQL สามารถเป็นตัวเลือกที่ดี
ลองพิจารณาตัวอย่างเช่นMongoDB :
เมื่อคุณมีข้อมูลของคุณใน JSON (อาจมาจาก API ของบุคคลที่สามหรือส่งออกจากแอปพลิเคชัน sql) ในMongoDBนั้นค่อนข้างแปลกที่จะนำเข้าและอัปเดตข้อมูล JSON ในฐานข้อมูล ตัวอย่างเช่นการใช้mongoimport
ยูทิลิตีบรรทัดคำสั่ง
ณ จุดนี้ง่ายมากในการสร้างเคียวรีแบบไดนามิกด้วยการกรองและการจัดกลุ่มที่เหมาะสมกับแอปพลิเคชันประเภทนี้
ตัวอย่างเช่นการใช้Aggregation Framework :
$pipeline = [];
//filter by date
$pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ] ] ];
//if we want to filter by a specific field, we add the filter to the pipeline array
if( $filters->isFilterByField() )
$pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];
//group the results by date and get the count
$pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];
return $collection->aggretate( $pipeline );
ฉันต้องการชี้ให้เห็นถึงความง่ายที่เราสามารถเพิ่ม / ลบตัวกรองโดยใช้โครงสร้างข้อมูล php และหลีกเลี่ยงการต่อสตริงที่น่าเบื่อเพื่อสร้างแบบสอบถามของเรา ด้วยวิธีการนี้การเพิ่ม / ลบตัวกรอง dinamycally เป็นเรื่องง่ายเหมือนการเพิ่ม / ลบองค์ประกอบจากอาร์เรย์
ประโยชน์ที่ยอดเยี่ยมอีกอย่างมาจากความจริงที่ว่าวิธีการแก้ปัญหานี้น่าจะเร็วกว่าการใช้ฐานข้อมูลเชิงสัมพันธ์ซึ่งเราต้องทำการเชื่อมต่อกับตารางต่าง ๆ เพื่อรับข้อมูลทั้งหมดที่เราต้องการ
นอกจากนี้กรณีใช้งานนี้เหมาะสมที่สุดเพราะหลีกเลี่ยงข้อ จำกัด หลักทั้งหมดของฐานข้อมูล NoSQL:
การขาดธุรกรรม:แอปพลิเคชันไม่ทำการเขียน แต่อ่านเท่านั้นดังนั้นเราจึงไม่จำเป็นต้องทำธุรกรรมเลย
ขาดความร่วมระหว่างตาราง:เราไม่จำเป็นต้องเข้าร่วมในขณะที่เราสามารถใช้ความซ้ำซ้อนในการจัดเก็บของเราข้อมูล denormalizedในคอลเลกชัน เมื่อเราอ่านข้อมูลเท่านั้นเราไม่จำเป็นต้องกังวลเกี่ยวกับการซิงโครไนซ์ข้อมูลที่ผิดปกติในการอัพเดท
วิธีนี้เราสามารถมุ่งเน้นไปที่การจัดเก็บข้อมูลด้วยความซ้ำซ้อนในลักษณะที่เหมาะสมกับคำค้นหาของเราซึ่งจะเน้นไปที่คอลเลกชันเดียว
ฉันเพิ่งจะเขียนสิ่งนี้เพราะถ้าฉันได้อ่านบางอย่างที่ผ่านมามันจะช่วยให้ฉันมีเวลาในการทำวิจัย
หวังว่ามันจะเป็นประโยชน์กับใครบางคน