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