How to get attribute from a list of partition keys in DynamoDB - is scan my only option?
up vote
0
down vote
favorite
I've got a list of partition keys from one table.
userId["123","456","235"]
I need to get an attribute that they all share. like "username".
What would be the best practice to get them all at once?
Is scan my only option knowing that I know all my partition keys?
Do I know the sort key? yes but only the beginning of it. Therefore I
don't think I could use batchGetItem.
amazon-dynamodb
add a comment |
up vote
0
down vote
favorite
I've got a list of partition keys from one table.
userId["123","456","235"]
I need to get an attribute that they all share. like "username".
What would be the best practice to get them all at once?
Is scan my only option knowing that I know all my partition keys?
Do I know the sort key? yes but only the beginning of it. Therefore I
don't think I could use batchGetItem.
amazon-dynamodb
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I've got a list of partition keys from one table.
userId["123","456","235"]
I need to get an attribute that they all share. like "username".
What would be the best practice to get them all at once?
Is scan my only option knowing that I know all my partition keys?
Do I know the sort key? yes but only the beginning of it. Therefore I
don't think I could use batchGetItem.
amazon-dynamodb
I've got a list of partition keys from one table.
userId["123","456","235"]
I need to get an attribute that they all share. like "username".
What would be the best practice to get them all at once?
Is scan my only option knowing that I know all my partition keys?
Do I know the sort key? yes but only the beginning of it. Therefore I
don't think I could use batchGetItem.
amazon-dynamodb
amazon-dynamodb
edited Nov 20 at 23:56
John Rotenstein
64.8k770113
64.8k770113
asked Nov 20 at 23:20
adimona
206
206
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.
A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.
If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression
along with the partition key.
For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str)
as the key condition expression.
Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
– adimona
Nov 21 at 0:45
1
No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).
– Matthew Pope
2 days ago
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.
A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.
If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression
along with the partition key.
For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str)
as the key condition expression.
Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
– adimona
Nov 21 at 0:45
1
No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).
– Matthew Pope
2 days ago
add a comment |
up vote
1
down vote
Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.
A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.
If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression
along with the partition key.
For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str)
as the key condition expression.
Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
– adimona
Nov 21 at 0:45
1
No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).
– Matthew Pope
2 days ago
add a comment |
up vote
1
down vote
up vote
1
down vote
Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.
A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.
If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression
along with the partition key.
For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str)
as the key condition expression.
Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.
A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.
If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression
along with the partition key.
For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str)
as the key condition expression.
answered Nov 21 at 0:30
Collin Dauphinee
10.5k12947
10.5k12947
Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
– adimona
Nov 21 at 0:45
1
No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).
– Matthew Pope
2 days ago
add a comment |
Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
– adimona
Nov 21 at 0:45
1
No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).
– Matthew Pope
2 days ago
Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
– adimona
Nov 21 at 0:45
Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
– adimona
Nov 21 at 0:45
1
1
No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).
– Matthew Pope
2 days ago
No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).
– Matthew Pope
2 days ago
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403095%2fhow-to-get-attribute-from-a-list-of-partition-keys-in-dynamodb-is-scan-my-only%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown