ฉันต้องการจัดเก็บรายการที่เรียงลำดับไว้ในฐานข้อมูล ฉันต้องการดำเนินการต่อไปนี้อย่างมีประสิทธิภาพ
- Insert (x) - แทรก record x ลงในตาราง
- ลบ (x) - ลบบันทึก x จากตาราง
- ก่อนหน้า (x, n) - ส่งคืนระเบียน 'n' ก่อนหน้าระเบียน x ในรายการที่เรียงลำดับ
- หลังจาก (x, n) - ส่งคืนระเบียน 'n' ที่ประสบความสำเร็จในการบันทึก x ในรายการที่เรียงลำดับ
- First (n) - ส่งคืนระเบียน 'n' แรกจากรายการที่เรียงลำดับ
- Last (n) - ส่งคืนระเบียน 'n' ล่าสุดจากรายการที่เรียงลำดับ
- เปรียบเทียบ (x, y) - ให้สองเรคคอร์ด x และ y จากตารางค้นหาถ้า x> y
วิธีง่าย ๆ ที่ฉันคิดได้ก็คือเก็บแอตทริบิวต์ 'อันดับ' ไว้ในตารางและแบบสอบถามโดยการเรียงลำดับในแอตทริบิวต์นั้น แต่ในวิธีนี้การแทรก / แก้ไขเรคคอร์ดที่มีอันดับจะเป็นการดำเนินการที่มีค่าใช้จ่ายสูง มีวิธีที่ดีกว่านี้ไหม?
โดยเฉพาะฉันต้องการใช้ตารางโดยใช้ SimpleDB ของ Amazon แต่คำตอบทั่วไปสำหรับฐานข้อมูลเชิงสัมพันธ์ก็ควรมีประโยชน์เช่นกัน
อัปเดตเมื่อโหลดโปรไฟล์:
เนื่องจากฉันกำลังวางแผนสิ่งนี้สำหรับเว็บแอปพลิเคชันมันขึ้นอยู่กับจำนวนผู้ใช้ที่ใช้แอป
หากมีผู้ใช้ที่ใช้งาน 100k (การมองในแง่ดีสุด: P) การประมาณการโดยประมาณต่อวันของฉันจะเป็นเช่นนั้น
เลือก 500k, แทรกและลบ 100k, อัปเดต 500k
ฉันคาดว่าตารางจะโตขึ้นมากถึง 500k
ฉันกำลังมองหาที่จะปรับให้เหมาะสมกับการปรับปรุงแทรกและการดำเนินการเปรียบเทียบ อันดับของรายการจะมีการเปลี่ยนแปลงอยู่ตลอดเวลาและฉันจำเป็นต้องปรับปรุงตาราง