MongoDB แนวคิดการวิเคราะห์
ไม่ว่าเราจะเรียนรู้สิ่งที่ควรเรียนรู้ฐานข้อมูลหนึ่งในแนวคิดพื้นฐานในแนวคิดพื้นฐาน MongoDB คือว่าเอกสารคอลเลกชันฐานข้อมูลที่นี่เราแนะนำหนึ่งโดยหนึ่ง
ตารางต่อไปนี้จะช่วยให้คุณง่ายต่อการเข้าใจบางส่วนของแนวคิด Mongo นี้:
SQL คำศัพท์ / แนวคิด | ระยะ MongoDB / แนวคิด | คำอธิบาย / รายละเอียด |
---|---|---|
ฐานข้อมูล | ฐานข้อมูล | ฐานข้อมูล |
ตาราง | ชุด | ตารางฐานข้อมูล / คอลเลกชัน |
แถว | เอกสาร | สายการบันทึกข้อมูล / เอกสาร |
คอลัมน์ | สนาม | ข้อมูลของฟิลด์โดเมน / |
ดัชนี | ดัชนี | ดัชนี |
ตารางร่วม | ตารางที่ร่วม MongoDB ไม่สนับสนุน | |
คีย์หลัก | คีย์หลัก | คีย์หลัก MongoDB ฟิลด์ _id โดยอัตโนมัติเป็นคีย์หลัก |
โดยทำตามตัวอย่างรูปที่เราสามารถเข้าใจง่ายมากขึ้นของ Mongo บางแนวคิด:
ฐานข้อมูล
MongoDB สามารถสร้างฐานข้อมูลหลาย ๆ
ฐานข้อมูล MongoDB เริ่มต้นคือ "DB" ฐานข้อมูลจะถูกเก็บไว้ในไดเรกทอรีข้อมูล
เช่นเดียวของ MongoDB สามารถรองรับฐานข้อมูลอิสระหลายแต่ละคนมีชุดของตัวเองของสิทธิ์และฐานข้อมูลที่แตกต่างกันจะถูกวางไว้ยังอยู่ในไฟล์ที่แตกต่างกัน
"แสดงดีบีเอส" เพื่อแสดงรายการข้อมูลทั้งหมด
$ ./mongo MongoDB shell version: 3.0.6 connecting to: test > show dbs local 0.078GB test 0.078GB >
การดำเนินการตามคำสั่ง "DB" เพื่อแสดงวัตถุฐานข้อมูลปัจจุบันหรือการจัดเก็บ
$ ./mongo MongoDB shell version: 3.0.6 connecting to: test > db test >
Run "ใช้คำสั่ง" คุณสามารถเชื่อมต่อกับฐานข้อมูลเฉพาะ
> use local switched to db local > db local >
ตัวอย่างของคำสั่งดังกล่าว "ท้องถิ่น" คือการที่คุณต้องการที่จะเชื่อมโยงฐานข้อมูล
ในบทต่อไปเราจะอธิบายในรายละเอียดการใช้งานของ MongoDB ในคำสั่ง
ฐานข้อมูลยังสามารถระบุชื่อ ชื่อฐานข้อมูลสามารถมีเงื่อนไขใด ๆ ต่อไปนี้ UTF-8 สตริง
- มันไม่สามารถเป็นสตริงว่าง ( "")
- ไม่ประกอบด้วย '' (เว้นวรรค). $ / \ และ \ 0 (null Yu Fu)
- มันควรจะเป็นพิมพ์เล็กทั้งหมด
- ถึง 64 ไบต์
ชื่อฐานข้อมูลบางส่วนจะถูกสงวนไว้โดยตรงและสามารถเข้าถึงฐานข้อมูลเหล่านี้มีบทบาทพิเศษ
- ผู้ดูแลระบบ: จากมุมมองของผู้มีอำนาจซึ่งเป็นราก "" ฐานข้อมูล ถ้าคุณเพิ่มผู้ใช้ไปยังฐานข้อมูลผู้ใช้โดยอัตโนมัติสืบทอดทุกฐานข้อมูลสิทธิ์ บางคำสั่งด้านเซิร์ฟเวอร์เฉพาะสามารถเรียกใช้ข้อมูลจากฐานข้อมูลเช่นรายการสินค้าทั้งหมดของฐานข้อมูลหรือเซิร์ฟเวอร์
- ท้องถิ่น: ข้อมูลนี้จะไม่ถูกคัดลอกสามารถนำมาใช้ในการจัดเก็บคอลเลกชันใด ๆ จะถูก จำกัด ไปยังเซิร์ฟเวอร์ภายในครั้งเดียว
- การตั้งค่า: เมื่อ Mongo สำหรับการกระจายตัวถูกตั้งไว้ที่ฐานข้อมูลการกำหนดค่าใช้ภายในสำหรับการจัดเก็บข้อมูลชิ้น
ไฟล์
เอกสารคีย์ (Key-ค่า) ของ (เช่น BSON) เอกสาร MongoDB ไม่จำเป็นต้องให้ข้อมูลเดียวกันสาขาเดียวกันและไม่ต้องใช้ชนิดข้อมูลเดียวกันซึ่งเป็นฐานข้อมูลเชิงสัมพันธ์แตกต่างกันมาก MongoDB ยังมีคุณสมบัติที่โดดเด่นมาก
ตัวอย่างเอกสารที่เรียบง่ายมีดังนี้
{"site":"www.w3big.com", "name":"本教程"}
ตารางต่อไปนี้แสดง RDBMS และ MongoDB แง่ที่สอดคล้องกัน:
RDBMS | MongoDB |
---|---|
ฐานข้อมูล | ฐานข้อมูล |
ตาราง | ตั้งค่า |
แถว | ไฟล์ |
แถว | สนาม |
ตารางที่ร่วม | เอกสารที่ฝังตัว |
คีย์หลัก | คีย์หลัก (MongoDB ให้คีย์สำหรับ _id) ที่ |
บริการฐานข้อมูลและลูกค้า | |
mysqld / ออราเคิล | mongod |
MySQL / sqlplus | Mongo |
โปรดทราบว่า:
- ที่สำคัญเอกสาร / คู่ค่าจะได้รับคำสั่ง
- เอกสารอาจจะไม่เพียง แต่ค่าของสตริงภายในราคาคู่ยังสามารถเป็นหลายประเภทข้อมูลอื่น ๆ (หรือแม้กระทั่งเอกสารที่ฝังตัวอยู่ทั้งหมด)
- MongoDB จะแยกแยะประเภทและมีความละเอียดอ่อน
- เอกสาร MongoDB ไม่สามารถมีคีย์ที่ซ้ำกัน
- เอกสารที่สำคัญคือสตริง โดยมีข้อยกเว้นที่สำคัญสามารถใช้อักขระ UTF-8 ใด ๆ
เอกสารสำคัญตั้งชื่อการประชุม:
- ที่สำคัญไม่สามารถมี \ 0 (อักขระ null) ตัวละครตัวนี้จะใช้ในการบ่งบอกถึงการสิ้นสุดของพันธบัตร
- . และ $ มีความหมายพิเศษเพียงนำมาใช้ภายใต้สถานการณ์บางอย่าง
- เพื่อขีด "_" ที่จุดเริ่มต้นของคีย์ที่มีลิขสิทธิ์ (ไม่จำเป็นต้องใช้อย่างเคร่งครัด)
ตั้งค่า
MongoDB เป็นกลุ่มเอกสารคอลเลกชันที่คล้ายกับ RDBMS (ที่ระบบการจัดการฐานข้อมูลเชิงสัมพันธ์: สัมพันธ์ระบบการจัดการฐานข้อมูล) ในรูปแบบ
คอลเลกชันที่มีอยู่ในฐานข้อมูล, คอลเลกชันของโครงสร้างคงไม่ซึ่งหมายความว่าคุณสามารถแทรกเข้าไปในการเก็บรวบรวมข้อมูลในรูปแบบที่แตกต่างกันและประเภท แต่เรามักจะใส่ชุดของข้อมูลที่จะมีความสัมพันธ์กันบางอย่าง
ตัวอย่างเช่นเราสามารถเอกสารโครงสร้างข้อมูลเหล่านี้แตกต่างกันในคอลเลกชันนี้:
{"site":"www.baidu.com"} {"site":"www.google.com","name":"Google"} {"site":"www.w3big.com","name":"本教程","num":5}
เมื่อเอกสารครั้งแรกในคอลเลกชันจะถูกสร้างขึ้น
ชื่อคอลเลกชันที่ถูกต้อง
- ชื่อคอลเลกชันไม่สามารถเป็นสตริงที่ว่างเปล่า "."
- ตั้งชื่อไม่สามารถมี \ 0 ตัวอักษร (อักขระ null) ตัวละครตัวนี้แสดงให้เห็นจุดสิ้นสุดของการรวบรวมรายชื่อให้
- ตั้งชื่อไม่สามารถเป็น "ระบบ." ที่เริ่มต้นซึ่งเป็นที่สงวนไว้สำหรับคำนำหน้าชุดระบบ
- ชื่อคอลเลกชันที่ผู้ใช้สร้างไม่สามารถมีตัวอักษรที่สงวนไว้ ไดรเวอร์บางจะสนับสนุนคอลเลกชันที่มีชื่อนี้เป็นเพราะบางคอลเลกชันที่ระบบสร้างขึ้นมีตัวอักษร ถ้าคุณต้องการที่จะเข้าถึงคอลเลกชันของระบบดังกล่าวถูกสร้างขึ้นมิฉะนั้นจะไม่ปรากฏในชื่อ $ ภายใน
ตัวอย่างต่อไปนี้:
db.col.findOne()
คอลเลกชันที่ปกคลุม
คอลเลกชันที่ปกคลุมได้รับการแก้ไขขนาดคอลเลกชัน
มันมีลักษณะที่มีประสิทธิภาพสูงและคิวหมดอายุ (หมดอายุตามคำสั่งของแทรก). ค่อนข้างคล้ายกันและแนวคิด "RRD"
คอลเลกชันที่ปกคลุมถูกแทรกโดยอัตโนมัติเพื่อรักษาวัตถุที่มีประสิทธิภาพสูง มันเหมาะสำหรับฟังก์ชั่นและคอลเลกชันมาตรฐานการเข้าสู่ระบบที่คล้ายกันของที่แตกต่างกันคุณจะต้องชัดเจนในการสร้างคอลเลกชันที่ปกคลุมด้วยคอลเลกชันที่มีขนาดที่ระบุในไบต์ คอลเลกชันของค่าพื้นที่จัดเก็บข้อมูลที่ได้รับมอบหมายล่วงหน้า
มันเป็นข้อสังเกตว่าขนาดการจัดเก็บข้อมูลที่ระบุของฐานข้อมูลที่มีข้อมูลส่วนหัวdb.createCollection("mycoll", {capped:true, size:100000})
- ในคอลเลกชันที่ปกคลุมคุณสามารถเพิ่มวัตถุใหม่
- สามารถปรับปรุงได้ แต่วัตถุที่จะไม่เพิ่มพื้นที่จัดเก็บ ถ้าคุณเพิ่มการปรับปรุงจะล้มเหลว
- ฐานข้อมูลไม่อนุญาตให้มีการลบ ใช้ลดลง () วิธีการลบทั้งหมดแถวคอลเลกชัน
- หมายเหตุ: หลังจากที่คุณลบคุณอย่างชัดเจนต้องสร้างคอลเลกชัน
- ในเครื่อง 32bit, คอลเลกชันที่ปกคลุมเป็น 1e9 การจัดเก็บข้อมูลที่ใหญ่ที่สุด (1x10 9) ไบต์
เมตาดาต้า
ข้อมูลในฐานข้อมูลจะถูกเก็บไว้ในคอลเลกชัน พวกเขาใช้ระบบ namespace นี้:
dbname.system.*
ในฐานข้อมูล MongoDB namespace <dbname> .system * ที่มีความหลากหลายของข้อมูลระบบคอลเลกชันพิเศษ (เก็บ) ดังต่อไปนี้:
namespace คอลเลกชัน | ลักษณะ |
---|---|
dbname.system.namespaces | รายชื่อ namespaces ทั้งหมด |
dbname.system.indexes | รายชื่อดัชนีทั้งหมด |
dbname.system.profile | สรุปมันมีฐานข้อมูล (โปรไฟล์) ข้อมูล |
dbname.system.users | รายชื่อผู้ใช้ทุกคนสามารถเข้าถึงฐานข้อมูล |
dbname.local.sources | มันมีสำเนาของการสิ้นสุด (ทาส) ข้อมูลเซิร์ฟเวอร์และสถานะ |
การปรับเปลี่ยนวัตถุระบบในคอลเลกชันยังมีข้อ จำกัด ดังต่อไปนี้
ใน system.indexes {{}} แทรกข้อมูลคุณสามารถสร้างดัชนี แต่อย่างอื่นข้อมูลตารางจะไม่เปลี่ยนรูป (คำสั่งดัชนีลดลงพิเศษจะอัปเดตข้อมูลที่เกี่ยวข้องโดยอัตโนมัติ)
{{}} System.users แก้ไขได้ {{}} System.profile จะถูกลบออก
MongoDB ชนิดข้อมูล
ตารางต่อไปนี้ MongoDB หลายที่ใช้กันทั่วไปชนิดข้อมูล
ชนิดข้อมูล | ลักษณะ |
---|---|
เชือก | เชือก การจัดเก็บข้อมูลที่ใช้กันทั่วไปชนิดข้อมูล ใน MongoDB สตริงเข้ารหัส UTF-8 เป็นกฎหมาย |
จำนวนเต็ม | ค่าจำนวนเต็ม มันใช้ในการเก็บค่า ทั้งนี้ขึ้นอยู่กับเซิร์ฟเวอร์ที่คุณกำลังใช้ก็สามารถแบ่งออกเป็น 32 บิตหรือ 64 บิต |
บูลีน | ค่าบูลีน สำหรับการจัดเก็บค่าบูลีน (จริง / เท็จ) |
สอง | ความแม่นยำสองค่าจุดลอยตัว สำหรับการจัดเก็บค่าจุดลอยตัว |
คีย์ต่ำสุด / สูงสุด | ค่าต่ำสุดและ BSON ค่า (ไบนารี JSON) องค์ประกอบและค่าสูงสุดของอัตราส่วนญาติ |
อาร์เรย์ | สำหรับอาร์เรย์หรือรายการหรือการจัดเก็บค่าหลายค่าสำหรับคีย์ |
การประทับเวลา | การประทับเวลา ปรับเปลี่ยนหรือเพิ่มบันทึกเอกสารเวลาที่เฉพาะเจาะจง |
วัตถุ | สำหรับเอกสารที่ฝังตัว |
โมฆะ | มันจะสร้างค่าว่าง |
สัญญลักษณ์ | สัญญลักษณ์ ชนิดของข้อมูลนี้เป็นอย่างมากเท่ากับประเภทสตริง แต่ความแตกต่างก็คือว่ามันเป็นเรื่องปกติสำหรับการใช้สัญลักษณ์พิเศษภาษาพิมพ์ |
วันที่ | วันที่เวลา รูปแบบเวลายูนิกซ์ใช้ในการเก็บวันที่ปัจจุบันหรือเวลา คุณสามารถระบุวันที่ของคุณเองและเวลา: วันที่วัตถุถูกสร้างข้อมูลวันที่เข้ามา |
ID วัตถุ | ID วัตถุ รหัสที่ใช้ในการสร้างเอกสาร |
ข้อมูลไบนารี | ข้อมูลไบนารี สำหรับการจัดเก็บข้อมูลไบนารี |
รหัส | ประเภทแท็ก โค้ด JavaScript จะใช้ในการจัดเก็บเอกสาร |
แสดงออกปกติ | ประเภทการแสดงออกปกติ สำหรับการจัดเก็บการแสดงออกปกติ |