Estoy buscando almacenar una lista ordenada dentro de una base de datos. Quiero realizar las siguientes operaciones de manera eficiente.
- Insertar (x): inserte el registro x en la tabla
- Eliminar (x): eliminar el registro x de la tabla
- Before (x, n): devuelve los registros 'n' que preceden al registro x en la lista ordenada.
- After (x, n): devuelve los registros 'n' que suceden al registro x en la lista ordenada.
- Primero (n): devuelve los primeros registros 'n' de la lista ordenada.
- Último (n): devuelve los últimos registros 'n' de la lista ordenada.
- Compare (x, y): dados dos registros x e y de la tabla, encuentre si x> y.
El método simple que se me ocurre es almacenar algún tipo de atributo de 'rango' en la tabla y consultar ordenando ese atributo. Pero en este método, insertar / modificar un registro con un rango se convierte en una operación costosa. hay algun metodo mejor?
Específicamente, estoy buscando implementar la tabla usando SimpleDB de Amazon. Pero una respuesta general para una base de datos relacional también debería ser útil.
Actualización en el perfil de carga:
Como estoy planeando esto para una aplicación web, depende de la cantidad de usuarios que usen la aplicación.
Si hay 100k usuarios activos (súper optimismo: P), entonces mi estimación aproximada por día sería
500k selecciona, 100k inserta y elimina, 500k actualizaciones
Esperaría que la mesa crezca hasta 500k en total.
Estoy buscando optimizar las actualizaciones, la inserción y las operaciones de comparación. El rango de los elementos cambiará constantemente y necesito mantener la tabla actualizada.