Začínáme s příkazy jazyka SQL

PLATÍ PRO: ROZHRANÍ SQL API

V účtech rozhraní SQL API služby Azure Cosmos DB existují dva způsoby čtení dat:

Čtení bodů – Vyhledávání klíč/hodnota můžete provést u jednoho ID položky a klíče oddílu. Kombinace ID položky a klíče oddílu je klíč a samotná položka je hodnota. U dokumentu 1 kB čte bod obvykle 1 jednotku požadavku s latencí pod 10 ms. Čtení bodu vrací jednu celou položku, ne částečnou položku nebo konkrétní pole.

Tady je několik příkladů, jak pomocí jednotlivých sad SDK číst pointy :

Dotazy SQL – Dotazy SQL můžete dotazovat zápisem dotazů pomocí jazyk SQL (Structured Query Language) (SQL) jako dotazovacího jazyka JSON. Dotazy vždy stojí minimálně 2,3 jednotek požadavků a obecně budou mít vyšší a více latence proměnných než čtení bodů. Dotazy můžou vracet mnoho položek.

Většina úloh náročných na čtení ve službě Azure Cosmos DB používá kombinaci dotazů typu čtení bodů i dotazů SQL. Pokud potřebujete jen přečíst jednu položku, jsou čtení bodů levnější a rychlejší než dotazy. Čtení bodů nemusí používat dotazovací modul pro přístup k datům a může je číst přímo. Samozřejmě není možné, aby všechny úlohy výhradně četly data pomocí čtení bodů, takže podpora SQL jako dotazovacího jazyka a indexování založeného na schématu poskytuje flexibilnější způsob, jak získat přístup k datům.

Tady je několik příkladů, jak provádět dotazy SQL s jednotlivými sadami SDK:

Zbývající část tohoto dokumentu ukazuje, jak začít psát dotazy SQL ve službě Azure Cosmos DB. Dotazy SQL je možné spouštět prostřednictvím sady SDK nebo Azure Portal.

Nahrání ukázkových dat

V účtu služby SQL API Cosmos DB otevřete Data Explorer a vytvořte kontejner s názvem Families. Po vytvoření kontejneru pomocí prohlížeče datových struktur vyhledejte a otevřete ho. Families V kontejneru uvidíte Items možnost přímo pod názvem kontejneru. Otevřete tuto možnost a v řádku nabídek uprostřed obrazovky se zobrazí tlačítko pro vytvoření nové položky. Tuto funkci použijete k vytvoření položek JSON níže.

Vytvoření položek JSON

Následující 2 položky JSON jsou dokumenty o rodinách Andersen a Wakefield. Patří mezi ně rodiče, děti a jejich domácí zvířata, adresa a registrační údaje.

První položka obsahuje řetězce, čísla, logické hodnoty, matice a vnořené vlastnosti:

{
  "id": "AndersenFamily",
  "lastName": "Andersen",
  "parents": [
     { "firstName": "Thomas" },
     { "firstName": "Mary Kay"}
  ],
  "children": [
     {
         "firstName": "Henriette Thaulow",
         "gender": "female",
         "grade": 5,
         "pets": [{ "givenName": "Fluffy" }]
     }
  ],
  "address": { "state": "WA", "county": "King", "city": "Seattle" },
  "creationDate": 1431620472,
  "isRegistered": true
}

Druhá položka používá givenName místo a familyNamelastName:firstName

{
  "id": "WakefieldFamily",
  "parents": [
      { "familyName": "Wakefield", "givenName": "Robin" },
      { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
      {
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [
            { "givenName": "Goofy" },
            { "givenName": "Shadow" }
        ]
      },
      {
        "familyName": "Miller",
         "givenName": "Lisa",
         "gender": "female",
         "grade": 8 }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

Dotazování položek JSON

Vyzkoušejte několik dotazů na data JSON a seznamte se s některými klíčovými aspekty dotazovacího jazyka SQL služby Azure Cosmos DB.

Následující dotaz vrátí položky, ve kterých id se pole shoduje AndersenFamily. Vzhledem k tomu, že se jedná o SELECT * dotaz, je výstupem dotazu úplná položka JSON. Další informace o syntaxi SELECT najdete v tématu PŘÍKAZ SELECT.

    SELECT *
    FROM Families f
    WHERE f.id = "AndersenFamily"

Výsledky dotazu jsou:

    [{
        "id": "AndersenFamily",
        "lastName": "Andersen",
        "parents": [
           { "firstName": "Thomas" },
           { "firstName": "Mary Kay"}
        ],
        "children": [
           {
               "firstName": "Henriette Thaulow", "gender": "female", "grade": 5,
               "pets": [{ "givenName": "Fluffy" }]
           }
        ],
        "address": { "state": "WA", "county": "King", "city": "Seattle" },
        "creationDate": 1431620472,
        "isRegistered": true
    }]

Následující dotaz přeformátuje výstup JSON do jiného obrazce. Dotazuje nový objekt JSON Family se dvěma vybranými poli a NameCitypokud je město adresy stejné jako stát. "NY, NY" odpovídá tomuto případu.

    SELECT {"Name":f.id, "City":f.address.city} AS Family
    FROM Families f
    WHERE f.address.city = f.address.state

Výsledky dotazu jsou:

    [{
        "Family": {
            "Name": "WakefieldFamily",
            "City": "NY"
        }
    }]

Následující dotaz vrátí všechny zadané jména dětí v rodině, jejichž id shody WakefieldFamilyse shodují podle města.

    SELECT c.givenName
    FROM Families f
    JOIN c IN f.children
    WHERE f.id = 'WakefieldFamily'
    ORDER BY f.address.city ASC

Výsledky jsou následující:

    [
      { "givenName": "Jesse" },
      { "givenName": "Lisa"}
    ]

Poznámky

Předchozí příklady ukazují několik aspektů dotazovacího jazyka Cosmos DB:

  • Vzhledem k tomu, že rozhraní SQL API funguje na hodnotách JSON, zabývá se entitami ve tvaru stromu místo řádků a sloupců. Můžete odkazovat na uzly stromu v libovolné hloubkě, například , podobně Node1.Node2.Node3…..Nodemjako odkaz na <table>.<column> dvě části v ANSI SQL.

  • Vzhledem k tomu, že dotazovací jazyk funguje s daty bez schématu, musí být systém typů dynamicky vázán. Stejný výraz by mohl u různých položek přinést různé typy. Výsledkem dotazu je platná hodnota JSON, ale nezaručuje se, že jde o pevné schéma.

  • Azure Cosmos DB podporuje pouze striktní položky JSON. Systém typů a výrazy jsou omezené tak, aby pracovaly pouze s typy JSON. Další informace najdete ve specifikaci JSON.

  • Kontejner Cosmos je kolekce položek JSON bez schématu. Vztahy uvnitř a napříč položkami kontejneru jsou implicitně zachyceny zahrnutím, nikoli primárním klíčem a vztahy cizího klíče. Tato funkce je důležitá pro spojení mezi položkami, které jsou popsány ve spojeních ve službě Azure Cosmos DB.

Další kroky