¡Soy un novato total con Azure! El objetivo es devolver las filas según la marca de tiempo almacenada en RowKey. Ya que hay un costo de transacción con cada consulta, quiero minimizar el número de transacciones/consultas, mientras que mantener el rendimientoAzure Table Storage - Selección de PartitionKey y RowKey para usar entre la consulta
Estos son los Partición propuesto y teclas de la fila:
- clave de reparto TextCache_ (AccountID) _ (ParentMessageId)
- fila de teclas: (DateOfMessage) _ (MessageId)
Leyenda:
- AccountId - es un entero
- ParentMessageId - El messageId padre si es que existe, en blanco si es el padre
- DateOfMessage - Fecha en que se creó el mensaje - formato será DateTime.Ticks. ToString ("D19")
- MessageId - el ID único del mensaje
me gustaría volver de una sola consulta las filas y las childrows que es> o < DateOfMessage_MessageId
¿Se puede hacer esto a través de mis PartitionKeys y RowKeys propuestos?
es decir .. (en pseudo código)
var results = ctx.PartitionKey.StartsWith(TextCache_AccountId)
&& ctx.RowKey > (TimeStamp)_MessageId
En segundo lugar, si no tengo un número de cuentas, y sólo quiere volver detrás de los primeros 10, que podría hacerse a través de una única consulta
es decir .. (en pseudo código)
var results = (
(
ctx.PartitionKey.StartsWith(TextCache_(AccountId1)) &&
&& ctx.RowKey > (TimeStamp1)_MessageId1)
)
||
(
ctx.PartitionKey.StartsWith(TextCache_(AccountId2)) &&
&& ctx.RowKey > (TimeStamp2)_MessageId2)
) ...
)
.Take(10)
Gracias a knightpfhor, estaba más preocupado por golpear las 500 trans/seg en el almacenamiento de la mesa, lo que daría como resultado el estrangulamiento. No pensé en el relleno de AccountId, que definitivamente será necesario. Hará algunas pruebas –
Vale la pena señalar que el límite del acelerador es por partición, no global (aunque el límite global es de varios miles de trans/seg – knightpfhor
En cuanto al 'TextCache_', lo agregué como identificador de tabla. Si tuviera entidades múltiples, ¿cómo lo haría? Los diferencio? –