Подсчет сложных запросов как одного запроса - PullRequest
0 голосов
/ 17 апреля 2019

Здравствуйте, у меня есть PHP + Mysql API, и теперь я перерабатываю в Asp.net Core + DynamoDB API, в PHP У меня есть 5 MySQL запросов, которые все они используют для подсчета различных параметров, теперь я хочу, чтобы тот же запрос, чтобы перейти в DynamoDB, но используя документацию DynamoDb, он отображается только как один счет.

Теперь я мог бы создать пять запросов и выполнить их, но я боюсь, что это приведет к большой перегрузке для самостоятельной настройки (база данных содержит более 10 тыс. Строк), возможно ли сделать метод подсчета для DynamodB, сканирования и фильтрации наиболее логичным их можно использовать, но они возвращают всю строку, а поскольку DynamoDb ограничивается только 1 МБ возвращаемых данных, и мне нужны только числа, достаточные для моего запроса, но не вся строка данных.

$select = "(SELECT COUNT(User) FROM `userst` WHERE `User` != '' LIMIT 0,1) AS usercount,";
    $select .= "(SELECT COUNT(User) FROM `userst` WHERE `Score` > '$PersonalRow[0]' LIMIT 0,1) AS score,";
    $select .= "(SELECT COUNT(User) FROM `userst` WHERE `BookWidth` > '$PersonalRow[1]' AND `BookHeight` > '$PersonalRow[2]' AND `BookWeight` > '$PersonalRow[3]' LIMIT 0,1) AS Books,";
    $select .= "(SELECT COUNT(User) FROM `userst` WHERE `HouseHeight` > '$PersonalRow[4]' AND `HouseWidht` > '$PersonalRow[5]' LIMIT 0,1) AS Houses,";
    $select .= "(SELECT COUNT(User) FROM `userst` WHERE `Bandwidth` > '$PersonalRow[6]' AND `Speed` < '$PersonalRow[7]' AND `Bandwidth` > '$PersonalRow[8]' AND `CableSize` > '$PersonalRow[9]' LIMIT 0,1) AS Net,";
    $select .= "(SELECT COUNT(User) FROM `userst` WHERE `BuildNumber` > '$PersonalRow[10]' LIMIT 0,1) AS Builds,";
    $select .= "(SELECT COUNT(User) FROM `userst` WHERE `Density` > '$PersonalRow[11]' AND `Pressure` > '$PersonalRow[12]' AND `stage` > '$PersonalRow[13]' AND `Frequency` > '$PersonalRow[14]' LIMIT 0,1) AS Hybrids,";
    $select .= "(SELECT COUNT(User) FROM `userst` WHERE `temperature` > '$PersonalRow[15]' LIMIT 0,1) AS heats";
mysqli_query($select)

вот так выглядит мой php код

Теперь мой код asp net выглядит следующим образом:

public void Count()
{
 UserTableItem UserTable = new UserTableItem();
List<ScanCondition> Conditions= new List<ScanCondition>
{
   new ScanCondition(nameof(UserTable.Name), ScanOperator.NotEqual, string.Empty
};

 List<UserTableItem> list =  await Context.ScanAsync<UserTable>(Conditions).GetRemainingAsync();
Debug.WriteLine(list.Count);
}

Мой текущий код показывает, как я собираюсь делать следующие запросы, но этот код завершится ошибкой после достижения выходного размера в 1 МБ, так как есть ограничение aws, мне не нужны данные строк, только те числа, которые удовлетворяют запросу. Спасибо.

РЕДАКТИРОВАТЬ 1: Я читал, что aws dynamicoDb поддерживает hiveql, что означает, что я могу получить тот же запрос, что и mysql, но как я предполагаю интегрировать hiveql в ядро ​​asp net?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...