MongoDB-bővítményparancsok használata a MongoDB-hez készült Azure Cosmos DB-ben tárolt adatok kezeléséhez
A KÖVETKEZŐKRE VONATKOZIK: MongoDB
Az alábbi dokumentum a MongoDB-hez készült Azure Cosmos DB-hez tartozó egyéni műveleti parancsokat tartalmazza. Ezek a parancsok az Azure Cosmos DB kapacitásmodelljének megfelelő adatbázis-erőforrások létrehozására és beszerzésére használhatók.
A MongoDB-hez készült Azure Cosmos DB használatával élvezheti az Azure Cosmos DB megosztott előnyeit. Ezek az előnyök magukban foglalják, de nem korlátozódnak a következőkre:
- Globális terjesztés
- Automatikus horizontális skálázás
- Magas szintű rendelkezésre állás
- Késési garancia
- Titkosítás inaktív állapotban
- Biztonsági másolatok
Ezeket az előnyöket élvezheti, miközben megőrzi a meglévő MongoDB-alkalmazásaiban lévő befektetéseit. A MongoDB-hez készült Azure Cosmos DB-vel a nyílt forráskódú MongoDB-ügyfélillesztők bármelyikével kommunikálhat. A MongoDB-hez készült Azure Cosmos DB lehetővé teszi a meglévő ügyfélillesztők használatát a MongoDB-drótprotokollhoz való csatlakoztatással.
MongoDB protokoll támogatása
Az Azure Cosmos DB for MongoDB kompatibilis a MongoDB-kiszolgáló 4.0-s, 3.6-os és 3.2-es verziójával. További információkért tekintse meg a 4.0-s, 3.6-os és 3.2-s verziók támogatott funkcióit és szintaxisát.
A következő bővítményparancsok adatbázis-kérelmeken keresztül hoznak létre és módosítanak Azure Cosmos DB-specifikus erőforrásokat:
- Adatbázis létrehozása
- Adatbázis frissítése
- Adatbázis lekérése
- Gyűjtemény létrehozása
- Frissítési gyűjtemény
- Gyűjtemény lekérése
Adatbázis létrehozása
Az adatbázisbővítmény létrehozása parancs létrehoz egy új MongoDB-adatbázist. Az adatbázis neve a parancs által use database
beállított adatbázis-környezetből használható. Az alábbi táblázat a parancs paramétereit ismerteti:
Hozam
Ha a parancs sikeres, a következő választ adja vissza:
{ "ok" : 1 }
Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.
Példa: Adatbázis létrehozása
Az összes alapértelmezett értéket használó adatbázis "test"
létrehozásához használja a következő parancsot:
use test
db.runCommand({customAction: "CreateDatabase"});
Ez a parancs adatbázisszintű átviteli sebesség nélküli adatbázist hoz létre. Ez a művelet azt jelenti, hogy az adatbázis gyűjteményeinek meg kell adniuk a használni kívánt átviteli sebességet.
Példa: Adatbázis létrehozása átviteli sebességgel
Egy elnevezett "test"
adatbázis létrehozásához és egy 1000 kérelemegységet tartalmazó, adatbázisszintű kiosztott átviteli sebesség megadásához használja a következő parancsot:
use test
db.runCommand({customAction: "CreateDatabase", offerThroughput: 1000 });
Ez a parancs létrehoz egy adatbázist, és beállít egy átviteli sebességet. Az adatbázisban található összes gyűjtemény osztozik a beállított átviteli sebességen, kivéve, ha a gyűjtemények egy adott átviteli sebességgel jönnek létre.
Példa: Adatbázis létrehozása automatikus skálázási átviteli sebességgel
Ha elnevezett "test"
adatbázist szeretne létrehozni, és 20 000 RU/s automatikus skálázási maximális átviteli sebességet szeretne megadni adatbázisszinten, használja a következő parancsot:
use test
db.runCommand({customAction: "CreateDatabase", autoScaleSettings: { maxThroughput: 20000 } });
Adatbázis frissítése
Az adatbázis-bővítmény frissítési parancsa frissíti a megadott adatbázishoz társított tulajdonságokat. Az adatbázis kiosztott átviteli sebességről automatikus skálázásra való módosítása és fordítva, csak az Azure Portalon támogatott. Az alábbi táblázat a parancs paramétereit ismerteti:
Ez a parancs a munkamenet kontextusában megadott adatbázist használja. Ez az adatbázis ugyanaz, mint amelyet a use <database>
parancsban használt. Az adatbázis neve jelenleg nem módosítható ezzel a paranccsal.
Hozam
Ha a parancs sikeres, a következő választ adja vissza:
{ "ok" : 1 }
Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.
Példa: Az adatbázishoz társított kiosztott átviteli sebesség frissítése
Ha egy adatbázis "test"
kiosztott átviteli sebességét 1200 kérelemegységre szeretné frissíteni, használja a következő parancsot:
use test
db.runCommand({customAction: "UpdateDatabase", offerThroughput: 1200 });
Példa: Az adatbázishoz társított automatikus skálázási átviteli sebesség frissítése
Ha egy adatbázis "test"
kiosztott átviteli sebességét 20 000 kérelemegységre szeretné frissíteni, vagy automatikus skálázási átviteli sebességre szeretné átalakítani, használja a következő parancsot:
use test
db.runCommand({customAction: "UpdateDatabase", autoScaleSettings: { maxThroughput: 20000 } });
Adatbázis lekérése
Az adatbázis-bővítmény lekérése parancs visszaadja az adatbázis-objektumot. A rendszer az adatbázis nevét abból az adatbázis-környezetből használja, amelyen a parancs végrehajtása történik.
{
customAction: "GetDatabase"
}
Az alábbi táblázat a parancs paramétereit ismerteti:
Mező | Típus | Leírás |
---|---|---|
customAction |
string |
Az egyéni parancs neve. Az értéknek a következőnek kell lennie GetDatabase : . |
Hozam
Ha a parancs sikeres, a válasz egy dokumentumot tartalmaz a következő mezőkkel:
Mező | Típus | Leírás |
---|---|---|
ok |
int |
A válasz állapota. 1 == siker. 0 == hiba. |
database |
string |
Az adatbázis neve. |
provisionedThroughput |
int |
Az adatbázison beállított kiépített átviteli sebesség, ha az adatbázis manuális adatbázisszintű átviteli sebességet használ |
autoScaleSettings |
Object |
Ez az objektum tartalmazza az adatbázishoz társított kapacitásparamétereket, ha automatikus skálázási módot használ. Az maxThroughput érték azt a legtöbb kérelemegységet írja le, amellyel az adatbázis dinamikusan növelhető. |
Ha a parancs sikertelen, a rendszer egy alapértelmezett egyéni parancsválaszt ad vissza. Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.
Példa: Az adatbázis lekérése
Az adatbázis-objektum lekéréséhez "test"
használja a következő parancsot:
use test
db.runCommand({customAction: "GetDatabase"});
Ha az adatbázis nem rendelkezik társított átviteli sebességgel, a kimenet a következő lesz:
{ "database" : "test", "ok" : 1 }
Ha az adatbázishoz adatbázisszintű manuális átviteli sebesség van társítva, a kimenet a provisionedThroughput
következő értékeket jeleníti meg:
{ "database" : "test", "provisionedThroughput" : 20000, "ok" : 1 }
Ha az adatbázishoz adatbázisszintű automatikus skálázási átviteli sebesség van társítva, a kimenet az adatbázis minimális RU/s-ját leíró értéket és az autoScaleSettings
adatbázis maximális RU/s-ját leíró objektumot maxThroughput
jeleníti provisionedThroughput
meg.
{
"database" : "test",
"provisionedThroughput" : 2000,
"autoScaleSettings" : {
"maxThroughput" : 20000
},
"ok" : 1
}
Gyűjtemény létrehozása
A gyűjteménybővítmény létrehozása parancs létrehoz egy új MongoDB-gyűjteményt. Az adatbázis nevét a parancs által beállított adatbázis-környezetből használja.use database
A CreateCollection parancs formátuma a következő:
{
customAction: "CreateCollection",
collection: "<Collection Name>",
shardKey: "<Shard key path>",
// Replace the line below with "autoScaleSettings: { maxThroughput: (int) }" to use Autoscale instead of Provisioned Throughput. Fill the required Autoscale max throughput setting.
offerThroughput: (int) // Provisioned Throughput enabled with required throughput amount set.
indexes: [{key: {_id: 1}, name: "_id_1"}, ... ] // Optional indexes (3.6+ accounts only).
}
Az alábbi táblázat a parancs paramétereit ismerteti:
Mező | Típus | Kötelező | Leírás |
---|---|---|---|
customAction |
string |
Kötelező | Az egyéni parancs neve. Az értéknek a következőnek kell lennie CreateCollection : . |
collection |
string |
Kötelező | A gyűjtemény neve. Nem engedélyezett speciális karakterek vagy szóközök használata. |
offerThroughput |
int |
Választható | Kiosztott átviteli sebesség az adatbázison való beállításhoz. Ha ez a paraméter nincs megadva, alapértelmezés szerint a minimum 400 RU/s lesz. * A 10 000 RU/s-on túli átviteli sebesség megadásához a shardKey paraméterre van szükség. |
shardKey |
string |
Nagy átviteli sebességgel rendelkező gyűjteményekhez szükséges | A szegmenses gyűjtemény szegmenskulcsának elérési útja. Ez a paraméter akkor szükséges, ha több mint 10 000 RU/s offerThroughput értéket ad meg. Ha meg van adva, minden beszúrt dokumentumhoz szükség van erre a kulcsra és értékre. |
autoScaleSettings |
Object |
Automatikus skálázási módhoz szükséges | Ez az objektum az automatikus skálázási kapacitás módhoz társított beállításokat tartalmazza. Beállíthatja azt az maxThroughput értéket, amely a gyűjtemény dinamikusan növelhető kérelemegységeinek legnagyobb számát írja le. |
indexes |
Array |
Igény szerint konfigurálhatja az indexeket. Ez a paraméter csak 3,6-os vagy több fiók esetén támogatott. | Ha jelen van, indexre van szükség a _id. A tömb minden bejegyzésének tartalmaznia kell egy vagy több mező kulcsát, egy nevet, és tartalmazhat indexbeállításokat. Ha például összetett egyedi indexet szeretne létrehozni a mezőkön a , és b használja ezt a bejegyzést: {key: {a: 1, b: 1}, name:"a_1_b_1", unique: true} . |
Hozam
Egy alapértelmezett egyéni parancsválaszt ad vissza. Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.
Példa: Gyűjtemény létrehozása a minimális konfigurációval
Ha új gyűjteményt szeretne létrehozni névvel "testCollection"
és alapértelmezett értékekkel, használja a következő parancsot:
use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection"});
Ez a művelet egy új rögzített, skálázatlan gyűjteményt eredményez 400RU/s-val, és automatikusan létrejön egy index a _id
mezőn. Ez a konfigurációtípus akkor is érvényes, ha új gyűjteményeket hoz létre a insert()
függvényen keresztül. Példa:
use test
db.newCollection.insert({});
Példa: Szegmens nélküli gyűjtemény létrehozása
Ha 1000 kérelemegység névvel "testCollection"
és kiosztott átviteli sebességgel rendelkező szegmens nélküli gyűjteményt szeretne létrehozni, használja a következő parancsot:
use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", offerThroughput: 1000});
Akár 10 000 RU/s-os offerThroughput
gyűjteményt is létrehozhat anélkül, hogy szegmenskulcsot kellene megadnia. A nagyobb átviteli sebességgel rendelkező gyűjtemények esetében tekintse meg a következő szakaszt.
Példa: Szegmenses gyűjtemény létrehozása
Ha egy 11 000 kérelemegységet tartalmazó, 11 000 kérelemegységet "testCollection"
és shardkey
egy "a.b" tulajdonságot tartalmazó szegmenses gyűjteményt szeretne létrehozni, használja a következő parancsot:
use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", offerThroughput: 11000, shardKey: "a.b" });
Ehhez a parancshoz most már szükség van a shardKey
paraméterre, mivel a paraméterben offerThroughput
több mint 10 000 RU/s van megadva.
Példa: Horizontálisan el nem skálázott automatikus skálázási gyűjtemény létrehozása
Ha egy 4000 RU/s-ra beállított automatikus skálázási átviteli kapacitást használó, szegmens nélküli gyűjteményt 'testCollection'
szeretne létrehozni, használja a következő parancsot:
use test
db.runCommand({
customAction: "CreateCollection", collection: "testCollection",
autoScaleSettings:{
maxThroughput: 4000
}
});
autoScaleSettings.maxThroughput
Az értékhez 4000 RU/s és 10 000 RU/s közötti tartományt adhat meg szegmenskulcs nélkül. A nagyobb automatikus skálázási teljesítmény érdekében meg kell adnia a paramétert shardKey
.
Példa: Horizontális automatikus skálázási gyűjtemény létrehozása
Ha egy 20 000 RU/s értékű automatikus skálázási átviteli kapacitást használó szegmenskulccsal 'a.b'
elnevezett 'testCollection'
szegmensgyűjteményt szeretne létrehozni, használja a következő parancsot:
use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", shardKey: "a.b", autoScaleSettings: { maxThroughput: 20000 }});
Frissítési gyűjtemény
A frissítésgyűjtemény bővítmény parancsa frissíti a megadott gyűjteményhez társított tulajdonságokat. A gyűjteményt a kiosztott átviteli sebességről automatikus skálázásra módosíthatja, és fordítva, csak az Azure Portalon támogatott.
{
customAction: "UpdateCollection",
collection: "<Name of the collection that you want to update>",
// Replace the line below with "autoScaleSettings: { maxThroughput: (int) }" if using Autoscale instead of Provisioned Throughput. Fill the required Autoscale max throughput setting. Changing between Autoscale and Provisioned throughput is only supported in the Azure Portal.
offerThroughput: (int) // Provisioned Throughput enabled with required throughput amount set.
indexes: [{key: {_id: 1}, name: "_id_1"}, ... ] // Optional indexes (3.6+ accounts only).
}
Az alábbi táblázat a parancs paramétereit ismerteti:
Hozam
Egy alapértelmezett egyéni parancsválaszt ad vissza. Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.
Példa: A gyűjteményhez társított kiosztott átviteli sebesség frissítése
Ha egy gyűjtemény "testCollection"
kiosztott átviteli sebességét 1200 kérelemegységre szeretné frissíteni, használja a következő parancsot:
use test
db.runCommand({customAction: "UpdateCollection", collection: "testCollection", offerThroughput: 1200 });
Gyűjtemény lekérése
Az egyéni gyűjtemény lekérése parancs visszaadja a gyűjteményobjektumot.
{
customAction: "GetCollection",
collection: "<Name of the collection>"
}
Az alábbi táblázat a parancs paramétereit ismerteti:
Mező | Típus | Leírás |
---|---|---|
customAction |
string |
Az egyéni parancs neve. Az értéknek a következőnek kell lennie GetCollection : . |
collection |
string |
A gyűjtemény neve. |
Hozam
Ha a parancs sikeres, a válasz tartalmaz egy dokumentumot a következő mezőkkel
Mező | Típus | Leírás |
---|---|---|
ok |
int |
A válasz állapota. 1 == siker. 0 == hiba. |
database |
string |
Az adatbázis neve. |
collection |
string |
A gyűjtemény neve. |
shardKeyDefinition |
document |
Szilánkkulcsként használt index-specifikációs dokumentum. Ez a mező nem kötelező válaszparaméter. |
provisionedThroughput |
int |
Kiosztott átviteli sebesség a gyűjteményen való beállításhoz. Ez a mező nem kötelező válaszparaméter. |
autoScaleSettings |
Object |
Ez az objektum tartalmazza az adatbázishoz társított kapacitásparamétereket, ha automatikus skálázási módot használ. Az maxThroughput érték azt a legtöbb kérelemegységet írja le, amellyel a gyűjtemény dinamikusan növelhető. |
Ha a parancs sikertelen, a rendszer egy alapértelmezett egyéni parancsválaszt ad vissza. Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.
Példa: A gyűjtemény lekérése
A gyűjtemény objektumának lekéréséhez "testCollection"
használja a következő parancsot:
use test
db.runCommand({customAction: "GetCollection", collection: "testCollection"});
Ha a gyűjteményhez társított átviteli kapacitás van, akkor az provisionedThroughput
értéket is tartalmazza, és a kimenet a következő lesz:
{
"database" : "test",
"collection" : "testCollection",
"provisionedThroughput" : 400,
"ok" : 1
}
Ha a gyűjteményhez társított automatikus skálázási átviteli sebesség tartozik, akkor a autoScaleSettings
paraméterrel rendelkező maxThroughput
objektumot is tartalmazza, amely meghatározza a gyűjtemény dinamikusan növekvő maximális átviteli sebességét. Emellett tartalmazza az provisionedThroughput
értéket is, amely meghatározza a gyűjtemény minimális átviteli sebességét, ha nincsenek kérések a gyűjteményben:
{
"database" : "test",
"collection" : "testCollection",
"provisionedThroughput" : 1000,
"autoScaleSettings" : {
"maxThroughput" : 10000
},
"ok" : 1
}
Ha a gyűjtemény adatbázisszintű átviteli sebességet oszt meg automatikus skálázási módban vagy manuális módon, a kimenet a következő lesz:
{ "database" : "test", "collection" : "testCollection", "ok" : 1 }
{
"database" : "test",
"provisionedThroughput" : 2000,
"autoScaleSettings" : {
"maxThroughput" : 20000
},
"ok" : 1
}
A változásstreamek párhuzamosítása
Ha nagy léptékű változásstreameket használ, a legjobb, ha egyenletesen elosztja a terhelést. A következő parancs egy vagy több változásfolyam-folytatási jogkivonatot ad vissza – mindegyik egy fizikai szegmensből/partícióból származó adatoknak felel meg (több logikai szegmens/partíció létezhet egy fizikai partíción). Minden folytatási jogkivonat miatt a watch() csak az adott fizikai szegmensből/partícióból ad vissza adatokat.
Minden db.collection.watch()
folytatási jogkivonaton (jogkivonatonként egy szálon) használható a streamek hatékony skálázásához.
{
customAction: "GetChangeStreamTokens",
collection: "<Name of the collection>",
startAtOperationTime: "<BSON Timestamp>" // Optional. Defaults to the time the command is run.
}
Példa: A stream jogkivonatának lekérése
Futtassa az egyéni parancsot az egyes fizikai szegmensek/partíciók önéletrajzi jogkivonatának lekéréséhez.
use test
db.runCommand({customAction: "GetChangeStreamTokens", collection: "<Name of the collection>"})
Futtasson egy watch() szálat/folyamatot a GetChangeStreamTokens egyéni parancsból visszaadott minden önéletrajzi jogkivonathoz. Íme egy példa egy szálra.
db.test_coll.watch([{ $match: { "operationType": { $in: ["insert", "update", "replace"] } } }, { $project: { "_id": 1, "fullDocument": 1, "ns": 1, "documentKey": 1 } }],
{fullDocument: "updateLookup",
resumeAfter: { "_data" : BinData(0,"eyJWIjoyLCJSaWQiOiJQeFVhQUxuMFNLRT0iLCJDb250aW51YXRpb24iOlt7IkZlZWRSYW5nZSI6eyJ0eXBlIjoiRWZmZWN0aXZlIFBhcnRpdGlvbiBLZXkgUmFuZ2UiLCJ2YWx1ZSI6eyJtaW4iOiIiLCJtYXgiOiJGRiJ9fSwiU3RhdGUiOnsidHlwZSI6ImNvbnRpbndkFLbiIsInZhbHVlIjoiXCIxODQ0XCIifX1dfQ=="), "_kind" : NumberInt(1)}})
A resumeAfter mezőben található dokumentum (érték) az önéletrajz jogkivonatát jelöli. A parancs watch()
a GetChangeStreamTokens egyéni parancs futtatása óta az adott fizikai partícióról beszúrt, frissített vagy lecserélt összes dokumentumhoz egy átkot ad vissza. A visszaadott adatok mintája itt található.
{
"_id": {
"_data": BinData(0,
"eyJWIjoyLCJSaWQiOiJQeFVhQUxuMFNLRT0iLCJDfdsfdsfdsft7IkZlZWRSYW5nZSI6eyJ0eXBlIjoiRWZmZWN0aXZlIFBhcnRpdGlvbiBLZXkgUmFuZ2UiLCJ2YWx1ZSI6eyJtaW4iOiIiLCJtYXgiOiJGRiJ9fSwiU3RhdGUiOnsidHlwZSI6ImNvbnRpbnVhdGlvbiIsInZhbHVlIjoiXCIxOTgwXCIifX1dfQ=="),
"_kind": 1
},
"fullDocument": {
"_id": ObjectId("60da41ec9d1065b9f3b238fc"),
"name": John,
"age": 6
},
"ns": {
"db": "test-db",
"coll": "test_coll"
},
"documentKey": {
"_id": ObjectId("60da41ec9d1065b9f3b238fc")
}
}
Minden visszaadott dokumentum tartalmaz egy önéletrajzi jogkivonatot (az egyes lapokhoz azonosak). Ezt az önéletrajz-jogkivonatot tárolni és újra használni kell, ha a szál/folyamat meghal. Ez az önéletrajzi jogkivonat onnan veszi fel a műveletet, ahol abbahagyta, és csak az adott fizikai partícióról fogad adatokat.
Egyéni parancs alapértelmezett kimenete
Ha nincs megadva, az egyéni válasz a következő mezőket tartalmazó dokumentumot tartalmaz:
Mező | Típus | Leírás |
---|---|---|
ok |
int |
A válasz állapota. 1 == siker. 0 == hiba. |
code |
int |
Csak akkor ad vissza, ha a parancs meghiúsult (vagyis ok == 0). A MongoDB hibakódját tartalmazza. Ez a mező nem kötelező válaszparaméter. |
errMsg |
string |
Csak akkor ad vissza, ha a parancs meghiúsult (vagyis ok == 0). Felhasználóbarát hibaüzenetet tartalmaz. Ez a mező nem kötelező válaszparaméter. |
Példa:
{ "ok" : 1 }
Következő lépések
Ezután megismerheti az Alábbi Azure Cosmos DB-fogalmakat: