Что лучше по производительности при запросе данных объемом 50 ГБ?Это MYSQL SELECT с условием или Dynamodb SCAN с выражениями FiLTER? - PullRequest
0 голосов
/ 27 июня 2019

Я получаю некоторые данные о трафике веб-сайта, используя опцию «сканирования» в Dynamodb. Я использовал filterExpression, чтобы отфильтровать их. Я буду сканировать большую таблицу, в которой будет более 20 ГБ данных.

Я обнаружил, что DynamoDB сканирует всю таблицу и отфильтровывает результаты. В документе говорится, что он возвращает только 1 МБ данных, а затем мне нужно повторить цикл, чтобы получить остальное. Кажется, это плохой способ сделать эту работу. отсюда получил ссылку: выражение фильтра Dynamodb не возвращает все результаты

Для маленького стола это должно быть хорошо.

MySQL, я думаю, тоже самое. Я не уверен.

Что быстрее читать, так это выбор MySQL или сканирование DynamoDB на большом наборе данных.

Есть ли другая альтернатива? каковы ваши мысли и предложения?

Я пытаюсь перенести эти данные трафика в таблицу Dynamodb, а затем запросить их. Это кажется плохой идеей для меня сейчас.

$params = [
      'TableName' => $tableName,
      'FilterExpression' => $this->filter.'=:'.$this->filter.' AND #dy > :since AND #dy < :now',
      'ExpressionAttributeNames'=> [ '#dy' => 'day' ],
      'ExpressionAttributeValues'=> $eav
    ];

    var_dump($params);

    try {
      $result = $dynamodb->scan($params);

1 Ответ

0 голосов
/ 01 июля 2019

Если ваши данные похожи на пару ключ-значение и у вас есть фиксированные поля, по которым вы хотите индексировать, используйте DynamoDB - вы можете создавать индексы для всех полей, которые хотите запросить, и это будет прекрасно работать

Если вам требуется сложный запрос по нескольким индексам, тогда любая СУБД - это хорошо.

Если вы можете запросить что-либо по любому поводу, подумайте о Упругий поиск

Если ваши запросы очень просты, но у вас есть большие данные для поиска в каждом запросе.Подумайте о S3 .Может быть, вы можете индексировать метаданные в DynamoDb, а фактические данные могут быть в S3

...