โครงสร้างข้อมูล snapshottable ที่ดีสำหรับดัชนีในหน่วยความจำ
ฉันออกแบบฐานข้อมูลวัตถุในหน่วยความจำสำหรับกรณีการใช้งานที่เฉพาะเจาะจง เป็นนักเขียนเดียว แต่ต้องสนับสนุนการอ่านพร้อมกันอย่างมีประสิทธิภาพ การอ่านต้องถูกแยกออก ไม่มีภาษาของแบบสอบถามฐานข้อมูลรองรับเท่านั้น: รับวัตถุ / -s โดยคุณลักษณะ / ชุดของคุณลักษณะ (อาจมีการสนับสนุนสำหรับการแสดงออกเช่นx.count < 5) รับคุณลักษณะของวัตถุ แบบสอบถามเป็นสคริปต์ที่จำเป็นซึ่งประกอบด้วยจำนวนการดำเนินการข้างต้นโดยพลการ ขนาดข้อมูลจะเป็นหน่วยความจำ << ดังนั้นวัตถุและดัชนีทั้งหมดของคุณลักษณะส่วนใหญ่ควรพอดีอย่างสะดวกสบายโดยไม่ต้องสลับ สิ่งที่ฉันต้องการคือโครงสร้างข้อมูลสำหรับดัชนีแอ็ตทริบิวต์ของวัตถุซึ่งสามารถเป็น O (n) กับการเขียนไม่สนับสนุนการเขียนพร้อมกัน แต่ควรสนับสนุนการถ่ายภาพ O (1) อย่างสมบูรณ์ (อาจคัดลอกบนการเขียน) และ O (logN) เป็นการดีที่มันจะช่วยให้การทำงานพร้อมกันสูงในการอ่านที่มีการแบ่งปันโครงสร้างสูงสุดระหว่างรุ่น ฉันกำลังดูCTries , BSTsที่เกิดขึ้นพร้อมกันและต้นไม้ Splay ที่เกิดขึ้นพร้อมกันแต่ฉันไม่แน่ใจว่าฉันกำลังมองไปในทิศทางที่ถูกต้องที่นี่หรือไม่ โครงสร้างด้านบนให้ความสนใจอย่างมากกับความซับซ้อนของเม็ดมีดซึ่งฉันไม่สนใจ คำถาม : มีโครงสร้างข้อมูลที่รู้จักที่เหมาะสมกับกรณีการใช้งานของฉันหรือไม่? แก้ไข : หลังจากคิดเพิ่มเติมบางอย่างดูเหมือนว่าต้นไม้ BST / Splay ถาวรจะทำงาน ผู้เขียนจะอัปเดตสำเนา 'ต้นแบบ' …