DynamoDB - cómo comprobar que una tabla existente está vacío o no vacío

jbwheatley:

Estoy tratando de implementar una función que dado un DynamoDB y el nombre de una tabla sé que existe en la base de datos, determina si esta tabla está vacía o no.

Espero que la firma se vea como la siguiente en Java:

public Boolean isEmpty(DynamoDB database, String tableName) = ???

Supongamos por los efectos de esta pregunta que la tabla tiene una clave principal que consta de un solo atributo de tipo entero llamado "identificación de usuario".

Soy consciente de que se puede utilizar una exploración para buscar en una mesa, pero yo (a) No se que la expresión se vería así, y (b) necesita que sea limitado a un solo elemento, de modo que nosotros no 't tiene que escanear toda la tabla (que puede ser grande) en el caso de que es no vacío.

EDITAR:

Debería quizá esté utilizando una AmazonDynamoDBen mi constructor lugar, en vez de una DynamoDB? El primero tiene un scanmétodo que toma un ScanRequest- para los que se pueden crear fácilmente usando un límite .limit(1)- mientras que para este último que haría algo así database.getTable(tableName).scan(...), pero esta exploración toma una ScanSpecpara la que no me queda claro cómo establecer un límite para.

jbwheatley:

En respuesta a mi propia pregunta, me encontré con lo siguiente: Diferencia entre las clases AmazonDynamoDBClient y DynamoDB en su SDK Java?

El DynamoDBestaba tratando de uso es simplemente una envoltura alrededor AmazonDynamoDBque proporciona una API ligeramente diferente. Utilizando el AmazonDynamoDBlugar hace que la implementación de esta función mucho más fácil, y debe ser algo como esto (disculpen la mala código Java, en realidad estoy escribiendo esto en Scala):

public Boolean isEmpty(AmazonDynamoDB database, String tableName) = {
   ScanRequest scanRequest = new ScanRequest().withTableName(tableName).withLimit(1);
   return database.scan(scanRequest).getCount == 0;
}

O, en Scala:

def isEmpty(database: AmazonDynamoDB, tableName: String): Boolean = {
   val scanRequest = new ScanRequest().withTableName(tableName).withLimit(1)
   database.scan(scanRequest).getCount == 0
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=217807&siteId=1
Recomendado
Clasificación