Azure Table Storage veya Cosmos DB üzerinde NoSQL anahtar-değer verilerini yönetmek için Azure Tables SDK for Java kullanarak tablo depolama uygulamaları geliştirin.
- GitHub yıldızları
- 3.194
- Dosyalar
- 2
- Son commit
- 11 Kas 2026
- Lisans
- MIT
- İzin verilen araçlar
- —
azure-data-tables-java skill ne işe yarar?
azure-data-tables-java bir agent skill'dir. Azure Table Storage veya Cosmos DB üzerinde NoSQL anahtar-değer verilerini yönetmek için Azure Tables SDK for Java kullanarak tablo depolama uygulamaları geliştirin.
Özet, skill'in SKILL.md dosyasından oluşturuldu.
azure-data-tables-java skilli hakkında
Bu Java SDK'nın temel işlevi, Azure ortamlarındaki NoSQL anahtar-değer verilerini yönetmektir. Geliştiriciler, ölçeklenebilir, şemasız ve yapılandırılmış veri depolama için Azure Table Storage veya Cosmos DB Table API ile etkileşime geçmek amacıyla bu araçları kullanabilirler. Bu SKILL, 252 özelliğe kadar satır içeren entity'leri işlemek için gerekli bileşenleri sağlar.
Bir geliştiricinin Java uygulamasında CRUD işlemleri uygulaması, tablo yaşam döngülerini yönetmesi veya toplu işlemler (batch transactions) gerçekleştirmesi gerektiğinde bir agent bu SKILL'i yüklemelidir. Tabloların kendisini yönetmek için TableServiceClient, tekil entity'leri yönetmek için ise TableClient kullanılır. Kimlik doğrulama; bağlantı dizeleri (connection strings), paylaşılan anahtarlar (shared keys), SAS token'ları veya depolama hesapları için DefaultAzureCredential gibi çeşitli yöntemlerle gerçekleştirilebilir.
Bu araç, hem Azure Table Storage hem de Cosmos DB'yi birleşik bir arayüz üzerinden destekleyerek öne çıkar. Performansı optimize etmek için Partition Key ve Row Key kullanımı, OData filtreleri ve select projeksiyonları ile verimli veri erişimine olanak tanır. Kullanıcılar, standart depolama için 1MB ve Cosmos DB için 2MB olan entity boyut sınırlarını göz önünde bulundurmalıdır.
Bir agent bununla neler yapabilir
- 1Atomik toplu işlemleri yürütmeAynı partition key'i paylaşmaları koşuluyla birden fazla entity işlemini tek bir işlem olarak gönderin.
- 2OData filtreleri ile veri sorgulamaFiltreler uygulayarak ve yalnızca gerekli özellikleri seçerek verilerin belirli alt kümelerini getirin.
Skill'in SKILL.md dosyasından yazılmıştır. Her kullanım durumu oradaki bir alıntı ile kontrol edilir.
azure-data-tables-java skill nasıl kurulur
Her komut, skill klasörünü istemcinin skills dizinine kopyalar. Yüklemek için istemciyi yeniden başlatın veya yeni bir oturum başlatın.azure-data-tables-java skill'ini Claude Code uygulamasına kur
~/.claude/skills/azure-data-tables-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java ~/.claude/skills/azure-data-tables-javaazure-data-tables-java skill'ini Claude Code (project) uygulamasına kur
.claude/skills/azure-data-tables-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java .claude/skills/azure-data-tables-javaazure-data-tables-java skill'ini Codex uygulamasına kur
~/.agents/skills/azure-data-tables-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java ~/.agents/skills/azure-data-tables-javaazure-data-tables-java skill'ini Gemini CLI uygulamasına kur
~/.gemini/skills/azure-data-tables-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java ~/.gemini/skills/azure-data-tables-javaazure-data-tables-java skill'ini Claude.ai uygulamasına kur
npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java azure-data-tables-java && zip -r azure-data-tables-java.zip azure-data-tables-java # claude.ai → Customize → Skills → + → Create skill → Upload a skill → azure-data-tables-java.zip
Otomatik kontroller
Çalıştırıldı 14 Kas 2026Tam rapor →Otomatik kontrollerimizi geçti. Bu bir güvenlik denetimi değil: bir ajanın çalıştırmasına izin vermeden önce betikleri okuyun. Kontroller nasıl çalışır
- Kaynak deposu bağlantılı ve erişilebilirmicrosoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java is public and reachablegithub.com/microsoft/skills/tree/HEAD/.github/plugins/azure- ↗Geçti
- Açık kaynak lisansı (OSI)MITspdx.org/licenses/MIT.html ↗Geçti
- Son bir yıl içinde commit veya sürüm mevcutLast commit 2026-11-11github.com/microsoft/skills/commits ↗Geçti
- Betiklerde indir-çalıştır veya kimlik bilgisi hırsızlığı yokNo scripts in the skill folderGeçti
- SKILL.md içinde gizli talimat yokNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/microsoft/skills/blob/HEAD/.github/plugins/azure- ↗Geçti
- Önceden izin verilen araçlar sınırlıNo pre-approved tools; the agent asks before using onegithub.com/microsoft/skills/blob/HEAD/.github/plugins/azure- ↗Geçti
SKILL.md
GitHub'da görüntüleAzure Tables SDK for Java
Build table storage applications using the Azure Tables SDK for Java. Works with both Azure Table Storage and Cosmos DB Table API.
Installation
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-data-tables</artifactId>
<version>12.6.0-beta.1</version>
</dependency>
Client Creation
With Connection String
import com.azure.data.tables.TableServiceClient;
import com.azure.data.tables.TableServiceClientBuilder;
import com.azure.data.tables.TableClient;
TableServiceClient serviceClient = new TableServiceClientBuilder()
.connectionString("<your-connection-string>")
.buildClient();
With Shared Key
import com.azure.core.credential.AzureNamedKeyCredential;
AzureNamedKeyCredential credential = new AzureNamedKeyCredential(
"<account-name>",
"<account-key>");
TableServiceClient serviceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.credential(credential)
.buildClient();
With SAS Token
TableServiceClient serviceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.sasToken("<sas-token>")
.buildClient();
With DefaultAzureCredential (Storage only)
import com.azure.core.credential.TokenCredential;
import com.azure.identity.AzureIdentityEnvVars;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.identity.ManagedIdentityCredentialBuilder;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
TokenCredential credential = new DefaultAzureCredentialBuilder()
.requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)
.build();
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/java/api/overview/azure/identity-readme?view=azure-java-stable#credential-classes
// TokenCredential credential = new ManagedIdentityCredentialBuilder().build();
TableServiceClient serviceClient = new TableServiceClientBuilder()
.endpoint("<your-table-account-url>")
.credential(credential)
.buildClient();
Key Concepts
- TableServiceClient: Manage tables (create, list, delete)
- TableClient: Manage entities within a table (CRUD)
- Partition Key: Groups entities for efficient queries
- Row Key: Unique identifier within a partition
- Entity: A row with up to 252 properties (1MB Storage, 2MB Cosmos)
Core Patterns
Create Table
// Create table (throws if exists)
TableClient tableClient = serviceClient.createTable("mytable");
// Create if not exists (no exception)
TableClient tableClient = serviceClient.createTableIfNotExists("mytable");
Get Table Client
// From service client
TableClient tableClient = serviceClient.getTableClient("mytable");
// Direct construction
TableClient tableClient = new TableClientBuilder()
.connectionString("<connection-string>")
.tableName("mytable")
.buildClient();
Create Entity
import com.azure.data.tables.models.TableEntity;
TableEntity entity = new TableEntity("partitionKey", "rowKey")
.addProperty("Name", "Product A")
.addProperty("Price", 29.99)
.addProperty("Quantity", 100)
.addProperty("IsAvailable", true);
tableClient.createEntity(entity);
Get Entity
TableEntity entity = tableClient.getEntity("partitionKey", "rowKey");
String name = (String) entity.getProperty("Name");
Double price = (Double) entity.getProperty("Price");
System.out.printf("Product: %s, Price: %.2f%n", name, price);
Update Entity
import com.azure.data.tables.models.TableEntityUpdateMode;
// Merge (update only specified properties)
TableEntity updateEntity = new TableEntity("partitionKey", "rowKey")
.addProperty("Price", 24.99);
tableClient.updateEntity(updateEntity, TableEntityUpdateMode.MERGE);
// Replace (replace entire entity)
TableEntity replaceEntity = new TableEntity("partitionKey", "rowKey")
.addProperty("Name", "Product A Updated")
.addProperty("Price", 24.99)
.addProperty("Quantity", 150);
tableClient.updateEntity(replaceEntity, TableEntityUpdateMode.REPLACE);
Upsert Entity
// Insert or update (merge mode)
tableClient.upsertEntity(entity, TableEntityUpdateMode.MERGE);
// Insert or replace
tableClient.upsertEntity(entity, TableEntityUpdateMode.REPLACE);
Delete Entity
tableClient.deleteEntity("partitionKey", "rowKey");
List Entities
import com.azure.data.tables.models.ListEntitiesOptions;
// List all entities
for (TableEntity entity : tableClient.listEntities()) {
System.out.printf("%s - %s%n",
entity.getPartitionKey(),
entity.getRowKey());
}
// With filtering and selection
ListEntitiesOptions options = new ListEntitiesOptions()
.setFilter("PartitionKey eq 'sales'")
.setSelect("Name", "Price");
for (TableEntity entity : tableClient.listEntities(options, null, null)) {
System.out.printf("%s: %.2f%n",
entity.getProperty("Name"),
entity.getProperty("Price"));
}
Query with OData Filter
// Filter by partition key
ListEntitiesOptions options = new ListEntitiesOptions()
.setFilter("PartitionKey eq 'electronics'");
// Filter with multiple conditions
options.setFilter("PartitionKey eq 'electronics' and Price gt 100");
// Filter with comparison operators
options.setFilter("Quantity ge 10 and Quantity le 100");
// Top N results
options.setTop(10);
for (TableEntity entity : tableClient.listEntities(options, null, null)) {
System.out.println(entity.getRowKey());
}
Batch Operations (Transactions)
import com.azure.data.tables.models.TableTransactionAction;
import com.azure.data.tables.models.TableTransactionActionType;
import java.util.Arrays;
// All entities must have same partition key
List<TableTransactionAction> actions = Arrays.asList(
new TableTransactionAction(
TableTransactionActionType.CREATE,
new TableEntity("batch", "row1").addProperty("Name", "Item 1")),
new TableTransactionAction(
TableTransactionActionType.CREATE,
new TableEntity("batch", "row2").addProperty("Name", "Item 2")),
new TableTransactionAction(
TableTransactionActionType.UPSERT_MERGE,
new TableEntity("batch", "row3").addProperty("Name", "Item 3"))
);
tableClient.submitTransaction(actions);
List Tables
import com.azure.data.tables.models.TableItem;
import com.azure.data.tables.models.ListTablesOptions;
// List all tables
for (TableItem table : serviceClient.listTables()) {
System.out.println(table.getName());
}
// Filter tables
ListTablesOptions options = new ListTablesOptions()
.setFilter("TableName eq 'mytable'");
for (TableItem table : serviceClient.listTables(options, null, null)) {
System.out.println(table.getName());
}
Delete Table
serviceClient.deleteTable("mytable");
Typed Entities
public class Product implements TableEntity {
private String partitionKey;
private String rowKey;
private OffsetDateTime timestamp;
private String eTag;
private String name;
private double price;
// Getters and setters for all fields
@Override
public String getPartitionKey() { return partitionKey; }
@Override
public void setPartitionKey(String partitionKey) { this.partitionKey = partitionKey; }
@Override
public String getRowKey() { return rowKey; }
@Override
public void setRowKey(String rowKey) { this.rowKey = rowKey; }
// ... other getters/setters
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public double getPrice() { return price; }
public void setPrice(double price) { this.price = price; }
}
// Usage
Product product = new Product();
product.setPartitionKey("electronics");
product.setRowKey("laptop-001");
product.setName("Laptop");
product.setPrice(999.99);
tableClient.createEntity(product);
Error Handling
import com.azure.data.tables.models.TableServiceException;
try {
tableClient.createEntity(entity);
} catch (TableServiceException e) {
System.out.println("Status: " + e.getResponse().getStatusCode());
System.out.println("Error: " + e.getMessage());
// 409 = Conflict (entity exists)
// 404 = Not Found
}
Environment Variables
# Storage Account
AZURE_TABLES_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=... # Alternative to Entra ID auth
AZURE_TABLES_ENDPOINT=https://<account>.table.core.windows.net # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
# Cosmos DB Table API
COSMOS_TABLE_ENDPOINT=https://<account>.table.cosmosdb.azure.com # Alternative endpoint for Cosmos DB Table API
Best Practices
- Partition Key Design: Choose keys that distribute load evenly
- Batch Operations: Use transactions for atomic multi-entity updates
- Query Optimization: Always filter by PartitionKey when possible
- Select Projection: Only select needed properties for performance
- Entity Size: Keep entities under 1MB (Storage) or 2MB (Cosmos)
Trigger Phrases
- "Azure Tables Java"
- "table storage SDK"
- "Cosmos DB Table API"
- "NoSQL key-value storage"
- "partition key row key"
- "table entity CRUD"
Bu becerideki dosyalar
2azure-data-tables-java skill soruları
azure-data-tables-java skill'ini Claude Code uygulamasına nasıl kurarım?
npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-data-tables-java ~/.claude/skills/azure-data-tables-java komutunu çalıştırın. Claude Code, skill'leri ~/.claude/skills (tüm projeler) veya .claude/skills (tek proje) konumundan yükler ve açıklaması görevle eşleştiğinde skill'i kullanır.
azure-data-tables-java skill'ini hangi istemciler kullanabilir?
Agent Skills biçimini okuyan her istemci: Claude Code, Codex, Gemini CLI ve claude.ai (ZIP olarak yükleyin). Skill içindeki betikler yalnızca istemcinin kod çalıştırmaya izin verdiği yerlerde çalışır.
Bu SDK ile hangi servisleri kullanabilirim?
SDK, hem Azure Table Storage hem de Cosmos DB Table API ile çalışır.