Az Azure Cosmos DB kérelemegységei
A KÖVETKEZŐKRE VONATKOZIK: NoSQL MongoDB Cassandra Gremlin Asztal
Az Azure Cosmos DB számos API-t támogat, például sql, MongoDB, Cassandra, Gremlin és Table. Minden API saját adatbázisműveletekkel rendelkezik. Ezek a műveletek az egyszerű pontolvasástól és írástól az összetett lekérdezésekig terjednek. Minden adatbázis-művelet a művelet összetettsége alapján használja fel a rendszererőforrásokat.
Az Azure Cosmos DB normalizálja az összes adatbázis-művelet költségét a kérelemegységek (röviden kérelemegységek) használatával, és az átviteli sebesség alapján méri a költségeket (kérelemegységek másodpercenként, RU/s).
A kérelemegység olyan teljesítmény-pénznem, amely az Azure Cosmos DB által támogatott adatbázis-műveletek végrehajtásához szükséges rendszererőforrásokat, például a CPU-t, az IOPS-t és a memóriát absztrakciós pénznemként használja. Függetlenül attól, hogy az adatbázis-művelet írás, pontolvasás vagy lekérdezés, a műveletek mindig kérelemegységekben vannak mérve. Egy 1 KB-os elem pontolvasása (egy elem beolvasása az azonosító és a partíciókulcs értéke alapján) például egy kérelemegység (vagy egy RU), függetlenül attól, hogy melyik API-t használja az Azure Cosmos DB-tárolóval való interakcióhoz. Az átviteli sebesség költségeit az Azure Cosmos DB kapacitáskalkulátorával modellezheti.
A következő képen a kérelemegységek áttekintése látható:
A kapacitás kezelése és tervezése érdekében az Azure Cosmos DB biztosítja, hogy egy adott adatbázis-művelethez a kérelemegységek száma egy adott adatkészletre determinisztikus legyen. A válaszfejlécet megvizsgálva nyomon követheti az adatbázis-műveletek által felhasznált kérelemegységek számát. Ha tisztában van azzal, hogy milyen tényezők befolyásolják az RU-k díjait és hogy az alkalmazásának milyen átviteli sebességre van szüksége, az alkalmazást költséghatékonyan futtathatja.
A használt Azure Cosmos DB-fiók típusa határozza meg a felhasznált RU-k díjazásának módját. Három mód van, amelyekben létrehozhat egy fiókot:
Kiosztott átviteli mód: Ebben a módban az alkalmazás kérelemegységeinek számát másodpercenként 100 kérelemegység/másodperces növekményben rendeli hozzá. Ha skálázni szeretné az alkalmazáshoz kiosztott átviteli sebességet, bármikor növelheti vagy csökkentheti az RU-k számát 100 RU értékű lépésekben. A módosításokat elvégezheti programozással vagy az Azure Portal használatával is. A számlázás óránként történik az Ön által kiosztott RU-k másodpercenkénti számának megfelelően. További információkért tekintse meg a Kiosztott átviteli sebességről szóló bejegyzést.
Kétféle finomsággal oszthatja ki az átviteli sebességet:
- Tárolók: További információ: Átviteli sebesség hozzárendelése egy Azure Cosmos DB-tárolóhoz.
- Adatbázisok: További információ: Átviteli sebesség hozzárendelése egy Azure Cosmos DB-adatbázishoz.
Kiszolgáló nélküli mód: Ebben a módban nem kell átviteli sebességet hozzárendelnie az Erőforrások létrehozásakor az Azure Cosmos DB-fiókban. A számlázási időszak végén az adatbázis-műveletek által felhasznált kérelemegységek mennyisége után kell fizetni. További információért tekintse meg a Kiszolgáló nélküli átviteli sebességről szóló bejegyzést.
Automatikus skálázási mód: Ebben a módban automatikusan és azonnal skálázhatja az adatbázis vagy tároló átviteli sebességét (RU/s) a használat alapján. Ez a skálázási művelet nem befolyásolja a számítási feladat rendelkezésre állását, késését, átviteli sebességét vagy teljesítményét. Ez a mód jól használható olyan kritikus fontosságú számítási feladatokhoz, amelyek változó vagy kiszámíthatatlan forgalmi mintákkal rendelkeznek, és nagy teljesítményű és skálázott SLA-kat igényelnek. További információkért tekintse meg az Automatikus méretezési átviteli sebességről szóló bejegyzést.
A kérelemegységekkel kapcsolatos megfontolások
Miközben megbecsüli a számítási feladat által felhasznált kérelemegységek számát, vegye figyelembe a következő tényezőket:
Elemméret: Az elem méretének növekedésével az elem olvasásához vagy írásához felhasznált kérelemegységek száma is nő.
Elemindexelés: Alapértelmezés szerint minden elem automatikusan indexel. Kevesebb kérelemegység lesz felhasználva, ha egy tárolóban egyes elemeket nem indexel.
Elemtulajdonságok száma: Feltéve, hogy az alapértelmezett indexelés az összes tulajdonságon történik, az elem írásához felhasznált kérelemegységek száma növekszik az elemtulajdonságok számának növekedésével.
Indexelt tulajdonságok: Az egyes tárolók indexelési szabályzata határozza meg, hogy mely tulajdonságok legyenek alapértelmezés szerint indexelve. Ha csökkenteni szeretné az írási műveletek fogyasztását, korlátozza az indexelt tulajdonságok számát.
Adatkonzisztencia: Az erős és korlátozott elavultsági konzisztenciaszintek körülbelül kétszer több kérelemegységet használnak fel, miközben olvasási műveleteket hajtanak végre a többi nyugodt konzisztenciaszinthez képest.
Olvasási típus: A pontolvasások kevesebb kérelemegységbe kerülnek, mint a lekérdezések.
Lekérdezési minták: A lekérdezések összetettsége befolyásolja, hogy egy művelet hány kérelemegységet használ fel. A lekérdezési műveletek költségét befolyásoló tényezők többek között:
- A lekérdezési eredmények száma
- A predikátumok száma
- A predikátumok természete
- Felhasználó által definiált függvények száma
- A forrásadat mérete
- Az eredményhalmaz mérete
- Leképezések
Ugyanazon adatok ugyanazon lekérdezése mindig ugyanannyi kérelemegységbe kerül ismétlődő végrehajtás esetén.
Szkripthasználat: A lekérdezésekhez hasonlóan a tárolt eljárások és az eseményindítók is a végrehajtott műveletek összetettsége alapján használják fel a kérelemegységeket. Az alkalmazás fejlesztése során vizsgálja meg a kérelemdíj fejlécet, hogy pontosabb képet kapjon arról, hány kérelemegységet fogyasztanak az egyes műveletek.
Kérelemegységek és több régió
Ha "R" kérelemegységeket rendel egy Azure Cosmos DB-tárolóhoz (vagy adatbázishoz), az Azure Cosmos DB biztosítja, hogy az "R" kérelemegységek elérhetők legyenek az Azure Cosmos DB-fiókhoz társított minden régióban. A kérelemegységeket nem lehet szelektíven hozzárendelni egy adott régióhoz. Az Azure Cosmos DB-tárolón (vagy adatbázisban) kiépített kérelemegységek az Azure Cosmos DB-fiókhoz társított összes régióban ki vannak építve.
Feltételezve, hogy az Azure Cosmos DB-tároló "R" kérelemegységekkel van konfigurálva, és az Azure Cosmos DB-fiókhoz tartozó "N" régiók vannak társítva, a tárolón globálisan elérhető összes kérelemegység = R x N.
A konzisztenciamodell kiválasztása az átviteli sebességet is befolyásolja. A nyugodtabb konzisztenciaszintek (munkamenet, *konzisztens előtag és végleges konzisztencia) körülbelül 2-szeres olvasási átviteli sebességét érheti el az erősebb konzisztenciaszintekhez képest (korlátozott elavultság vagy erős konzisztencia).