Saya mencari untuk menyimpan daftar yang diurutkan di dalam database. Saya ingin melakukan operasi berikut secara efisien.
- Sisipkan (x) - Sisipkan catatan x ke dalam tabel
- Delete (x) - Hapus record x dari tabel
- Sebelum (x, n) - Mengembalikan catatan 'n' sebelum catatan x dalam daftar yang diurutkan.
- After (x, n) - Mengembalikan catatan 'n' yang menggantikan catatan x dalam daftar yang diurutkan.
- First (n) - Mengembalikan catatan 'n' pertama dari daftar yang diurutkan.
- Terakhir (n) - Mengembalikan catatan 'n' terakhir dari daftar yang diurutkan.
- Bandingkan (x, y) - Diberikan dua catatan x dan y dari tabel, cari apakah x> y.
Metode sederhana yang bisa saya pikirkan adalah untuk menyimpan semacam atribut 'peringkat' dalam tabel dan permintaan dengan mengurutkan atribut tersebut. Tetapi dalam metode ini memasukkan / memodifikasi catatan dengan peringkat menjadi operasi yang mahal. Apakah ada metode yang lebih baik?
Secara khusus, saya ingin mengimplementasikan tabel menggunakan SimpleDB Amazon. Tetapi jawaban umum untuk database relasional juga harus membantu.
Perbarui profil yang dimuat:
Karena saya merencanakan ini untuk aplikasi web, itu tergantung pada jumlah pengguna yang menggunakan aplikasi.
Jika ada 100k pengguna aktif (super optimisme: P), maka perkiraan saya yang sangat per hari akan menjadi
500k memilih, 100k menyisipkan dan menghapus, pembaruan 500k
Saya berharap meja tumbuh total hingga 500 ribu.
Saya mencari untuk mengoptimalkan pada pembaruan, masukkan dan operasi Bandingkan. Peringkat item akan terus berubah dan saya harus terus memperbarui tabel.