[英]What is better on Performance when Querying 50 GB data ? Is it MYSQL SELECT with a condition or Dynamodb SCAN with FiLTER Expressions?
我正在使用 Dynamodb 中的“掃描”選項檢索網站的一些流量數據。 我已經使用 filterExpression 來過濾掉那些。 我將對一個包含超過 20GB 數據的大表進行掃描。
我發現 DynamoDB 掃描整個表並過濾結果。 該文檔說它只返回 1MB 的數據,然后我必須再次循環以獲取其余數據。 使這項工作似乎是不好的方式。 從這里得到參考: 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);
在考慮了這個建議后,這對我有用
$params = [
'TableName' => $tableName,
'IndexName' => self::GLOBAL_SECONDARY_INDEX_NAME,
'ProjectionExpression' => '#dy, t_counter , traffic_type_id', 'KeyConditionExpression' => 'country=:country AND #dy between :since AND :to',
'FilterExpression' => 'traffic_type_id=:traffic_type_id' 'ExpressionAttributeNames' => ['#dy' => 'day'],
'ExpressionAttributeValues' => $eav
];
如果您的數據類似於鍵值對,並且您有要為其建立索引的固定字段,請使用DynamoDB - 您可以在要查詢的所有字段上創建索引,它會很好用
如果您需要對多個索引進行復雜查詢,那么任何RDBMS都很好。
如果您可以查詢任何內容,請考慮彈性搜索
如果您的查詢非常簡單,但您在每個查詢中都需要檢索大量數據。 想想S3 。 也許您可以在 DynamoDb 中索引元數據,而實際數據可以在 S3 中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.