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

PLATÍ PRO: SQL API

v Azure Cosmos DB SQLch účtů rozhraní API existují dva způsoby, jak číst data:

Čtení bodů – vyhledávání klíč/hodnota můžete provést na základě ID jedné položky a klíče oddílu. Kombinace ID položky a klíče oddílu je klíč a samotná položka je hodnota. V případě dokumentu s 1 KBm čte bod obvykle náklady 1 jednotka požadavku s latencí pod 10 ms. Čtení bodů vrátí jednu položku.

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

SQL dotazy – můžete zadávat dotazy na data zápisem dotazů pomocí jazyk SQL (Structured Query Language) (SQL) jako dotazovacího jazyka JSON. Dotazy mají vždycky náklady minimálně 2,3 jednotek žádostí a obecně budou mít větší a větší latenci, než je čtení bodů. Dotazy mohou vracet mnoho položek.

většina úloh s vysokým zatížením v Azure Cosmos DB používá kombinaci obou bodů čtení a SQL dotazů. Pokud potřebujete jen číst jednu položku, jsou čtení bodů levnější a rychlejší než dotazy. Čtení bodů není nutné používat dotazovací modul pro přístup k datům a může přímo číst data. kromě toho není možné, aby všechny úlohy výhradně četly data pomocí čtení bodů, takže podpora SQL jako dotazovací jazyk a nezávislá indexování nabízí pružnější způsob, jak získat přístup k datům.

tady je několik příkladů, jak SQL dotazy pomocí jednotlivých SDK:

zbývající část tohoto dokumentu ukazuje, jak začít s psaním SQL dotazů v Azure Cosmos DB. dotazy SQL lze spouštět prostřednictvím sady SDK nebo Azure Portal.

Upload ukázkových dat

ve vašem účtu SQL rozhraní API Cosmos DB otevřete Průzkumník dat k vytvoření kontejneru s názvem Families . Po vytvoření kontejneru použijte prohlížeč datových struktur a vyhledejte ho a otevřete ho. Ve vašem Families kontejneru se zobrazí Items možnost vpravo pod názvem kontejneru. Tuto možnost otevřete a v řádku nabídek uprostřed obrazovky se zobrazí tlačítko pro vytvoření nové položky. Tato funkce slouží k vytvoření položek JSON níže.

Vytvoření položek JSON

Následující dvě položky JSON jsou dokumenty o rodinách Andersen a Wakefieldů. Zahrnují rodiče, podřízené položky a jejich domácí, adresu a registrační informace.

První položka obsahuje řetězce, čísla, logické hodnoty, pole 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 a familyName místo firstName a lastName :

{
  "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í na položky JSON

vyzkoušejte několik dotazů na data JSON, abyste se seznámili s některými klíčovými aspekty dotazovacího jazyka SQL Azure Cosmos DB.

Následující dotaz vrátí položky, kde se id pole shoduje AndersenFamily . Vzhledem k tomu, že se jedná o SELECT * dotaz, je výstupem dotazu úplná položka JSON. Další informace o syntaxi výběru naleznete v tématu Select Statement.

    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 na jiný tvar. Dotaz vychází z nového Family objektu JSON se dvěma vybranými poli Name a v City případě, že adresa města je stejná jako stav. "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 křestní názvy podřízených objektů v rodině id , jejichž shoda WakefieldFamily je seřazena 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ů Cosmos DB dotazovacího jazyka:

  • vzhledem k tomu, že rozhraní SQL API funguje na hodnotách JSON, pracuje s entitami ve tvaru stromu namísto řádků a sloupců. Můžete odkazovat na uzly stromu libovolné hloubky, například Node1.Node2.Node3…..Nodem , podobně jako na odkaz na dvě části <table>.<column> ve standardu ANSI SQL.

  • Vzhledem k tomu, že dotazovací jazyk pracuje s daty bez schématu, musí být systém typů svázán dynamicky. Stejný výraz může vracet různé typy v různých položkách. Výsledek dotazu je platná hodnota JSON, ale nezaručujeme, že by mělo být pevně dané 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 v tématu specifikace JSON.

  • kontejner Cosmos je kolekce položek JSON bez schématu. Vztahy v rámci a napříč položkami kontejneru jsou implicitně zachyceny omezením, nikoli podle primárního klíče a vztahů cizího klíče. tato funkce je důležitá pro spojení uvnitř položky, která jsou popsána v tématu joins in Azure Cosmos DB.

Další kroky