Biblioteca cliente de Azure Tables para Java: versión 12.3.16
Azure Tables es un servicio que almacena datos NoSQL estructurados en la nube, lo que proporciona un almacén de claves y atributos con un diseño sin esquemas. Azure Tables proporciona a los desarrolladores flexibilidad y escalabilidad con todas las mejores partes de la nube de Azure.
Código | fuentePaquete (Maven) | Documentación | de referencia de API | Documentación del productoMuestras
Introducción
Inclusión del paquete
Inclusión del archivo BOM
Incluya azure-sdk-bom en el proyecto para depender de la versión de disponibilidad general (GA) de la biblioteca. En el fragmento de código siguiente, reemplace el marcador de posición {bom_version_to_target} por el número de versión. Para más información sobre la lista de materiales, consulte el archivo Léame bom del SDK de AZURE.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
y, a continuación, incluya la dependencia directa en la sección de dependencias sin la etiqueta de versión, como se muestra a continuación.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-data-tables</artifactId>
</dependency>
</dependencies>
Inclusión de dependencias directas
Si desea depender de una versión determinada de la biblioteca que no está presente en la lista de materiales, agregue la dependencia directa al proyecto como se indica a continuación.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-data-tables</artifactId>
<version>12.3.16</version>
</dependency>
Requisitos previos
- Kit de desarrollo de Java (JDK) con la versión 8 o posterior
- Suscripción de Azure
- Una cuenta de Azure Storage existente o una cuenta de Table API de Azure Cosmos DB
Creación de una cuenta de almacenamiento
Para crear una cuenta de almacenamiento, puede usar Azure Portal o la CLI de Azure.
az storage account create \
--resource-group <resource-group-name> \
--name <storage-account-name> \
--location <location>
La dirección URL de la cuenta de almacenamiento, identificada posteriormente como <your-table-account-url>
, tendría el formato siguiente http(s)://<storage-account-name>.table.core.windows.net
.
Creación de una cuenta de Table API de Cosmos DB
Para crear una cuenta de Table API de Cosmos DB, puede usar Azure Portal o la CLI de Azure.
az cosmosdb create \
--resource-group <resource-group-name> \
--name <cosmosdb-account-name> \
--capabilities EnableTable
La dirección URL de la cuenta de Table API, identificada posteriormente como <your-table-account-url>
, tendría el formato siguiente http(s)://<cosmosdb-account-name>.table.cosmosdb.azure.com
.
Autenticar el cliente
Todas las solicitudes realizadas al servicio Tables deben autorizarse mediante una cadena de conexión, credenciales de clave con nombre, firma de acceso compartido o credenciales de token. Los ejemplos siguientes muestran el uso de estos métodos.
Nota: Actualmente, solo los puntos de conexión de la API de Azure Storage admiten la autorización de AAD mediante credenciales de token.
Cadena de conexión
Un cadena de conexión incluye la información de autenticación necesaria para que la aplicación acceda a los datos de una tabla de Azure en tiempo de ejecución mediante la autorización de clave compartida. Consulte Autenticación con una cadena de conexión para obtener un ejemplo de cómo usar un cadena de conexión con .TableServiceClient
Puede obtener el cadena de conexión desde Azure Portal (haga clic en Claves de acceso en Configuración en la hoja Cuenta de almacenamiento del portal o Cadena de conexión en Configuración en la hoja Cuenta de Cosmos DB del portal) o mediante la CLI de Azure:
# Storage account
az storage account show-connection-string \
--resource-group <resource-group-name> \
--name <storage-account-name>
# Cosmos DB Table API account
az cosmosdb list-connection-strings \
--resource-group <resource-group-name> \
--name <cosmosdb-account-name>
Credencial de clave compartida
La autorización de clave compartida se basa en las claves de acceso de la cuenta y otros parámetros para generar una cadena de firma cifrada que se pasará en la solicitud en el encabezado de autorización. Consulte Autenticación con una credencial de clave compartida para obtener un ejemplo de cómo usar la autorización de clave con nombre con .TableServiceClient
Para usar la autorización de clave con nombre, necesitará el nombre y la dirección URL de la cuenta, así como una clave de acceso de la cuenta. Puede obtener la clave de acceso principal desde Azure Portal (haga clic en Claves de acceso en Configuración en la hoja Cuenta de almacenamiento del portal o Cadena de conexión en Configuración en la hoja Cuenta de Cosmos DB del portal) o mediante la CLI de Azure:
# Storage account
az storage account keys list \
--resource-group <resource-group-name> \
--account-name <storage-account-name>
# Cosmos DB Table API account
az cosmosdb list-keys \
--resource-group <resource-group-name> \
--name <cosmosdb-account-name>
Firma de acceso compartido (SAS)
Una firma de acceso compartido permite a los administradores delegar acceso granular a una tabla de Azure sin compartir la clave de acceso directamente. Puede controlar qué recursos puede tener acceso el cliente, qué permisos tiene en esos recursos y cuánto tiempo es válido la SAS, entre otros parámetros. Se basa en las claves de acceso de la cuenta y otros parámetros para generar una cadena de firma cifrada que se pasa en la solicitud en la cadena de consulta. Consulte Autenticación con una firma de acceso compartido (SAS) para obtener un ejemplo de cómo usar firmas de acceso compartido con .TableServiceClient
Para usar la autorización del token de SAS, necesitará el nombre y la dirección URL de la cuenta, así como la SAS. Puede obtener la SAS desde Azure Portal (haga clic en Firma de acceso compartido en Configuración en la hoja Cuenta de almacenamiento del portal) o mediante la CLI de Azure:
# Account-level SAS
az storage account generate-sas \
--account-name <storage-or-cosmosdb-account-name> \
--services t \
--resource-types <resource-types> \
--permissions <permissions> \
--expiry <expiry-date>
# Table-level SAS
az storage table generate-sas \
--name <table-name>
TokenCredential
Azure Tables proporciona integración con Azure Active Directory (AAD) para la autenticación basada en identidades de las solicitudes en Table service cuando el destino es un punto de conexión de Storage. Con AAD, puede usar el control de acceso basado en rol (RBAC) para conceder acceso a los recursos de Azure Table a usuarios, grupos o aplicaciones.
Para acceder a un recurso de tabla con , TokenCredential
la identidad autenticada debe tener el rol "Colaborador de datos de tabla de almacenamiento" o "Lector de datos de tabla de almacenamiento".
Con el azure-identity
paquete, puede autorizar sin problemas las solicitudes en entornos de desarrollo y producción.
Para más información sobre la integración de Azure AD en Azure Storage, consulte el archivo Léame de identidad de Azure.
Conceptos clave
- TableServiceClient :
TableServiceClient
es un objeto de cliente que permite interactuar con Table Service para crear, enumerar y eliminar tablas. - TableClient : es
TableClient
un objeto de cliente que permite interactuar con una tabla específica para crear, upsert, actualizar, obtener, enumerar y eliminar entidades dentro de ella. - Tabla : una tabla es una colección de entidades. Las tablas no exigen un esquema sobre entidades, lo que significa que una única tabla puede contener entidades que dispongan de diferentes conjuntos de propiedades.
- Entidad : una entidad es un conjunto de propiedades, similar a una fila de base de datos. Una entidad en Azure Storage puede tener hasta 1 MB. Una entidad en Azure Cosmos DB puede tener hasta 2 MB. Una entidad tiene una clave de partición y una clave de fila que identifican de forma única la entidad dentro de la tabla.
- Propiedades : una propiedad es un par nombre-valor. Cada entidad puede incluir hasta 252 propiedades para almacenar datos. Cada entidad dispone también de tres propiedades del sistema que especifican una clave de partición, una clave de fila y una marca de tiempo.
- Clave de partición : la clave de partición de una entidad identifica la partición dentro de la tabla a la que pertenece la entidad. Pueden realizarse consultas en las entidades con la misma partición de manera más rápida e insertarse o actualizarse en operaciones atómicas.
- Clave de fila: la clave de fila de una entidad es su identificador único dentro de una partición.
Entre los usos comunes del servicio Tables se incluyen:
- Almacenamiento de TB de datos estructurados capaces de ofrecer servicio a aplicaciones de escalado web
- Almacenamiento de conjuntos de datos que no requieren combinaciones complejas, claves externas o procedimientos almacenados y se pueden des normalizar para un acceso rápido
- Consulta rápida de datos mediante un índice agrupado
- Acceso a datos mediante el protocolo OData
Ejemplos
- Autenticación de un cliente
- Creación, enumeración y eliminación de tablas de Azure
- Crear, enumerar y eliminar entidades de tabla
Autenticación de un cliente
Autenticación con un cadena de conexión
Para usar un cadena de conexión para autorizar al cliente, llame al método del connectionString
generador con el cadena de conexión.
TableServiceClient tableServiceClient = new TableServiceClientBuilder()
.connectionString("<your-connection-string>")
.buildClient();
Autenticación con una clave compartida
Para usar una clave compartida para autorizar al cliente, cree una instancia de con el nombre de la cuenta y la clave de AzureNamedKeyCredential
acceso. Llame al método del generador con la dirección URL de endpoint
la cuenta y el credential
método con el AzureNamedKeyCredential
objeto que creó.
AzureNamedKeyCredential credential = new AzureNamedKeyCredential("<your-account-name>", "<account-access-key>");
TableServiceClient tableServiceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.credential(credential)
.buildClient();
Autenticación con una firma de acceso compartido (SAS)
Para usar una SAS para autorizar al cliente, llame al método del generador con la dirección URL de endpoint
la cuenta y el método con la sasToken
SAS.
TableServiceClient tableServiceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.sasToken("<sas-token-string>")
.buildClient();
Autenticación con credenciales de token
Para autorizar al cliente a través de AAD, cree una instancia de una clase de credenciales que implemente TokenCredential
. Llame al método del generador con la dirección URL de endpoint
la cuenta y el credential
método con el TokenCredential
objeto que creó.
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
TableServiceClient tableServiceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.credential(tokenCredential)
.buildClient();
Creación, enumeración y eliminación de tablas de Azure
Cree un elemento TableServiceClient
Construya un TableServiceClient
mediante la creación de una instancia de TableServiceClientBuilder
y, a continuación, llame a los métodos o buildAsyncClient
del buildClient
generador.
TableServiceClient tableServiceClient = new TableServiceClientBuilder()
.connectionString("<your-connection-string>") // or use any of the other authentication methods
.buildClient();
Creación de una tabla
Cree una tabla llamando al TableServiceClient
método de createTable
. Se devolverá un TableClient
, este cliente permite realizar operaciones en la tabla. Se producirá una excepción si existe una tabla con el nombre proporcionado.
TableClient tableClient = tableServiceClient.createTable(tableName);
Como alternativa, puede llamar al createTableIfNotExists
método que creará la tabla solo si no existe dicha tabla y no produce una excepción. TableClient
También se devolverá un elemento .
TableClient tableClient = tableServiceClient.createTableIfNotExists(tableName);
Enumeración de tablas
Enumere o consulte el conjunto de tablas existentes llamando al TableServiceClient
método del listTables
, pasando opcionalmente una ListTablesOptions
instancia para filtrar o limitar los resultados de la consulta. Consulte Opciones de consulta admitidas para obtener más información sobre las opciones de consulta admitidas.
ListTablesOptions options = new ListTablesOptions()
.setFilter(String.format("TableName eq '%s'", tableName));
for (TableItem tableItem : tableServiceClient.listTables(options, null, null)) {
System.out.println(tableItem.getName());
}
Eliminar una tabla
Elimine una tabla llamando al TableServiceClient
método de deleteTable
.
tableServiceClient.deleteTable(tableName);
Crear, enumerar y eliminar entidades de tabla
Cree un elemento TableClient
Construya un TableClient
mediante la creación de una instancia de TableClientBuilder
, llamando al método del tableName
generador con el nombre de la tabla y, a continuación, llamando a sus buildClient
métodos o buildAsyncClient
.
TableClient tableClient = new TableClientBuilder()
.connectionString("<your-connection-string>") // or use any of the other authentication methods
.tableName(tableName)
.buildClient();
Como alternativa, TableClient
se puede recuperar de un existente TableServiceClient
mediante una llamada a su getTableClient
método .
TableClient tableClient = tableServiceClient.getTableClient(tableName);
Crear una entidad
Cree una nueva TableEntity
instancia, proporcionando la clave de partición y la clave de fila de la entidad que se va a crear, agregando opcionalmente propiedades al objeto creado. A continuación, pase el objeto al TableClient
método de .createEntity
Se producirá una excepción si existe una entidad con la clave de partición y la clave de fila proporcionadas dentro de la tabla.
TableEntity entity = new TableEntity(partitionKey, rowKey)
.addProperty("Product", "Marker Set")
.addProperty("Price", 5.00)
.addProperty("Quantity", 21);
tableClient.createEntity(entity);
Entidades de lista
Enumere o consulte el conjunto de entidades dentro de la tabla llamando al TableClient
método de listEntities
, pasando opcionalmente una ListEntitiesOptions
instancia para filtrar, seleccionar o limitar los resultados de la consulta. Consulte Opciones de consulta admitidas para obtener más información sobre las opciones de consulta admitidas.
List<String> propertiesToSelect = new ArrayList<>();
propertiesToSelect.add("Product");
propertiesToSelect.add("Price");
ListEntitiesOptions options = new ListEntitiesOptions()
.setFilter(String.format("PartitionKey eq '%s'", partitionKey))
.setSelect(propertiesToSelect);
for (TableEntity entity : tableClient.listEntities(options, null, null)) {
Map<String, Object> properties = entity.getProperties();
System.out.printf("%s: %.2f%n", properties.get("Product"), properties.get("Price"));
}
Eliminación de una entidad
Elimine una entidad llamando al TableClient
método de .deleteEntity
tableClient.deleteEntity(partitionKey, rowKey);
Solución de problemas
General
Al interactuar con el servicio Tables mediante la biblioteca de Tablas de Azure para Java, los errores devueltos por el servicio corresponden a los mismos códigos de estado HTTP devueltos para las solicitudes de API REST .
Por ejemplo, si intenta crear una tabla que ya existe, se devuelve un 409
error, que indica "Conflicto".
// Create the table if it doesn't already exist.
tableServiceClient.createTableIfNotExists(tableName);
// Now attempt to create the same table unconditionally.
try {
tableServiceClient.createTable(tableName);
} catch (TableServiceException e) {
System.out.println(e.getResponse().getStatusCode()); // 409
}
Registro
La habilitación del registro puede ayudar a descubrir información útil sobre los errores. Para ver un registro de solicitudes y respuestas HTTP, establezca la AZURE_LOG_LEVEL
variable de entorno en el nivel de detalle deseado. Consulte LogLevel para obtener una descripción de los niveles de registro disponibles.
Pasos siguientes
Empiece a trabajar con nuestros ejemplos de table.
Contribuciones
Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución.
Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.
Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.