# Cosmos DB SDK Connection Patterns

## Node.js

```javascript
const { CosmosClient } = require("@azure/cosmos");

const client = new CosmosClient(process.env.COSMOS_CONNECTION_STRING);
const database = client.database("appdb");
const container = database.container("items");

// Query example
const { resources } = await container.items
  .query("SELECT * FROM c WHERE c.userId = @userId", {
    parameters: [{ name: "@userId", value: userId }]
  })
  .fetchAll();
```

## Python

```python
from azure.cosmos import CosmosClient
import os

client = CosmosClient.from_connection_string(os.environ["COSMOS_CONNECTION_STRING"])
database = client.get_database_client("appdb")
container = database.get_container_client("items")

# Query example
items = container.query_items(
    query="SELECT * FROM c WHERE c.userId = @userId",
    parameters=[{"name": "@userId", "value": user_id}]
)
```

## .NET

```csharp
using Microsoft.Azure.Cosmos;

var client = new CosmosClient(Environment.GetEnvironmentVariable("COSMOS_CONNECTION_STRING"));
var database = client.GetDatabase("appdb");
var container = database.GetContainer("items");

// Query example
var query = new QueryDefinition("SELECT * FROM c WHERE c.userId = @userId")
    .WithParameter("@userId", userId);
var iterator = container.GetItemQueryIterator<dynamic>(query);
```

## Best Practices

| Practice | Reason |
|----------|--------|
| Reuse client instances | Connection pooling |
| Use parameterized queries | SQL injection prevention |
| Set appropriate timeouts | Handle transient failures |
| Enable diagnostics in dev | Debug RU consumption |
