ขณะนี้ฉันกำลังทำงานกับแอปพลิเคชัน wiki-esque โดยใช้ CouchDB และฉันกำลังพยายามใช้รูปแบบการกำหนดเวอร์ชันเอกสาร วิธีที่ฉันเห็นมันมีสองวิธีในการทำสิ่งนี้:
- จัดเก็บแต่ละเวอร์ชันเป็นเอกสารแยกต่างหาก
- เก็บเวอร์ชันเก่าเป็นสิ่งที่แนบมากับเอกสารฉบับเดียว
ตอนนี้ฉันมีรูปแบบการทำงาน # 1 เมื่อผู้ใช้แก้ไขเอกสารและบันทึกไว้แบ็คเอนด์ก่อนจะคัดลอกการแก้ไขก่อนหน้านี้ไปยังเอกสารใหม่จากนั้นบันทึกเวอร์ชันใหม่ แต่ละเอกสารมีอาร์เรย์ 'ประวัติ' ที่มีข้อมูลในแต่ละเวอร์ชัน (เอกสาร _id ของเวอร์ชันเก่าการประทับเวลาตัวแก้ไข ฯลฯ )
เนื่องจากอาร์เรย์ประวัตินี้อาจมีความยาวค่อนข้างมากสำหรับเอกสารที่อัปเดตบ่อยครั้งฉันจึงมีมุมมองที่ดึงข้อมูลประวัติเอกสารในระหว่างการอ่านปกติ (และอีกมุมมองหนึ่งสำหรับดึงข้อมูลประวัติ)
คำถามของฉันคือ: ฉันรู้สึกไม่สบายใจเกี่ยวกับวิธีการปัจจุบันของฉันและกำลังคิดที่จะเปลี่ยนเป็นวิธีการ 'แนบ' แต่ฉันไม่แน่ใจ. ฉันหวังว่าคนที่รู้จัก CouchDB ดีกว่าฉัน (ฉันเพิ่งมาที่นี่แค่สองสามสัปดาห์ - และนี่เป็นโครงการแรกของฉันที่ใช้ CouchDB ... และ NoSQL) สามารถบอกได้ว่าข้อดีข้อเสียของแต่ละคน เข้าใกล้ หรืออาจมีโครงร่างเวอร์ชันอื่นที่ฉันมองเห็น