{"id":4817,"date":"2025-08-26T12:37:24","date_gmt":"2025-08-26T12:37:24","guid":{"rendered":"https:\/\/uplatz.com\/blog\/?p=4817"},"modified":"2025-08-27T02:46:07","modified_gmt":"2025-08-27T02:46:07","slug":"azure-cosmos-db-pocket-book","status":"publish","type":"post","link":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/","title":{"rendered":"Azure Cosmos DB Pocket Book"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images-1024x576.png\" alt=\"Azure Cosmos DB Pocket Book\" width=\"840\" height=\"473\" class=\"alignnone size-large wp-image-4870\" srcset=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images-1024x576.png 1024w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images-300x169.png 300w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images-768x432.png 768w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images.png 1280w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><br \/>\n<!-- Azure Cosmos DB Pocket Book \u2014 Uplatz (50 Cards, Wide Layout, Readable Code, Scoped Styles) --><\/p>\n<div style=\"margin: 16px 0;\">\n<style>\n    .wp-nodejs-pb { font-family: Arial, sans-serif; max-width: 1320px; margin:0 auto; }\n    .wp-nodejs-pb .heading{\n      background: linear-gradient(135deg, #e0f2fe, #ccfbf1); \/* lighter gradient *\/\n      color:#0f172a; padding:22px 24px; border-radius:14px;\n      text-align:center; margin-bottom:18px; box-shadow:0 8px 20px rgba(0,0,0,.08);\n      border:1px solid #cbd5e1;\n    }\n    .wp-nodejs-pb .heading h2{ margin:0; font-size:2.1rem; letter-spacing:.2px; }\n    .wp-nodejs-pb .heading p{ margin:6px 0 0; font-size:1.02rem; opacity:.9; }<\/p>\n<p>    \/* Wide, dense grid *\/\n    .wp-nodejs-pb .grid{\n      display:grid; gap:14px;\n      grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n    }\n    @media (min-width:1200px){\n      .wp-nodejs-pb .grid{ grid-template-columns: repeat(3, 1fr); }\n    }<\/p>\n<p>    .wp-nodejs-pb .section-title{\n      grid-column:1\/-1; background:#f8fafc; border-left:8px solid #0ea5e9;\n      padding:12px 16px; border-radius:10px; font-weight:700; color:#0f172a; font-size:1.08rem;\n      box-shadow:0 2px 8px rgba(0,0,0,.05); border:1px solid #e2e8f0;\n    }\n    .wp-nodejs-pb .card{\n      background:#ffffff; border-left:6px solid #0ea5e9;\n      padding:18px; border-radius:12px;\n      box-shadow:0 6px 14px rgba(0,0,0,.06);\n      transition:transform .12s ease, box-shadow .12s ease;\n      border:1px solid #e5e7eb;\n    }\n    .wp-nodejs-pb .card:hover{ transform: translateY(-3px); box-shadow:0 10px 22px rgba(0,0,0,.08); }\n    .wp-nodejs-pb .card h3{ margin:0 0 10px; font-size:1.12rem; color:#0f172a; }\n    .wp-nodejs-pb .card p{ margin:0; font-size:.96rem; color:#334155; line-height:1.62; }<\/p>\n<p>    \/* Color helpers *\/\n    .bg-blue { border-left-color:#0ea5e9 !important; background:#f0f9ff !important; }\n    .bg-green{ border-left-color:#10b981 !important; background:#f0fdf4 !important; }\n    .bg-amber{ border-left-color:#f59e0b !important; background:#fffbeb !important; }\n    .bg-violet{ border-left-color:#8b5cf6 !important; background:#f5f3ff !important; }\n    .bg-rose{ border-left-color:#ef4444 !important; background:#fff1f2 !important; }\n    .bg-cyan{ border-left-color:#06b6d4 !important; background:#ecfeff !important; }\n    .bg-lime{ border-left-color:#16a34a !important; background:#f0fdf4 !important; }\n    .bg-orange{ border-left-color:#f97316 !important; background:#fff7ed !important; }\n    .bg-indigo{ border-left-color:#6366f1 !important; background:#eef2ff !important; }\n    .bg-emerald{ border-left-color:#22c55e !important; background:#ecfdf5 !important; }\n    .bg-slate{ border-left-color:#334155 !important; background:#f8fafc !important; }<\/p>\n<p>    \/* Utilities *\/\n    .tight ul{ margin:0; padding-left:18px; }\n    .tight li{ margin:4px 0; }\n    .mono{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }\n    .kbd{ background:#e5e7eb; border:1px solid #cbd5e1; padding:1px 6px; border-radius:6px; font-family:ui-monospace,monospace; font-size:.88em; }\n    .muted{ color:#64748b; }\n    .wp-nodejs-pb code{ background:#f1f5f9; padding:0 4px; border-radius:4px; border:1px solid #e2e8f0; }\n    .wp-nodejs-pb pre{\n      background:#f5f5f5; color:#111827; border:1px solid #e5e7eb;\n      padding:12px; border-radius:8px; overflow:auto; font-size:.92rem; line-height:1.55;\n    }\n    .q{font-weight:700;}\n    .qa p{ margin:8px 0; }\n    .qa b{ color:#0f172a; }\n  <\/style>\n<div class=\"wp-nodejs-pb\">\n<div class=\"heading\">\n<h2>Azure Cosmos DB Pocket Book \u2014 Uplatz<\/h2>\n<p>      50 deep-dive flashcards \u2022 Wide layout \u2022 Fewer scrolls \u2022 20+ Interview Q&amp;A \u2022 Readable code examples\n    <\/p><\/div>\n<div class=\"grid\">\n      <!-- ===================== SECTION 1 ===================== --><\/p>\n<div class=\"section-title\">Section 1 \u2014 Fundamentals<\/div>\n<div class=\"card bg-blue\">\n<h3>1) What is Azure Cosmos DB?<\/h3>\n<p>        Globally distributed, multi-model NoSQL database service with elastic scale, low latency, and turnkey replication. APIs: Core (SQL), MongoDB, Cassandra, Gremlin, Table, PostgreSQL (for Hyperscale).<\/p>\n<pre><code class=\"mono\"># Provision via Azure Portal \/ CLI\r\naz cosmosdb create -g rg -n acct<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>2) Key Concepts<\/h3>\n<p>        Account \u2192 Database \u2192 Container (collection\/table\/graph) \u2192 Items. Partition key distributes data; RU\/s define throughput. Consistency levels balance latency vs correctness.<\/p>\n<pre><code class=\"mono\">pk: \/tenantId  # common choice<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-amber\">\n<h3>3) Multi-Model<\/h3>\n<p>        Choose API that matches your app: Core(SQL) for JSON docs+SQL, Mongo API for Mongo drivers, Cassandra API for wide-column, Gremlin for graphs, Table for key\/attr.<\/p>\n<pre><code class=\"mono\"># Core(SQL) sample item\r\n{ \"id\":\"u1\",\"tenantId\":\"t1\",\"name\":\"Ada\" }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>4) Global Distribution<\/h3>\n<p>        Add regions for read\/write closer to users; enable multi-region writes for active-active. Automatic failover with priorities.<\/p>\n<pre><code class=\"mono\">az cosmosdb update -n acct -g rg --locations regionName=eastus<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>5) Consistency Levels<\/h3>\n<p>        Strong, Bounded Staleness, Session (default), Consistent Prefix, Eventual. Session gives read-your-writes for a client session.<\/p>\n<pre><code class=\"mono\">consistency: \"Session\"<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>6) Throughput (RU\/s)<\/h3>\n<p>        RU = normalized cost for reads\/writes\/query. Provision per container or database, or use autoscale to scale 10%\u2013100% of a max RU.<\/p>\n<pre><code class=\"mono\">autoscaleMaxThroughput: 4000<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-lime\">\n<h3>7) Partitioning<\/h3>\n<p>        Choose a high-cardinality, evenly distributed partition key. Avoid \u201chot\u201d partitions; model for your access patterns.<\/p>\n<pre><code class=\"mono\">\/tenantId or \/userId over \/country<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-orange\">\n<h3>8) Latency Targets<\/h3>\n<p>        P50 reads &lt; 10ms, writes &lt; 10ms (in-region). Achieve with good PK choice, small docs, and point reads over cross-partition scans.<\/p>\n<pre><code class=\"mono\">GET by id+pk faster than query<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>9) SDKs<\/h3>\n<p>        First-class SDKs for .NET, Java, Node, Python. Use latest client; enable retries, diagnostics, and connection pooling.<\/p>\n<pre><code class=\"mono\">npm i @azure\/cosmos<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-emerald\">\n<h3>10) Q&amp;A \u2014 \u201cWhen to choose Cosmos DB?\u201d<\/h3>\n<p>        <span class=\"q\">Answer:<\/span> Global apps needing low latency, elastic scale, and schema-less JSON; when you need multi-model APIs and turnkey multi-region with SLAs.<\/p><\/div>\n<p>      <!-- ===================== SECTION 2 ===================== --><\/p>\n<div class=\"section-title\">Section 2 \u2014 Data Model, Queries &amp; APIs<\/div>\n<div class=\"card bg-blue\">\n<h3>11) Containers &amp; Indexing<\/h3>\n<p>        Every container has an index policy (range\/hash). Default indexes all properties. Narrow with included\/excluded paths to save RU on writes.<\/p>\n<pre><code class=\"mono\">\/includePaths: [ \"\/*\" ]<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>12) SQL (Core) Query Basics<\/h3>\n<p>        Familiar SELECT\/FROM\/WHERE with JSON semantics. CROSS JOIN for arrays, UDFs for custom logic, OFFSET\/LIMIT for paging (or continuation tokens).<\/p>\n<pre><code class=\"mono\">SELECT c.id, c.name FROM c WHERE c.tenantId = @t<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-amber\">\n<h3>13) Point Reads vs Queries<\/h3>\n<p>        Point read (id + pk) is cheapest and fastest. Queries may fan out across partitions if filter can\u2019t prune. Always parameterize.<\/p>\n<pre><code class=\"mono\">container.item(id, pk).read()<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>14) Cross-Partition Queries<\/h3>\n<p>        If filter doesn\u2019t include PK or partition-prunable field, RU spikes. Add PK in query or denormalize a filter field at top-level.<\/p>\n<pre><code class=\"mono\">SELECT * FROM c WHERE c.tenantId=@t AND c.type=\"order\"<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>15) Composite Indexes<\/h3>\n<p>        Needed for ORDER BY on multiple properties and filtering + sorting. Plan these for hot queries to cut RU.<\/p>\n<pre><code class=\"mono\">compositeIndexes: [[{\"path\":\"\/type\",\"order\":\"ascending\"},{\"path\":\"\/ts\",\"order\":\"descending\"}]]<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>16) Unique Keys<\/h3>\n<p>        Enforce uniqueness on a path combination within a logical partition. Set at container creation; immutable later.<\/p>\n<pre><code class=\"mono\">uniqueKeyPolicy: [{ paths:[\"\/email\"] }]<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-lime\">\n<h3>17) TTL (Time-To-Live)<\/h3>\n<p>        Auto-expire items or entire containers. Great for caches, sessions, ephemeral telemetry.<\/p>\n<pre><code class=\"mono\">defaultTtl: 3600  # seconds<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-orange\">\n<h3>18) Change Feed<\/h3>\n<p>        Ordered log of inserts\/updates (and deletes if enabled). Use for event-driven pipelines, CQRS projections, or downstream sync.<\/p>\n<pre><code class=\"mono\">ChangeFeedProcessorBuilder(...).Build()<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>19) Transactions<\/h3>\n<p>        ACID within a single logical partition using stored procedures or transactional batch. Not cross-partition.<\/p>\n<pre><code class=\"mono\">container.items.batch(pk).create(item).replace(item2)<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-emerald\">\n<h3>20) Q&amp;A \u2014 \u201cHow to page efficiently?\u201d<\/h3>\n<p>        <span class=\"q\">Answer:<\/span> Use continuation tokens (SDK returns) over OFFSET\/LIMIT. Keep page size modest (e.g., 50\u2013200) for predictable RU.<\/p><\/div>\n<p>      <!-- ===================== SECTION 3 ===================== --><\/p>\n<div class=\"section-title\">Section 3 \u2014 Throughput, Scaling &amp; Patterns<\/div>\n<div class=\"card bg-blue\">\n<h3>21) Provisioned vs Autoscale<\/h3>\n<p>        Provisioned: fixed RU\/s, predictable cost. Autoscale: scales between 10% and 100% of max; good for spiky traffic.<\/p>\n<pre><code class=\"mono\">throughput: { autoscaleMaxThroughput: 20000 }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>22) RU Budgeting<\/h3>\n<p>        Measure RU per operation; design for point reads and PK-aligned queries. Pre-aggregate and store read models for dashboards.<\/p>\n<pre><code class=\"mono\">diagnostics.RequestCharge<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-amber\">\n<h3>23) Hot Partition Mitigation<\/h3>\n<p>        Choose better PK, add synthetic keys (e.g., \/tenantId#bucket), randomize prefix, or shard logically into multiple containers.<\/p>\n<pre><code class=\"mono\">pk: \/tenantId#\/day<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>24) Logical Modeling<\/h3>\n<p>        Single-table design: store heterogeneous types in one container keyed by tenant\/type for co-location and atomic partition operations.<\/p>\n<pre><code class=\"mono\">{ \"type\":\"order\", \"tenantId\":\"t1\", \"id\":\"o1\" }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>25) Write Patterns<\/h3>\n<p>        Use bulk executor or SDK bulk mode for high-throughput writes. Batch per partition for efficiency.<\/p>\n<pre><code class=\"mono\">container.items.bulk(ops)<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>26) Read Patterns<\/h3>\n<p>        Prefer point reads; cache hot docs; use materialized views per query shape. Avoid large cross-partition scans.<\/p>\n<pre><code class=\"mono\">GET (id, pk) \u2192 cache<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-lime\">\n<h3>27) Multi-Region Writes<\/h3>\n<p>        Enable multi-master for active-active. Handle conflict resolution (LWW \/ custom policy).<\/p>\n<pre><code class=\"mono\">conflictResolutionPolicy: { mode:\"LastWriterWins\", conflictResolutionPath:\"\/ts\" }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-orange\">\n<h3>28) Consistency Tuning<\/h3>\n<p>        Default Session; raise to Strong for strict reads (higher RU\/latency) or lower to Eventual for max performance where OK.<\/p>\n<pre><code class=\"mono\">clientOptions: { consistencyLevel:\"Session\" }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>29) Serverless &amp; Free Tier<\/h3>\n<p>        Serverless charges per request unit consumed; great for dev\/test or low-traffic apps. Free tier grants limited RU\/GB.<\/p>\n<pre><code class=\"mono\">capex \u2192 opex by RU<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-emerald\">\n<h3>30) Q&amp;A \u2014 \u201cHow to reduce RU on queries?\u201d<\/h3>\n<p>        <span class=\"q\">Answer:<\/span> Filter by PK, add composite indexes, denormalize filter fields, project only needed columns, and page with continuation tokens.<\/p><\/div>\n<p>      <!-- ===================== SECTION 4 ===================== --><\/p>\n<div class=\"section-title\">Section 4 \u2014 Integration, Security &amp; Operations<\/div>\n<div class=\"card bg-blue\">\n<h3>31) SDK (Node.js) Basics<\/h3>\n<p>        Initialize client, get container, point read, parameterized query. Capture diagnostics for RU\/latency insights.<\/p>\n<pre><code class=\"mono\">import { CosmosClient } from \"@azure\/cosmos\";\r\nconst client = new CosmosClient({ endpoint, key });\r\nconst cont = client.database(\"app\").container(\"users\");\r\nconst { resource } = await cont.item(id, pk).read();<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>32) SDK (Python) Basics<\/h3>\n<p>        Use azure-cosmos; set consistency, retry options, and connection mode. Use async client for high concurrency.<\/p>\n<pre><code class=\"mono\">from azure.cosmos import CosmosClient\r\nclient = CosmosClient(url, key)\r\ncontainer = client.get_database_client(\"app\").get_container_client(\"users\")<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-amber\">\n<h3>33) Change Feed Processor<\/h3>\n<p>        Scales across instances, checkpointing via leases in a separate container. Ideal for downstream processing, projections, and ETL.<\/p>\n<pre><code class=\"mono\">builder.WithInstanceName(\"proc\").WithLeaseContainer(leaseContainer)<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>34) Triggers, UDFs, SProcs<\/h3>\n<p>        JavaScript logic in the engine. Use sparingly; they run within partition and can affect RU\/latency. Prefer app-side where possible.<\/p>\n<pre><code class=\"mono\">CREATE FUNCTION udf_norm(s) { return s.toLowerCase(); }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>35) Security &amp; Network<\/h3>\n<p>        Use Azure AD RBAC, Managed Identity, Private Endpoints, and CMK encryption if needed. Disable public network when possible.<\/p>\n<pre><code class=\"mono\">firewall: denyAll; privateLink: enabled<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>36) Backups &amp; PITR<\/h3>\n<p>        Periodic or continuous backup with point-in-time restore (PITR). Set retention based on RPO\/RTO.<\/p>\n<pre><code class=\"mono\">backupPolicy: { type:\"Continuous\", retention:30d }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-lime\">\n<h3>37) Observability Hooks<\/h3>\n<p>        Enable SDK diagnostics, App Insights tracing, custom metrics (RU, latency, throttles, hot partitions). Correlate with request IDs.<\/p>\n<pre><code class=\"mono\">clientOptions: { userAgentSuffix:\"app\/1.2.3\" }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-orange\">\n<h3>38) Throttling &amp; Retries<\/h3>\n<p>        429 means RU exhausted; SDK backs off automatically. Log and consider raising throughput or optimizing queries.<\/p>\n<pre><code class=\"mono\">if (err.code===429) await sleep(err.retryAfterInMs)<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>39) CI\/CD &amp; IaC<\/h3>\n<p>        Use ARM\/Bicep\/Terraform to declare accounts, DBs, containers (PK, indexing, RU). Validate in pre-prod with synthetic traffic.<\/p>\n<pre><code class=\"mono\">resource cosmos 'Microsoft.DocumentDB\/databaseAccounts@2023-04-15'<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-emerald\">\n<h3>40) Q&amp;A \u2014 \u201cWhen to use triggers vs change feed?\u201d<\/h3>\n<p>        <span class=\"q\">Answer:<\/span> Triggers for small, synchronous per-item logic inside a partition; Change Feed for scalable, asynchronous pipelines and integrations.<\/p><\/div>\n<p>      <!-- ===================== SECTION 5 ===================== --><\/p>\n<div class=\"section-title\">Section 5 \u2014 Cost, Reliability, Governance, Tuning &amp; Interview Q&amp;A<\/div>\n<div class=\"card bg-blue\">\n<h3>41) Cost Controls<\/h3>\n<p>        Choose right RU model, fix hot partitions, reduce doc size, tighten indexes, and use point reads. Turn on autoscale for bursts.<\/p>\n<pre><code class=\"mono\">includePaths minimal; exclude large subtrees<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>42) Governance<\/h3>\n<p>        Tag resources, lock production accounts, policy-enforce private endpoints, and monitor key rotations. Separate prod vs non-prod accounts.<\/p>\n<pre><code class=\"mono\">tags: { env:\"prod\", owner:\"data\" }<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-amber\">\n<h3>43) Reliability &amp; DR<\/h3>\n<p>        Multi-region reads, optional multi-region writes, automatic failover, PITR backups. Test failover regularly.<\/p>\n<pre><code class=\"mono\">automaticFailover: true<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>44) Performance Tuning<\/h3>\n<p>        Measure RU, fix cross-partition queries, use composites for ORDER BY, cache, and pre-compute aggregates. Keep docs compact.<\/p>\n<pre><code class=\"mono\">SELECT VALUE COUNT(1) ... \u2192 store count<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>45) Common Pitfalls<\/h3>\n<p>        Bad PK, full scans, OFFSET\/LIMIT pagination, over-indexing, giant documents, and assuming cross-partition ACID. Avoid with design upfront.<\/p>\n<pre><code class=\"mono\">doc size &lt; 2MB recommended<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>46) Migration Tips<\/h3>\n<p>        From Mongo\/Cassandra: choose matching API. For Core(SQL), write ETL to reshape docs, set PKs, and backfill composites.<\/p>\n<pre><code class=\"mono\">bulk import \u2192 verify RU \u2192 switch traffic<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-lime\">\n<h3>47) SLOs &amp; Alerts<\/h3>\n<p>        Track p95 latency, throttles, RU headroom, replica health, failover drills, and change feed lag. Alert on rising RU\/query charge.<\/p>\n<pre><code class=\"mono\">alert: RU\/s utilization &gt; 80%<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-orange tight\">\n<h3>48) Production Checklist<\/h3>\n<ul>\n<li>Right PK &amp; composite indexes<\/li>\n<li>Private endpoints + AAD<\/li>\n<li>Autoscale or RU headroom<\/li>\n<li>Backups\/PITR configured<\/li>\n<li>Change feed for pipelines<\/li>\n<li>Dashboards &amp; alerts live<\/li>\n<\/ul><\/div>\n<div class=\"card bg-indigo\">\n<h3>49) Sample IaC Snippet<\/h3>\n<p>        Minimal Bicep for a Core(SQL) account, DB, and container with TTL and autoscale.<\/p>\n<pre><code class=\"mono\">resource acct 'Microsoft.DocumentDB\/databaseAccounts@2023-04-15' = {\r\n  name: 'acct'\r\n  location: resourceGroup().location\r\n  kind: 'GlobalDocumentDB'\r\n  properties: { databaseAccountOfferType: 'Standard' }\r\n}\r\nresource db 'Microsoft.DocumentDB\/databaseAccounts\/sqlDatabases@2023-04-15' = {\r\n  name: 'acct\/app'\r\n  properties: { resource: { id: 'app' } }\r\n}\r\nresource cont 'Microsoft.DocumentDB\/databaseAccounts\/sqlDatabases\/containers@2023-04-15' = {\r\n  name: 'acct\/app\/users'\r\n  properties: {\r\n    resource: {\r\n      id: 'users'\r\n      partitionKey: { paths: ['\/tenantId'], kind:'Hash' }\r\n      defaultTtl: 3600\r\n    }\r\n    options: { autoscaleSettings:{ maxThroughput: 4000 } }\r\n  }\r\n}<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-emerald qa\">\n<h3>50) Interview Q&amp;A \u2014 20 Practical Questions (Expanded)<\/h3>\n<p><b>1) Why Cosmos DB?<\/b> Global distribution, elastic scale, low latency, multi-model APIs, and turnkey replication with SLAs.<\/p>\n<p><b>2) Partition key selection?<\/b> High cardinality, even distribution, aligns with access patterns (e.g., <code>\/tenantId<\/code>).<\/p>\n<p><b>3) Reduce RU on queries?<\/b> Filter by PK, denormalize hot filters, add composite indexes, and project minimal fields.<\/p>\n<p><b>4) Point read vs query?<\/b> Point read (id+pk) is cheapest\/fastest; prefer when possible.<\/p>\n<p><b>5) Consistency trade-offs?<\/b> Strong = highest correctness\/latency; Session = good default; Eventual = fastest.<\/p>\n<p><b>6) Multi-region writes?<\/b> Enable for active-active; plan conflict resolution strategy (LWW\/custom).<\/p>\n<p><b>7) Change feed use cases?<\/b> Event sourcing, projections, analytics sync, cache invalidation.<\/p>\n<p><b>8) Cross-partition transactions?<\/b> Not supported; design to keep multi-item ACID within one partition.<\/p>\n<p><b>9) TTL usage?<\/b> Auto-expire sessions\/caches\/telemetry with container or per-item TTL.<\/p>\n<p><b>10) Over-indexing impact?<\/b> Higher RU on writes; limit indexes to needed paths.<\/p>\n<p><b>11) Pagination best practice?<\/b> Continuation tokens instead of OFFSET\/LIMIT.<\/p>\n<p><b>12) Hot partition symptoms?<\/b> Throttles on a single PK, uneven RU; fix via key redesign or bucketing.<\/p>\n<p><b>13) Cost optimization?<\/b> Autoscale, point reads, compact docs, selective indexing, cache.<\/p>\n<p><b>14) Serverless vs provisioned?<\/b> Serverless = pay-per-RU for low traffic; provisioned\/autoscale for steady or spiky workloads.<\/p>\n<p><b>15) Unique keys?<\/b> Enforce per-partition uniqueness at create time.<\/p>\n<p><b>16) Composite indexes?<\/b> Required for multi-column ORDER BY and efficient sort+filter.<\/p>\n<p><b>17) Security posture?<\/b> AAD, private endpoints, CMK, disable public network, least privilege.<\/p>\n<p><b>18) Diagnostics to watch?<\/b> RequestCharge, ActivityId, Regions contacted, SDK retries, latency histograms.<\/p>\n<p><b>19) Modeling strategy?<\/b> Single-container design per bounded context; co-locate related types by PK.<\/p>\n<p><b>20) Gremlin\/Mongo\/Cassandra APIs?<\/b> Choose based on app drivers and data model; Core(SQL) for native JSON+SQL.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Azure Cosmos DB Pocket Book \u2014 Uplatz 50 deep-dive flashcards \u2022 Wide layout \u2022 Fewer scrolls \u2022 20+ Interview Q&amp;A \u2022 Readable code examples Section 1 \u2014 Fundamentals 1) What <span class=\"readmore\"><a href=\"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/\">Read More &#8230;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":4870,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2546,2462],"tags":[],"class_list":["post-4817","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cosmos-db","category-pocket-book"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Azure Cosmos DB Pocket Book | Uplatz Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Cosmos DB Pocket Book | Uplatz Blog\" \/>\n<meta property=\"og:description\" content=\"Azure Cosmos DB Pocket Book \u2014 Uplatz 50 deep-dive flashcards \u2022 Wide layout \u2022 Fewer scrolls \u2022 20+ Interview Q&amp;A \u2022 Readable code examples Section 1 \u2014 Fundamentals 1) What Read More ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/\" \/>\n<meta property=\"og:site_name\" content=\"Uplatz Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-26T12:37:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-27T02:46:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"uplatzblog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:site\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"uplatzblog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/\"},\"author\":{\"name\":\"uplatzblog\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\"},\"headline\":\"Azure Cosmos DB Pocket Book\",\"datePublished\":\"2025-08-26T12:37:24+00:00\",\"dateModified\":\"2025-08-27T02:46:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/\"},\"wordCount\":1329,\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Blog-solid-color-images.png\",\"articleSection\":[\"Cosmos DB\",\"Pocket Book\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/\",\"name\":\"Azure Cosmos DB Pocket Book | Uplatz Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Blog-solid-color-images.png\",\"datePublished\":\"2025-08-26T12:37:24+00:00\",\"dateModified\":\"2025-08-27T02:46:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/#primaryimage\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Blog-solid-color-images.png\",\"contentUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Blog-solid-color-images.png\",\"width\":1280,\"height\":720,\"caption\":\"Azure Cosmos DB Pocket Book\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-cosmos-db-pocket-book\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure Cosmos DB Pocket Book\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"name\":\"Uplatz Blog\",\"description\":\"Uplatz is a global IT Training &amp; Consulting company\",\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\",\"name\":\"uplatz.com\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"contentUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"width\":1280,\"height\":800,\"caption\":\"uplatz.com\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Uplatz-1077816825610769\\\/\",\"https:\\\/\\\/x.com\\\/uplatz_global\",\"https:\\\/\\\/www.instagram.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\",\"name\":\"uplatzblog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"caption\":\"uplatzblog\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure Cosmos DB Pocket Book | Uplatz Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/","og_locale":"en_US","og_type":"article","og_title":"Azure Cosmos DB Pocket Book | Uplatz Blog","og_description":"Azure Cosmos DB Pocket Book \u2014 Uplatz 50 deep-dive flashcards \u2022 Wide layout \u2022 Fewer scrolls \u2022 20+ Interview Q&amp;A \u2022 Readable code examples Section 1 \u2014 Fundamentals 1) What Read More ...","og_url":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/","og_site_name":"Uplatz Blog","article_publisher":"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","article_published_time":"2025-08-26T12:37:24+00:00","article_modified_time":"2025-08-27T02:46:07+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images.png","type":"image\/png"}],"author":"uplatzblog","twitter_card":"summary_large_image","twitter_creator":"@uplatz_global","twitter_site":"@uplatz_global","twitter_misc":{"Written by":"uplatzblog","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/#article","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/"},"author":{"name":"uplatzblog","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e"},"headline":"Azure Cosmos DB Pocket Book","datePublished":"2025-08-26T12:37:24+00:00","dateModified":"2025-08-27T02:46:07+00:00","mainEntityOfPage":{"@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/"},"wordCount":1329,"publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"image":{"@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/#primaryimage"},"thumbnailUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images.png","articleSection":["Cosmos DB","Pocket Book"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/","url":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/","name":"Azure Cosmos DB Pocket Book | Uplatz Blog","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/#primaryimage"},"image":{"@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/#primaryimage"},"thumbnailUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images.png","datePublished":"2025-08-26T12:37:24+00:00","dateModified":"2025-08-27T02:46:07+00:00","breadcrumb":{"@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/#primaryimage","url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images.png","contentUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Blog-solid-color-images.png","width":1280,"height":720,"caption":"Azure Cosmos DB Pocket Book"},{"@type":"BreadcrumbList","@id":"https:\/\/uplatz.com\/blog\/azure-cosmos-db-pocket-book\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/uplatz.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Azure Cosmos DB Pocket Book"}]},{"@type":"WebSite","@id":"https:\/\/uplatz.com\/blog\/#website","url":"https:\/\/uplatz.com\/blog\/","name":"Uplatz Blog","description":"Uplatz is a global IT Training &amp; Consulting company","publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uplatz.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/uplatz.com\/blog\/#organization","name":"uplatz.com","url":"https:\/\/uplatz.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","contentUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","width":1280,"height":800,"caption":"uplatz.com"},"image":{"@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","https:\/\/x.com\/uplatz_global","https:\/\/www.instagram.com\/","https:\/\/www.linkedin.com\/company\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz"]},{"@type":"Person","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e","name":"uplatzblog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","caption":"uplatzblog"}}]}},"_links":{"self":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/comments?post=4817"}],"version-history":[{"count":2,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4817\/revisions"}],"predecessor-version":[{"id":4871,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4817\/revisions\/4871"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/media\/4870"}],"wp:attachment":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/media?parent=4817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/categories?post=4817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/tags?post=4817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}