Как получить верхнюю строку из каждого раздела в таблице хранилища Azure

У меня есть таблица хранилища Azure, в которой каждый раздел хранит некоторую информацию о моем пользовательском классе данных. Каждая строка раздела больше похожа на историю этого класса, и только последняя запись поддерживается для возврата при запросе.

Когда я знаю, какой раздел я хочу найти, то очень легко получить последнюю запись следующим образом:

string pkFilter = TableQuery<MyEntity>.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionkeyvalue);
var query = new TableQuery<MyEntity>().Where(pkFilter).Take(1);

Теперь сценарий состоит в том, чтобы получить верхнюю запись со всех разделов. Как эффективно получить верхнюю запись каждого раздела за один вызов?


person hamid    schedule 17.03.2014    source источник


Ответы (1)


По сути, вы пытаетесь применить группу по операции; это сложно, потому что no-sql плохо работает с концепциями баз данных.

Таким образом, ваши единственные варианты ограничены обходными путями; если у вас есть дюжина или около того ПК, то параллельная операция на вашем столе может иметь смысл. Если у вас большое количество PK, вам может потребоваться создать другую таблицу, содержащую только самую последнюю информацию и обновляемую как часть пакетной операции одновременно с исходной таблицей. Таким образом, ваша вторичная таблица всегда содержит правильные данные (поскольку пакетные операции завершаются успешно или неуспешно в целом).

person Herve Roggero    schedule 18.03.2014