คุณสามารถแบ่งปันความคิดของคุณได้อย่างไรว่าคุณจะใช้การปรับรุ่นข้อมูลใน MongoDB อย่างไร (ฉันได้ถามคำถามที่คล้ายกันเกี่ยวกับคาสซานดราถ้าคุณมีความคิดใดที่ดีกว่าสำหรับที่กรุณาแบ่งปัน)
สมมติว่าฉันต้องการบันทึกเวอร์ชันในสมุดที่อยู่ธรรมดา (บันทึกสมุดที่อยู่จะถูกจัดเก็บเป็นวัตถุแบบ json แบบแบน) ฉันคาดหวังว่าประวัติศาสตร์:
- จะถูกใช้ไม่บ่อยนัก
- จะถูกใช้ทั้งหมดในครั้งเดียวเพื่อนำเสนอในแบบ "ไทม์แมชชีน"
- จะไม่มีรุ่นมากกว่าสองสามร้อยเป็นระเบียนเดียว ประวัติจะไม่หมดอายุ
ฉันกำลังพิจารณาแนวทางต่อไปนี้:
สร้างการรวบรวมวัตถุใหม่เพื่อเก็บประวัติของการบันทึกหรือการเปลี่ยนแปลงกับบันทึก มันจะเก็บวัตถุหนึ่งชิ้นต่อรุ่นโดยมีการอ้างอิงไปยังรายการสมุดที่อยู่ บันทึกดังกล่าวจะมีลักษณะดังนี้:
{ '_id': 'รหัสใหม่', 'ผู้ใช้': user_id 'timestamp': การประทับเวลา 'address_book_id': 'id ของบันทึกสมุดรายชื่อ' 'old_record': {'first_name': 'Jon', 'last_name': 'Doe' ... } }
วิธีการนี้สามารถแก้ไขเพื่อเก็บอาร์เรย์ของเวอร์ชันต่อเอกสาร แต่นี่ดูเหมือนจะช้ากว่าโดยไม่มีข้อได้เปรียบใด ๆ
จัดเก็บรุ่นเป็นวัตถุที่เป็นอนุกรม (JSON) ที่แนบมากับรายการสมุดที่อยู่ ฉันไม่แน่ใจว่าจะแนบวัตถุดังกล่าวกับเอกสาร MongoDB ได้อย่างไร อาจเป็นชุดของสตริง ( ถ่ายแบบมาจาก Simple Documenting ด้วย CouchDB )