ฐานข้อมูล NoSQL: ทางเลือกแทนฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม
เผยแพร่แล้ว: 2023-01-13ฐานข้อมูล NoSQL กำลังเป็นที่นิยมมากขึ้นในฐานะทางเลือกแทนฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม ฐานข้อมูล NoSQL ไม่ต้องการสคีมาตายตัวและปรับขนาดได้ง่าย คิวคือประเภทของที่เก็บข้อมูล NoSQL คิวเป็นโครงสร้างข้อมูลที่จัดเก็บข้อมูลในลักษณะเข้าก่อนออกก่อน (FIFO) คิวมักจะใช้เพื่อเก็บข้อมูลที่ต้องดำเนินการตามลำดับ เช่น รายการงานที่ต้องทำให้เสร็จ คิวเป็นประเภทหนึ่งของที่เก็บข้อมูล NoSQL เนื่องจากไม่ต้องการสคีมาที่ตายตัว สามารถปรับขนาดคิวได้อย่างง่ายดายเมื่อจำนวนงานเพิ่มขึ้น
ถ้าฉันจะใช้ MongoDB หรือ RavenDB เป็น คิวข้อความ ฉันจะเลือกอย่างใด วัตถุข้อความสามารถส่งไปยังบริการบนเว็บผ่านทางไคลเอ็นต์และเรียกค้นโดยบริการบนเว็บ บริการที่กำลังดำเนินการสามารถเลือกประเภทข้อความตามเกณฑ์ที่อาจเกิดขึ้น ฉันสามารถสร้างดัชนีตามสถานการณ์เพื่อเร่งความเร็ว หากคุณกำลังสร้างคิวเพียงอย่างเดียว คุณควรพิจารณา NoSQL เพื่ออะไรมากกว่านั้น มีแนวโน้มว่าจะมีผลกระทบต่อประสิทธิภาพ ความน่าเชื่อถือ และประสิทธิภาพมากขึ้น หากคุณตัดสินใจว่าคุณต้องการนำไปใช้งานแบบใด
ฐานข้อมูล NoSQL (หรือที่เรียกว่า SQL) จัดเก็บข้อมูลที่แตกต่างจากฐานข้อมูลเชิงสัมพันธ์นอกเหนือจากที่ไม่ใช่ตาราง ฐานข้อมูล NoSQL อาจมีหลายประเภทตามรูปแบบข้อมูล ประเภทเอกสาร ประเภทคีย์-ค่า ประเภทคอลัมน์กว้าง และกราฟ เป็นที่นิยมใช้มากที่สุด
Datastore เป็นฐานข้อมูล NoSQL ที่ปรับขนาดได้สูงซึ่งรองรับแอปพลิเคชันที่หลากหลาย ด้วยเหตุนี้ Datastore จะจัดการชาร์ดดิ้งและการจำลองแบบโดยอัตโนมัติ ช่วยให้คุณใช้ ฐานข้อมูลที่มีความพร้อมใช้งานสูงและทนทาน ซึ่งปรับขนาดโดยอัตโนมัติเพื่อจัดการกับโหลดของแอปพลิเคชันของคุณ
Nosql Datastore คืออะไร?
ที่เก็บข้อมูล NoSQL มีหลายประเภท แต่ละประเภทมีจุดแข็งและจุดอ่อนของตัวเอง ที่เก็บข้อมูล NoSQL ที่ได้รับความนิยมสูงสุด ได้แก่ MongoDB, Cassandra และ HBase
ฐานข้อมูล NoSQL แบบเอกสารจะจัดเก็บข้อมูลได้อย่างมีประสิทธิภาพมากกว่าฐานข้อมูลเชิงสัมพันธ์ มีจุดประสงค์เพื่อให้ปรับเปลี่ยนได้ ปรับขนาดได้ และสามารถตอบสนองความต้องการทางธุรกิจสำหรับการจัดการข้อมูลได้อย่างรวดเร็ว ประเภทฐานข้อมูลที่เรียกกันโดยทั่วไปว่า NoSQL ได้แก่ ฐานข้อมูลเอกสารล้วน ที่เก็บคีย์-ค่า ฐานข้อมูลคอลัมน์กว้าง และฐานข้อมูลกราฟ ธุรกิจทั่วโลกในปี 2000 กำลังปรับใช้ฐานข้อมูล NoSQL เพื่อขับเคลื่อนแอปพลิเคชันที่มีความสำคัญต่อภารกิจอย่างรวดเร็ว นี่เป็นเพราะแนวโน้มห้าประการที่นำเสนอความท้าทายทางเทคนิคที่ทำให้ฐานข้อมูลเชิงสัมพันธ์ส่วนใหญ่ใช้งานยาก การจัดการฐานข้อมูลเป็นอุปสรรคสำคัญต่อการพัฒนาแบบอไจล์ เนื่องจากขาดความสามารถในการรองรับโมเดลข้อมูลคงที่ซึ่งจำเป็นสำหรับการพัฒนาแบบอไจล์ รูปแบบแอปพลิเคชันกำหนดรูปแบบข้อมูลใน NoSQL
การสร้างแบบจำลองข้อมูลใน NoSQL นั้นไม่คงที่ รูปแบบ JSON เป็นรูปแบบเริ่มต้นสำหรับการจัดเก็บข้อมูลในฐานข้อมูลเชิงเอกสาร สิ่งนี้ทำให้ไม่จำเป็นต้องใช้เฟรมเวิร์ก ORM และปรับปรุงกระบวนการพัฒนา N1QL (อ่านว่า นิเกิล) ซึ่งเป็นภาษาคิวรีที่ทรงพลังซึ่งขยาย SQL เป็น JSON ได้รับการเผยแพร่โดยเป็นส่วนหนึ่งของ Couchbase Server 4.0 นอกจากนี้ยังรองรับคำสั่ง SELECT / FROM / WHERE มาตรฐาน เช่นเดียวกับการรวม (GROUP BY) การเรียงลำดับ (SORT BY) การรวม (ซ้ายนอก / ใน) และอื่น ๆ เนื่องจากสถาปัตยกรรมที่ปรับขนาดออกและไม่มีจุดล้มเหลวเพียงจุดเดียว ฐานข้อมูลแบบกระจายของ NoSQL จึงมีข้อดีในการดำเนินงานที่น่าสนใจ ความพร้อมใช้งานกำลังกลายเป็นประเด็นสำคัญ เนื่องจากลูกค้ามีปฏิสัมพันธ์กับบริษัทต่างๆ ทางออนไลน์และผ่านแอปบนอุปกรณ์เคลื่อนที่มากขึ้น
ฐานข้อมูล NoSQL ติดตั้ง กำหนดค่า และปรับขนาดได้ง่าย ด้วยการอ่าน เขียน และจัดเก็บแบบกระจาย จึงได้รับการออกแบบมาเพื่อให้การอ่าน เขียน และจัดเก็บเป็นเรื่องง่าย สามารถทำงานได้บนสเกลที่หลากหลาย รวมถึงสเกลที่จัดการและตรวจสอบคลัสเตอร์ที่มีขนาดแตกต่างกัน ไม่จำเป็นต้องพัฒนาซอฟต์แวร์เพื่อทำซ้ำระหว่างศูนย์ข้อมูล ฐานข้อมูล NoSQL แบบกระจายมีการจำลองแบบในตัวระหว่างศูนย์ข้อมูล นอกจากนี้ยังอนุญาตให้แอปพลิเคชันดำเนินการเฟลโอเวอร์ของตนเอง แทนที่จะรอให้ฐานข้อมูลตรวจพบปัญหาและดำเนินการตามกระบวนการกู้คืนฐานข้อมูล ฐานข้อมูล NoSQL ถูกนำมาใช้มากขึ้นในแอปพลิเคชันบนเว็บ มือถือ และ IoT เนื่องจากใช้งานง่ายและรวมเข้าด้วยกันได้ง่าย
ที่จัดเก็บตารางเป็นโซลูชันที่ยอดเยี่ยมสำหรับข้อมูลที่ไม่ได้จัดเก็บไว้ในฐานข้อมูลเชิงสัมพันธ์ พื้นที่จัดเก็บแบบตารางทำให้คุณสามารถจัดเก็บข้อมูลในคอนเทนเนอร์ที่ยืดหยุ่นเพียงพอที่จะรองรับการเติบโตของแอปพลิเคชันของคุณ ระบบพื้นที่จัดเก็บแบบตารางสามารถใช้เพื่อจัดเก็บข้อมูลที่จัดเก็บได้ยากในรูปแบบเชิงสัมพันธ์ เช่น ข้อมูลวิดีโอหรือรูปภาพ
ฐานข้อมูล Nosql ของ Azure: Documentdb, Graph และ Keyvalue
ฐานข้อมูล NoSQL สามประเภทใน Azure คือ Azure DocumentDB, Azure Graph และ Azure KeyValue ด้วย Azure DocumentDB ไม่จำเป็นต้องจัดการไฟล์ข้อมูลบนเซิร์ฟเวอร์หรือเรียกค้นจากไฟล์เก็บถาวร เป็นคีย์-ค่าแบบไร้เซิร์ฟเวอร์ และสามารถรองรับคำขอได้มากถึงล้านคำขอต่อวินาที นี่คือฐานข้อมูลกราฟที่สามารถใช้ในการค้นหาและจัดการข้อมูลในหลายระดับในแอปพลิเคชัน Azure Graph เป็นฐานข้อมูลกราฟที่สามารถใช้เพื่อสืบค้นและจัดการข้อมูลในหลายระดับในแอปพลิเคชัน ซึ่งช่วยให้คุณสามารถจัดระเบียบและกรองข้อมูลในรายการที่เรียงลำดับและกรองของ Azure KeyValue
คิวเป็นฐานข้อมูลหรือไม่?
ไม่มีคำตอบที่ชัดเจนสำหรับคำถามนี้ เนื่องจากขึ้นอยู่กับว่าคุณกำหนดฐานข้อมูลอย่างไร โดยทั่วไปแล้ว ฐานข้อมูลคือชุดของข้อมูลที่จัดในลักษณะเฉพาะเพื่อให้สามารถเข้าถึงและอัปเดตได้ตามต้องการ คิวเป็นโครงสร้างข้อมูลที่ให้คุณจัดเก็บและดึงข้อมูลตามลำดับที่กำหนด ดังนั้น หากคุณพิจารณาว่าคิวเป็นชุดของข้อมูล ก็อาจถือว่าเป็นฐานข้อมูลได้ อย่างไรก็ตาม หากคุณถือว่าฐานข้อมูลเป็นชุดของข้อมูลที่สามารถเข้าถึงได้และอัปเดตเท่านั้น คิวจะไม่ถือว่าเป็นฐานข้อมูล
เวลาใดที่เหมาะสมในการใช้ฐานข้อมูลสำหรับระบบคิว สิ่งสำคัญคือต้องรักษาคิวที่เป็นระเบียบและเป็นระเบียบเพื่อให้คำขอทั้งหมดได้รับการประมวลผลโดยเร็วที่สุด มีคิวข้อความที่ออกแบบมาเพื่อจัดการกับสถานการณ์ประเภทนี้ ทำให้ง่ายต่อการยกเลิกคิวหรือ คิวข้อความ ลองนึกภาพว่าคุณมีคำขอสร้าง PDF หลายร้อยรายการในฐานข้อมูล ณ เวลาใดเวลาหนึ่ง เป็นที่พึงปรารถนาที่จะสามารถประมวลผลคำขอเพิ่มเติมต่อวินาทีได้อย่างต่อเนื่อง ไม่จำเป็นต้องเชื่อมต่อกับผู้ปฏิบัติงานมากขึ้น (กระบวนการที่จัดการคำขอ) เนื่องจากคุณสามารถปรับขนาดโซลูชันของคุณได้ ในการรับคำขอ พนักงานจะต้องให้ข้อมูลเพิ่มเติม
คิวข้อความ ไม่ต้องการให้ผู้ใช้ทำธุรกรรมใดๆ เพื่อให้แน่ใจว่าข้อความได้รับการจัดเก็บและประมวลผล แทนที่จะทำการสำรวจข้อความจากฐานข้อมูลด้วยตนเอง คิวข้อความจะถูกส่งแบบเรียลไทม์ หากคุณใช้พลังงาน CPU หมดในขณะที่เชื่อมต่อกับการเชื่อมต่อมากเกินไปหรือทำงานอื่นๆ ที่ต้องใช้ CPU จำนวนมาก คุณสามารถใช้พลังงาน CPU มากขึ้นเพื่อขับเคลื่อนเซิร์ฟเวอร์คิวข้อความของคุณ ในกรณีที่ต้องการข้อความแบบอะซิงโครนัสจำนวนมาก ขอแนะนำให้ใช้คิวข้อความ หากผู้ปฏิบัติงานเสียชีวิตขณะปฏิบัติงาน ควรถูกพักไว้ในคิวจนกว่าคำขอจะได้รับการแก้ไข เมื่อได้รับข้อความและประมวลผล ผู้ปฏิบัติงานจะส่งการตอบรับกลับไปยังคิวข้อความเพื่อแจ้งให้ทราบถึงความคืบหน้า
คิวเป็นโครงสร้างข้อมูลที่สามารถจัดเก็บคอลเลกชันของรายการตามลำดับตรรกะ รายการที่อยู่ในคิวจะได้รับการประมวลผลโดยเร็วที่สุดหลังจากที่เพิ่มลงในคิวแล้ว คิวมีประโยชน์เมื่อคุณต้องการประมวลผลรายการในใบสั่งเฉพาะ คำสั่ง SELECT เป็นวิธีการที่สามารถใช้เพื่อเปลี่ยนเนื้อหาของคิว คำสั่ง SELECT เป็นวิธีการที่ช่วยให้คุณสามารถเลือกรายการจากคิวและส่งไปยังตำแหน่งอื่นได้หากต้องการ คำสั่ง SELECT ยังใช้เพื่อส่งรายการจากตำแหน่งอื่นไปยัง คิวที่เหมาะสม เช่นเดียวกับการแทรกรายการเหล่านั้นลงในคิว คำสั่ง INSERT, UPDATE, DELETE หรือ TRUNCATE ไม่สามารถพยายามกำหนดเป้าหมายคิวได้ หากคุณต้องการประมวลผลรายการตามลำดับเฉพาะ คิวจะมีประโยชน์ อย่างไรก็ตาม คุณไม่ควรแก้ไขรายการในคิว
ความสำคัญของระบบคิวในระบบฐานข้อมูล
ฐานข้อมูลที่มีกลไกคิวเป็นส่วนเสริมที่ยอดเยี่ยมสำหรับศูนย์ข้อมูลใดๆ สิ่งสำคัญคือต้องมีฟังก์ชัน DBMS สำหรับระบบคิว เนื่องจากสามารถใช้งานได้หลากหลายวัตถุประสงค์ ด้วยการรวมฟังก์ชันคิวเข้ากับ ระบบฐานข้อมูลมาตรฐาน แอปพลิเคชันอื่นๆ จะสามารถเข้าถึงฟังก์ชันเหล่านี้ได้มากขึ้น ด้วยการอัปเดตนี้ ระบบคิวจะมีประสิทธิภาพและหลากหลายมากขึ้น ตลอดจนยูทิลิตี้และศักยภาพของระบบก็เพิ่มขึ้น
Mongobb มีคิวหรือไม่?
คิวคือชุดของเอกสารที่แทรกลงในฐานข้อมูล MongoDB ตามลำดับจากน้อยไปหามากตามข้อมูลการสร้างเอกสารหรือการจัดลำดับเอกสารตามลำดับความสำคัญที่กำหนด
หากคุณใช้ MongoDB อยู่แล้ว คุณสามารถใช้วิธีนี้เพื่อสร้างคิวด้วย API ที่ดีได้ หากคุณมีไดรเวอร์ MongoDB v3 หรือฐานข้อมูลที่เก่ากว่า แนะนำให้ใช้ ตัวเลือก mongodb- [ป้องกันอีเมล] แพ็คเกจนี้จัดอยู่ในประเภทฟีเจอร์ที่สมบูรณ์และเสถียร แม้จะมีการใช้งานอย่างแพร่หลาย แต่ก็ยังมีการพัฒนาใหม่ๆ เกิดขึ้นน้อยมาก โปรดแจ้งให้เราทราบหากคุณมีปัญหาใดๆ หรือหากคุณใช้งานไม่ถูกต้อง แต่ละคิวที่คุณสร้างจะเป็นคิวของตัวเอง สามารถสร้างคอลเลกชัน MongoDB ที่เรียกว่าการปรับขนาดรูปภาพคิวหรือการแจ้งเตือนเจ้าของคิว ซึ่งทั้งสองอย่างนี้สามารถใช้ได้
หากคุณไม่ได้รับข้อความภายใน 30 วินาทีหลังจากได้รับ ข้อความนั้นจะถูกวางกลับเข้าไปในคิวเพื่อให้สามารถเรียกคืนได้ สำรวจคิวที่ตายของคุณเพื่อดูว่าพบข้อความใดที่ตายแล้วหรือไม่ เมื่อเราส่งคืนข้อความทั้งหมดจากคิวเดิมไปยังคิวที่ตายแล้ว when.get() เพย์โหลดของคิวที่ไม่ทำงานคือข้อความ หากรายการถูกลบออกจากคิวแต่ไม่ถูก acked รายการนั้นจะถูกย้ายไปยังคิวที่ตายนี้ในครั้งต่อไปที่พยายามออก หากรายการถูกลบออกจากคิวแต่ไม่ถูก acked รายการนั้นจะถูกย้ายไปยังคิวที่ตายนี้ในครั้งต่อไปที่พยายามออก คิวยังสามารถดูได้โดยการส่ง Ping ข้อความเพื่อบอกว่าคุณยังมีชีวิตอยู่และกำลังประมวลผลคำขอ เวลาในการมองเห็นที่คุณส่งผ่านการดำเนินการ ping นั้นถูกกำหนดโดยเมธอด // เวลาในการมองเห็น (ในกรณีนี้ คิวนี้ได้เห็น%d ข้อความ%d ข้อความ%d จำนวน; ); //queue.ping(msg.ack, (err, id) = จำนวนข้อความที่อยู่ในคิวใน 24 ชั่วโมงล่าสุด รวมถึงข้อความปัจจุบัน
เราสามารถคำนวณจำนวนข้อความใหม่ที่ได้รับแต่ยังไม่ได้เปิดใช้งาน ควรเป็นไปได้ที่จะ get.total() หากคุณเพิ่ม up.size() +.inFlight() +.done() แต่นี่จะเป็นค่าประมาณเท่านั้นเนื่องจากทั้งสองเป็นการดำเนินการที่แตกต่างกันซึ่งใช้ในการคำนวณผลรวม ในบางครั้ง ฤดูกาลจะแตกต่างกันมาก ใช้ตัวเลือก setInterval เพื่อทำความสะอาดระบบของคุณเป็นประจำ Console.log('ข้อความที่ประมวลผลถูกลบออกจากคิว')*)
มงกอดคิว
คิว MongoDB (หรือคิวข้อความ) จัดเตรียมกลไกสำหรับจัดเก็บข้อความตามลำดับ เข้าก่อนออกก่อน สามารถแทรกข้อความลงในคิวได้ตลอดเวลา และจะดำเนินการตามลำดับที่ได้รับ สิ่งนี้ทำให้ คิว MongoDB เหมาะ สำหรับการประมวลผลงานที่ต้องดำเนินการตามลำดับเฉพาะ หรือสำหรับงานที่สามารถประมวลผลแบบอะซิงโครนัส
ภารกิจของ FloQast คือการช่วยให้ทีมผลิตภัณฑ์เร่งและทำให้การพัฒนาผลิตภัณฑ์ที่เป็นนวัตกรรมเป็นไปโดยอัตโนมัติ ตามเนื้อผ้า AWS SQS ทำหน้าที่เป็น บริการคิวข้อความ ของเรา สิ่งนี้ส่งผลให้เกิดปัญหาในแง่ของการรักษาความสามารถในการทำงานและความซ้ำซ้อน แต่เราเลือก MongoDB เป็นคิวข้อความแทน ใน AWS Lambda คุณสามารถเพิ่มข้อความไปยังคิวใดๆ ได้อย่างง่ายดาย ไม่จำเป็นต้องอัปเกรดบริการที่มีอยู่เพื่อใช้แลมบ์ดาแยกต่างหาก เมื่อเข้าถึงคิว บริการจะใช้เมธอด findAndModify ของ MongoDB เพื่อดึงรายการแรกและเรียกใช้ Lambda ตามคำแนะนำของผู้พัฒนา
กระแสการเปลี่ยนแปลงใน Mongobb คืออะไร?
ในแบบเรียลไทม์ นักพัฒนาแอปพลิเคชันสามารถเห็นการเปลี่ยนแปลงของข้อมูลโดยไม่ต้องกลัวว่าจะต้องปรับแต่ง oplog หรือต้องจัดการกับความซับซ้อนและความเสี่ยงของโครงสร้างข้อมูลที่ซับซ้อน แอ็พพลิเคชันสามารถใช้สตรีมการเปลี่ยนแปลงเพื่อสมัครรับข้อมูลการเปลี่ยนแปลงทั้งหมดในคอลเล็กชัน ฐานข้อมูล หรือการปรับใช้ใดๆ และตอบสนองต่อการเปลี่ยนแปลงเหล่านั้นทันที
ใช้ทริกเกอร์เพื่อทำให้การทำงานของฐานข้อมูลเป็นแบบอัตโนมัติ
ด้วยการใช้กลไกทริกเกอร์ คุณสามารถดำเนินการฐานข้อมูลโดยอัตโนมัติ และทำให้ระบบของคุณมีประสิทธิภาพมากขึ้น เมื่อเอกสารถูกเพิ่ม อัปเดต หรือลบออกจากคลัสเตอร์ MongoDB Atlas ที่เชื่อมโยง ทริกเกอร์สามารถจัดการตรรกะฝั่งเซิร์ฟเวอร์ได้ คุณจะสามารถทำให้ระบบของคุณทำงานได้อย่างราบรื่นและทำให้การทำงานของฐานข้อมูลเป็นไปโดยอัตโนมัติ
ฐานข้อมูลเอกสาร Nosql
ฐานข้อมูล NoSQL หรือที่เรียกว่าฐานข้อมูลที่ไม่ใช่เชิงสัมพันธ์ เป็นฐานข้อมูลที่ไม่ได้ใช้โครงสร้างฐานข้อมูลเชิงสัมพันธ์แบบตารางแบบดั้งเดิม ฐานข้อมูล NoSQL มักใช้สำหรับข้อมูลขนาดใหญ่และเว็บแอปพลิเคชันแบบเรียลไทม์
ฐานข้อมูลเชิงเอกสารเป็นวิธีการสมัยใหม่ในการจัดเก็บข้อมูลใน JSON แทนที่จะใช้คอลัมน์และแถวแบบเดิม ข้อมูลกึ่งโครงสร้างนี้สามารถใช้เพื่อจัดการกับปัญหายากๆ ที่จำเป็นต้องใช้ RDBMS ที่เก็บเอกสารสร้างโซลูชันที่เป็นธรรมชาติและยืดหยุ่น ซึ่งนักพัฒนาซอฟต์แวร์ที่ต้องการทำงานเร็วขึ้นด้วยซอฟต์แวร์ที่คล่องตัวสามารถใช้ได้ คุณสามารถสืบค้นข้อมูลได้หลายวิธีด้วยภาษาข้อความค้นหาที่สื่ออารมณ์และความสามารถในการทำดัชนีที่หลากหลาย ฐานข้อมูลเชิงสัมพันธ์มีชุดการรับประกันที่คุณคุ้นเคยเมื่อเรียกใช้ธุรกรรม ACID การมีระบบแบบกระจายทำให้คุณสามารถปรับขนาดและปกป้องข้อมูลของคุณได้อย่างมีประสิทธิภาพและปรับเปลี่ยนได้ เอกสารแต่ละฉบับจะถูกกระจายไปยังเซิร์ฟเวอร์หลายเครื่องในหน่วยอิสระ ซึ่งช่วยลดความจำเป็นในการใช้พื้นที่ข้อมูล
ฐานข้อมูลเอกสารนั้นใช้งานง่ายและใช้งานง่ายด้วยความเร็วข้อมูลที่เร็วกว่าฐานข้อมูลเชิงสัมพันธ์ คุณภาพของข้อมูลจะลดลง และตารางจะแข็ง เนื่องจากไม่สามารถดำเนินการขยายขนาดดั้งเดิมได้ คุณต้องจ่ายเงินสำหรับระบบขยายขนาดที่มีราคาแพง ถ้าคุณต้องการแบ่งพาร์ติชันฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิมของคุณ สามารถเลือกประเภทเอกสารได้หลากหลายในฐานข้อมูลเชิงเอกสาร อย่างไรก็ตาม ฟิลด์ที่พบในร้านค้าแต่ละแห่งอาจเป็นตัวเลือก เอกสารแต่ละฉบับมีโครงสร้างเหมือนกัน แต่ฟิลด์ต่างกัน เอกสารแต่ละฉบับมี ID เฉพาะของตนเอง ซึ่งสามารถใช้เพื่อเพิ่ม เปลี่ยนแปลง ลบ และสอบถามข้อมูลได้ การเข้ารหัสเอกสารมักจะคิดว่าเป็นกระบวนการแปลงข้อมูลที่ถูกห่อหุ้ม (หรือสารสนเทศ) ให้เป็นรูปแบบมาตรฐาน
โครงสร้างฐานข้อมูลเชิงเอกสารมีความแข็งน้อยกว่าและมีแนวโน้มที่จะไม่สอดคล้องกันน้อยกว่า เมื่อคุณสอบถามข้อมูลโดยตรงจากเอกสารแทนที่จะเป็นคอลัมน์ภายในฐานข้อมูล ข้อมูลจะถูกจัดเก็บไว้ในเอกสารโดยตรงมากขึ้น สามารถเพิ่มข้อมูลลงในที่เก็บเอกสารด้วยฟิลด์เดียวที่มีฟิลด์ข้อมูลที่เกี่ยวข้องกับข้อมูล