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
- Úvod do služby Azure Cosmos DB
- ukázky Azure Cosmos DB .net
- Klauzule SELECT
- chcete se pokusit plánování kapacity pro migraci na Azure Cosmos DB? Pro plánování kapacity můžete použít informace o vašem existujícím databázovém clusteru.
- Pokud znáte počet virtuální jádra a serverů v existujícím databázovém clusteru, přečtěte si téma odhadování jednotek žádostí pomocí virtuální jádra nebo vCPU .
- pokud znáte typické míry požadavků pro aktuální databázovou úlohu, přečtěte si téma odhadace jednotek žádostí pomocí Azure Cosmos DB kapacity plánovače .