2012-05-01 23 views
13

Tengo una tabla azul con aproximadamente 5 millones de filas +, cada partición tiene aproximadamente 100k filas. RowKey es una marca de tiempo ordenable. Necesito poder obtener el último registro que se insertó en la tabla.Azure Table Storage obtener el último registro

Dado que Linq Last, Max, OrderBy etc. no son compatibles, ¿cómo obtengo de manera eficiente el registro de tabla más reciente?

Respuesta

12

No hay una manera eficiente de hacerlo. Pero si se trata de una opción, considere voltear la clave de fila para que las entradas más recientes estén en la parte superior (orden cronológico inverso). Recuperar la parte superior n entradas es fácil y eficiente.

+2

Y una buena referencia para lograr esto es una de sus antiguas publicaciones en el blog: http://blog.smarx.com/posts/using-numbers-as-keys-in-windows-azure –

+0

Cualquier idea si el equipo azul agregará soporte para más consultas de Linq para el almacenamiento de tablas? ¿O las limitaciones técnicas son demasiado complejas? –

+1

Esperaría más consultas con el tiempo, pero probablemente no esta. Con mi entendimiento de cómo se almacenan los datos, no hay una buena manera de llegar al final de la lista o consultarlos en orden inverso. (Piense en algo así como una lista de enlace único.) – smarx

1

Puede consultar para TimeStamp más pequeño que MaxDate y limitar el resultado para 1. No lo he probado todavía, pero debería funcionar. Depende de cómo se formatea su marca de tiempo.

+0

Acabo de probarlo. No funciona – Szer

Cuestiones relacionadas