
亚马逊
使用 DynamoDB 查询全局二级索引
DynamoDB 是亚马逊提供的一个全托管的 NoSQL 数据库服务,它以高可扩展性和低延迟的特点而闻名。在 DynamoDB 中,我们可以使用全局二级索引来提高数据查询的效率。本文将介绍如何在 DynamoDB 中查询全局二级索引,并提供相关的案例代码。什么是全局二级索引?在 DynamoDB 中,每个表都可以定义一个或多个全局二级索引。全局二级索引是一个与原始表无关的数据结构,它允许我们以非主键属性作为查询条件来检索数据。通过使用全局二级索引,我们可以在不扫描整个表的情况下,快速地查找到符合条件的数据。如何创建全局二级索引?在 DynamoDB 中创建全局二级索引非常简单。首先,我们需要在表的定义中添加一个全局二级索引的定义,并指定需要作为索引的非主键属性。然后,在数据插入或更新时,DynamoDB 会自动维护全局二级索引的数据。下面是一个创建全局二级索引的例子:const AWS = require('aws-sdk');AWS.config.update({ region: 'us-west-2', accessKeyId: 'YOUR_ACCESS_KEY', secretAccessKey: 'YOUR_SECRET_ACCESS_KEY'});const dynamodb = new AWS.DynamoDB();const params = { AttributeDefinitions: [ { AttributeName: 'emAIl', AttributeType: 'S' }, { AttributeName: 'age', AttributeType: 'N' }, ], TableName: 'users', KeySchema: [ { AttributeName: 'emAIl', KeyType: 'HASH' }, ], ProvisionedThroughput: { ReadCapacityUnits: 5, WriteCapacityUnits: 5, }, GlobalSecondaryIndexes: [ { IndexName: 'ageIndex', KeySchema: [ { AttributeName: 'age', KeyType: 'HASH' }, ], Projection: { ProjectionType: 'ALL', }, ProvisionedThroughput: { ReadCapacityUnits: 5, WriteCapacityUnits: 5, }, }, ],};dynamodb.createTable(params, (err, data) => { if (err) { console.error('Unable to create table. Error JSON:', JSON.stringify(err, null, 2)); } else { console.log('Created table. Table description JSON:', JSON.stringify(data, null, 2)); }});在上面的例子中,我们创建了一个名为 users 的表,并定义了一个名为 ageIndex 的全局二级索引。该索引以 age 属性作为主键,允许我们根据用户的年龄来查询数据。如何查询全局二级索引?在 DynamoDB 中查询全局二级索引非常简单。我们可以使用 query 操作来查询全局二级索引。下面是一个查询全局二级索引的例子:const AWS = require('aws-sdk');AWS.config.update({ region: 'us-west-2', accessKeyId: 'YOUR_ACCESS_KEY', secretAccessKey: 'YOUR_SECRET_ACCESS_KEY'});const dynamodb = new AWS.DynamoDB.DocumenTCLient();const params = { TableName: 'users', IndexName: 'ageIndex', KeyConditionExpression: 'age = :age', ExpressionAttributeValues: { ':age': 30, },};dynamodb.query(params, (err, data) => { if (err) { console.error('Unable to query. Error JSON:', JSON.stringify(err, null, 2)); } else { console.log('Query succeeded. Data:', JSON.stringify(data, null, 2)); }});在上面的例子中,我们使用 query 操作来查询名为 ageIndex 的全局二级索引。我们指定了查询条件 age = 30,表示要查询年龄为 30 的用户。查询结果将返回符合条件的用户数据。通过使用全局二级索引,我们可以在 DynamoDB 中以非主键属性作为查询条件来检索数据,大大提高了查询的效率。本文介绍了如何在 DynamoDB 中创建全局二级索引,并提供了一个查询全局二级索引的案例代码。希望本文对你理解 DynamoDB 的全局二级索引有所帮助。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号