Megosztás a következőn keresztül:


A Cosmos DB lekérdezési nyelve (az Azure-ban és a Fabricben)

A lekérdezési nyelv hatékony, SQL-szerű szintaxist biztosít a JSON-adatok kezeléséhez. Ez a nyelv úgy lett kialakítva, hogy megismerje az SQL-élményt használó felhasználókat, ugyanakkor támogatja a JSON-dokumentumok rugalmasságát és hierarchikus jellegét. Ez a cikk bemutatja a lekérdezési nyelv alapvető fogalmait, szintaxisát és funkcióit.

A lekérdezési nyelv alapvető fogalmai

A lekérdezési nyelv úgy készült, hogy kifejező és hatékony hozzáférést biztosítson a JSON-dokumentumokban tárolt adatokhoz. A nyelv alapja, hogy natív módon működjön a hierarchikus és rugalmas adatokkal, és egyszerű és összetett lekérdezéseket is támogat a különböző struktúrákat tartalmazó dokumentumokon.

A lekérdezések egy jól ismert SQL-szerű szintaxissal vannak összeállítva, de a dokumentummodellhez vannak igazítva. Ez az adaptáció azt jelenti, hogy a hagyományos relációs adatbázisoktól eltérően nincs rögzített séma – a tulajdonságok hiányoznak, vagy különböző típusúak lehetnek a dokumentumokban. A nyelv megkülönbözteti a kis- és nagybetűket, és közvetlenül a lekérdezéseken belül támogatja a beágyazott tulajdonságokra, tömbökre és objektumokra való hivatkozásokat. Logikai, összehasonlítási és aritmetikai operátorok érhetők el, és a nyelv úgy lett kialakítva, hogy intuitív legyen az SQL-tapasztalattal rendelkező fejlesztők számára, miközben a NoSQL-adatok rugalmasságát is átfogalmazták.

A lekérdezési motor nagy teljesítményre és méretezhetőségre van optimalizálva, automatikusan indexekkel szűri, rendezi és összesíti az adatokat. A lekérdezési minták széles skáláját támogatja, az egyszerű keresésektől az összetett összesítésekig és al lekérdezésekig. Ez a támogatás alkalmassá teszi a lekérdezési motort a tranzakciós és az elemzési számítási feladatokhoz is. A nyelv szerkezeteket is biztosít a tömbök kezeléséhez, a null és a nem definiált értékek kezeléséhez, valamint az eredmények rugalmas JSON-alakzatokban való kivetítéséhez. Ezek a szerkezetek lehetővé teszik a fejlesztők számára, hogy pontosan az alkalmazások által igényelt formátumban kérjék le a szükséges adatokat.

Egyszerű lekérdezési struktúra

Egy tipikus lekérdezés a következő záradékokból áll:

  • SELECT: Megadja, hogy mely mezőket vagy értékeket adja vissza.
  • FROM: Azonosítja a forrástárolót, és aliast rendelhet hozzá.
  • WHERE: Feltételek alapján szűri a dokumentumokat.
  • ORDER BY: Rendezi az eredményeket.
  • GROUP BY: Az eredményeket egy vagy több tulajdonság szerint csoportosítja.

Példa: Egyszerű lekérdezés

SELECT p.id, p.name
FROM products p
WHERE p.price > 20
ORDER BY p.price ASC

Ez a lekérdezés a id 20-nál nagyobb árat tartalmazó termékek és name termékek értékét adja vissza növekvő sorrendben, ár szerint rendezve.

JSON-tulajdonságok használata

A beágyazott tulajdonságokat pont-jelöléssel vagy szögletes zárójel jelöléssel érheti el:

SELECT p.manufacturer.name, p["metadata"].sku
FROM products p

A tömbök bejárhatók az alábbiak használatával JOIN vagy albekérdezésekkel:

SELECT p.name, c AS color
FROM products p
JOIN c IN p.metadata.colors

Adatok szűrése

A WHERE záradék számos operátort támogat, beleértve az aritmetikai, logikai, összehasonlítási és sztringműveleteket:

SELECT *
FROM products p
WHERE p.category IN ("Accessories", "Clothing") AND p.price BETWEEN 10 AND 50

Összesítés és csoportosítás

Aggregátumfüggvényeket és csoporteredményeket használhat:

SELECT p.category, COUNT(1) AS productCount
FROM products p
GROUP BY p.category

Eltérő, Felső és Hasonló

  • DISTINCT eltávolítja az ismétlődő értékeket.
  • TOP N korlátozza az eredmények számát.
  • LIKE támogatja a helyettesítő karakterekkel való mintaegyezést.
SELECT DISTINCT VALUE p.category
FROM products p

SELECT TOP 5 *
FROM products p
ORDER BY p.price DESC

SELECT *
FROM products p
WHERE p.name LIKE "%bike%"

Subqueries

Az albekérdezések lehetővé teszik a speciális szűrést és kivetítést, beleértve a tömbök értékeinek meglétének ellenőrzését is:

SELECT VALUE p.name
FROM products p
WHERE EXISTS (
    SELECT VALUE c FROM c IN p.metadata.colors WHERE c LIKE "%blue%"
)