Gyakori kérdések az Azure Cosmos DB for Table szolgáltatással kapcsolatban

A KÖVETKEZŐKRE VONATKOZIK: Táblázat

Az Azure Cosmos DB for Table és az Azure Table Storage összehasonlítása

Hol található a Table API nem azonos az Azure Table Storage viselkedésével?

Vannak olyan viselkedésbeli különbségek, amelyeket az Azure Table Storage-ból származó azon felhasználók, akik táblákat szeretnének létrehozni az Azure Cosmos DB for Table használatával, tisztában kell lenniük a következőkkel:

  • Az Azure Cosmos DB for Table fenntartott kapacitásmodellt használ a garantált teljesítmény biztosítása érdekében, de ez azt jelenti, hogy a rendszer a tábla létrehozásakor azonnal fizet a kapacitásért, még akkor is, ha a kapacitást nem használják. Az Azure Table Storage esetében csak a felhasznált kapacitásért kell fizetni. Ez segít elmagyarázni, hogy az API for Table miért kínál 10 ms olvasási és 15 ms írási SLA-t a 99. percentilisen, míg az Azure Table Storage 10 másodperces SLA-t kínál. Ennek következtében azonban a Table-táblákHOZ készült API-val, még az üres, kérések nélküli táblák is pénzbe kerülnek annak érdekében, hogy a kapacitás rendelkezésre álljon a hozzájuk érkező kérések kezeléséhez az Azure Cosmos DB által kínált SLA-n.

  • A Table API által visszaadott lekérdezési eredmények nem partíciókulcs/sorkulcs szerinti sorrendben vannak rendezve, mivel az Azure Table Storage-ban vannak.

  • A sorkulcsok legfeljebb 255 bájt lehetnek.

  • A kötegek legfeljebb 2 MB-ot tartalmazhatnak.

  • A CORS jelenleg nem támogatott.

  • Az Azure Table Storage táblanevei nem megkülönböztetik a kis- és nagybetűket, de az Azure Cosmos DB for Table szolgáltatásban találhatók.

  • Az Azure Cosmos DB egyes belső információformátumai, például a bináris mezők jelenleg nem olyan hatékonyak, mint amilyennek az ember szeretné. Ezért ez váratlan korlátozásokat okozhat az adatméretben. Jelenleg például nem lehet egy táblaentitás teljes megabájtjával bináris adatokat tárolni, mert a kódolás növeli az adatok méretét.

  • Az Azure Cosmos DB lefoglalja az entitástulajdonságok nevétID, ridetagés ResourceId jelenleg nem támogatottak.

  • A TableQuery TakeCount nem korlátozódik 1000-re.

  • A REST API szempontjából az Azure Table Storage (de az Azure Cosmos DB for Table nem) a következő végpontokat/lekérdezési lehetőségeket támogatja:

    Rest metódusok Rest Endpoint/Query Option Doc URL-címek Magyarázat A Table Storage támogatott Támogatott az API for Table
    GET, PUT /?Restype=service@comp=properties A Table Service tulajdonságainak beállítása és a Table Service tulajdonságainak lekérése Ez a végpont a CORS-szabályok, a tárelemzési konfiguráció és a naplózási beállítások beállítására szolgál. A CORS jelenleg nem támogatott, és az elemzés és a naplózás másképpen történik az Azure Cosmos DB-ben, mint az Azure Storage-táblákban Igen Nem
    OPTIONS /<table-resource-name> Előzetes CORS-táblakérés Ez a CORS része, amelyet az Azure Cosmos DB jelenleg nem támogat. Igen Nem
    GET /?Restype=service@comp=stats Table Service-statisztikák lekérése Tájékoztatást nyújt arról, hogy milyen gyorsan replikálják az adatokat az elsődleges és a másodpéldányok között. Erre nincs szükség az Azure Cosmos DB-ben, mivel a replikáció az írások része. Igen Nem
    GET, PUT /mytable?comp=acl Tábla ACL lekérése és tábla ACL-ének beállítása Ez lekéri és beállítja a megosztott hozzáférésű jogosultságkódok (SAS) kezeléséhez használt tárolt hozzáférési szabályzatokat. Igen Nem
  • Az Azure Cosmos DB for Table csak a JSON formátumot támogatja, az ATOM-t nem.

  • Különösen a .NET SDK esetében vannak olyan osztályok és metódusok, amelyeket az Azure Cosmos DB jelenleg nem támogat.

    • CloudTableClient osztály
      • \ServiceProperties
      • \ServiceStats
    • CloudTable osztály
      • SetPermissions
      • GetPermissions

Egyéb gyakori kérdések

Szükségem van egy új SDK-ra a Table API használatához?

Nem, a meglévő tárolási SDK-knak továbbra is működnie kell. Javasoljuk azonban, hogy mindig a legújabb SDK-kat kapja a legjobb támogatásért és sok esetben kiváló teljesítményért. Az elérhető nyelvek listáját az Azure Cosmos DB for Table bemutatása című témakörben találja.

Milyen kapcsolati sztring kell használnom a Table API-hoz való csatlakozáshoz?

A kapcsolati sztring a következő:

DefaultEndpointsProtocol=https;AccountName=<AccountNamefromCosmosDB;AccountKey=<FromKeysPaneofCosmosDB>;TableEndpoint=https://<AccountName>.table.cosmosdb.azure.com

A kapcsolati sztring az Azure Portal Csatlakozás ion String lapján szerezheti be.

Hogyan felülbírálja a table api .NET SDK-jának kérési beállításaihoz tartozó konfigurációs beállításokat?

Egyes beállításokat a CreateCloudTableClient metóduson, másokat pedig az alkalmazás.config alkalmazáson Gépház az ügyfélalkalmazás szakaszán keresztül kezelünk. A konfigurációs beállításokkal kapcsolatos információkért tekintse meg az Azure Cosmos DB képességeit.

Vannak változások a meglévő Azure Table Storage SDK-t használó ügyfelek számára?

Nincs. A meglévő vagy új ügyfelek nem módosítják a meglévő Azure Table Storage SDK-kat használó ügyfeleket.

Hogyan megtekintheti az Azure Cosmos DB-ben tárolt táblaadatokat a Table API-val való használatra?

Az Azure Portalon tallózhat az adatok között. Használhatja a Table Code API-t vagy a következő válaszban említett eszközöket is.

Mely eszközök működnek együtt a Table API-val?

Használhatja az Azure Storage Explorert.

A korábban megadott formátumban kapcsolati sztring rugalmassággal rendelkező eszközök támogathatják az új TABLE API-t. A táblaeszközök listáját az Azure Storage Ügyféleszközök lapján találja.

A műveletek egyidejűsége szabályozva van?

Igen, az optimista egyidejűség az ETag mechanizmus használatával érhető el.

Az OData-lekérdezési modell támogatott az entitásokhoz?

Igen, a Table API támogatja az OData-lekérdezést és a LINQ-lekérdezést.

Csatlakozhatok egymás mellett az Azure Table Storage-hoz és az Azure Cosmos DB-hez a Tablehez ugyanabban az alkalmazásban?

Igen, a CloudTableClient két különálló példányának létrehozásával csatlakozhat, mindegyik a saját URI-jára mutat a kapcsolati sztring keresztül.

Hogyan migrálni egy meglévő Azure Table Storage-alkalmazást ebbe az ajánlatba?

Az AzCopy támogatott.

Hogyan történik a tárterület méretének bővítése ehhez a szolgáltatáshoz, ha például "n" GB-nyi adattal kezdek, és az adataim idővel 1 TB-ra nőnek?

Az Azure Cosmos DB úgy lett kialakítva, hogy horizontális skálázás használatával korlátlan tárterületet biztosítson. A szolgáltatás figyelheti és hatékonyan növelheti a tárterületet.

Hogyan monitorozni az API-t a Table-ajánlathoz?

A Table Metrics API ablaktábla használatával figyelheti a kérelmeket és a tárterület használatát.

Hogyan kiszámolni a szükséges átviteli sebességet?

A kapacitásbecslővel kiszámíthatja a műveletekhez szükséges TableThroughput sebességet. További információ: Kérelemegységek és adattárolás becslése. Az entitást általában JSON-ként jelenítheti meg, és megadhatja a műveletekhez tartozó számokat.

Használhatom helyben a Table SDK API-t az emulátorsal?

Jelenleg nem.

Működik a meglévő alkalmazásom a Table API-val?

Igen, ugyanez az API támogatott.

Át kell migrálnom a meglévő Azure Table Storage-alkalmazásaimat az SDK-ba, ha nem szeretném használni az API-t a Table-funkciókhoz?

Nem, bármilyen megszakítás nélkül létrehozhat és használhat meglévő Azure Table Storage-objektumokat. Ha azonban nem használja a Table API-t, nem használhatja az automatikus indexet, a további konzisztencia-beállítást vagy a globális eloszlást.

Hogyan adja hozzá az adatok replikálását a Table API-ban az Azure több régiójában?

Az Azure Cosmos DB portál globális replikációs beállításaival olyan régiókat vehet fel, amelyek megfelelnek az alkalmazásnak. Globálisan elosztott alkalmazás fejlesztéséhez az alacsony olvasási késés biztosításához a PreferredLocation információinak a helyi régióhoz való hozzáadásával is hozzá kell adnia az alkalmazást.

Hogyan módosítani a fiók elsődleges írási régióját a Table API-ban?

Az Azure Cosmos DB globális replikációs portál paneljén hozzáadhat egy régiót, majd feladatátvételt végezhet a szükséges régióban. Útmutatásért lásd : Fejlesztés többrégiós Azure Cosmos DB-fiókokkal.

Hogyan az előnyben részesített olvasási régiókat alacsony késésre konfigurálja az adatok elosztásakor?

A helyi helyről való olvasáshoz használja a PreferredLocation kulcsot az app.config fájlban. Meglévő alkalmazások esetén a Table API hibát jelez, ha a LocationMode be van állítva. Távolítsa el ezt a kódot, mert a Table API felveszi ezeket az információkat az app.config fájlból.

Hogyan gondoljak a Table API konzisztenciaszintjeire?

Az Azure Cosmos DB jól megalapozott kompromisszumot biztosít a konzisztencia, a rendelkezésre állás és a késés között. Az Azure Cosmos DB öt konzisztenciaszintet kínál a Table-fejlesztőknek készült API-nak, így a táblázat szintjén kiválaszthatja a megfelelő konzisztenciamodellt, és egyéni kéréseket hajthat létre az adatok lekérdezése során. Amikor egy ügyfél csatlakozik, konzisztenciaszintet adhat meg. A szintet a CreateCloudTableClient konzisztenciaLevel argumentumával módosíthatja.

A Table API alacsony késésű olvasást biztosít a "Saját írások olvasása" beállítással, alapértelmezettként pedig a kötött-elavultsági konzisztencia. További információ: Konzisztenciaszintek.

Az Azure Table Storage alapértelmezés szerint erős konzisztenciát biztosít egy régión belül, és végleges konzisztenciát a másodlagos helyeken.

Az Azure Cosmos DB for Table több konzisztenciaszintet kínál, mint az Azure Table Storage?

Igen, az Azure Cosmos DB elosztott jellegének előnyeiről a Konzisztenciaszintek című témakörben olvashat. Mivel a konzisztenciaszintekre garanciát nyújtanak, megbízhatóan használhatja őket.

Ha a globális terjesztés engedélyezve van, mennyi ideig tart az adatok replikálása?

Az Azure Cosmos DB tartósan véglegesíti az adatokat a helyi régióban, és ezredmásodpercben azonnal leküldi az adatokat más régiókba. Ez a replikáció csak az adatközpont utazási idejének (RTT) függvénye. Az Azure Cosmos DB globális terjesztési képességével kapcsolatos további információkért lásd : Azure Cosmos DB: Globálisan elosztott adatbázis-szolgáltatás az Azure-ban.

Módosítható az olvasási kérelem konzisztenciaszintje?

Az Azure Cosmos DB-vel a konzisztenciaszintet a tároló szintjén (a táblázatban) állíthatja be. A .NET SDK használatával módosíthatja a szintet, ha megadja a TableConsistencyLevel kulcs értékét az app.config fájlban. A lehetséges értékek a következők: erős, határolt elavultság, munkamenet, konzisztens előtag és végleges. További információ: Az Azure Cosmos DB adatkonzisztenciájának szintjei. A lényeg az, hogy a kéréskonzisztencia szintjét nem lehet a tábla beállításánál nagyobbra állítani. Például a tábla konzisztenciaszintje nem állítható be az Eventual és a kérés konzisztenciaszintjén Erős értéken.

Hogyan kezeli a Table API a feladatátvételt, ha egy régió leáll?

A Table API az Azure Cosmos DB globálisan elosztott platformját használja. Annak érdekében, hogy az alkalmazás képes legyen elviselni az adatközpont állásidejét, engedélyezze legalább egy további régiót a fiók számára az Azure Cosmos DB portálon , amely többrégiós Azure Cosmos DB-fiókokkal fejleszt. A régió prioritását a többrégiós Azure Cosmos DB-fiókokkal rendelkező Fejlesztés portál használatával állíthatja be.

A feladatátvételi prioritás megadásával tetszőleges számú régiót adhat hozzá a fiókhoz, és szabályozhatja, hogy hová adhatja át a feladatátvételt. Az adatbázis használatához ott is meg kell adnia egy alkalmazást. Ha így tesz, az ügyfelek nem tapasztalnak állásidőt. A legújabb .NET-ügyféloldali SDK automatikus homing, de a többi SDK nem. Vagyis képes észlelni azt a régiót, amely le van állítva, és automatikusan át tudja adni az új régiónak.

Engedélyezve van a Table API biztonsági mentésekhez?

Igen, a Table API az Azure Cosmos DB platformját használja biztonsági mentésekhez. A biztonsági mentések automatikusan készülnek. További információ: Online biztonsági mentés és visszaállítás az Azure Cosmos DB-vel.

A Table API alapértelmezés szerint egy entitás összes attribútumát indexeli?

Igen, egy entitás összes attribútuma alapértelmezés szerint indexelt. További információ: Azure Cosmos DB: Indexelési szabályzatok.

Ez azt jelenti, hogy nem kell több indexet létrehoznom a lekérdezések teljesítéséhez?

Igen, az Azure Cosmos DB for Table az összes attribútum automatikus indexelését biztosítja sémadefiníció nélkül. Ezzel az automatizálással a fejlesztők nem az indexek létrehozására és felügyeletére, hanem az alkalmazásra összpontosítanak. További információ: Azure Cosmos DB: Indexelési szabályzatok.

Módosíthatom az indexelési szabályzatot?

Igen, az indexdefiníció megadásával módosíthatja az indexelési szabályzatot. A beállításokat megfelelően kell kódolnia, és meg kell szabadulnia a beállításoktól.

Az indexelési szabályzatot csak az Adatkezelő portálján lehet beállítani, keresse meg a módosítani kívánt táblát, majd lépjen a Méretezés & Gépház> indexelési házirendre, végezze el a kívánt módosítást, majd mentse.

Úgy tűnik, hogy az Azure Cosmos DB platformként számos funkcióval rendelkezik, például rendezéssel, összesítéssel, hierarchiával és egyéb funkciókkal. Hozzáadja ezeket a képességeket a Table API-hoz?

A Table API ugyanazokat a lekérdezési funkciókat biztosítja, mint az Azure Table Storage. Az Azure Cosmos DB a rendezést, az összesítéseket, a földrajzi lekérdezéseket, a hierarchiát és számos különféle beépített funkciót is támogat. További információ: SQL-lekérdezések.

Mikor kell módosítani a Table API TableThroughput sebességét?

A TableThroughput sebességet az alábbi feltételek valamelyike esetén kell módosítania:

  • Adatok kinyerését, átalakítását és betöltését (ETL) hajtja végre, vagy rövid idő alatt számos adatot szeretne feltölteni.
  • Több átviteli sebességre van szüksége a tárolóból vagy a háttérbeli tárolók készletéből. Láthatja például, hogy a használt átviteli sebesség nagyobb, mint a kiosztott átviteli sebesség, és szabályozva lesz. További információ: Átviteli sebesség beállítása az Azure Cosmos DB-tárolókhoz.

Vertikálisan felskálázhatom vagy leskálázhatom a Table table API-jának átviteli sebességét?

Igen, az Azure Cosmos DB portál méretezési paneljén skálázhatja az átviteli sebességet. További információ: Átviteli sebesség beállítása.

Az újonnan kiépített táblákhoz alapértelmezett TableThroughput van beállítva?

Igen, ha nem bírálja felül a TableThroughputot az app.config használatával, és nem használ előre létrehozott tárolót az Azure Cosmos DB-ben, a szolgáltatás létrehoz egy 400 átviteli sebességet tartalmazó táblát.

Változik az Azure Table Storage szolgáltatás meglévő ügyfeleinek díjszabása?

Nincs. A meglévő Azure Table Storage-ügyfelek árában nincs változás.

Hogyan számítja ki a tábla API-jának árát?

Az ár a lefoglalt TableThroughput függvénytől függ.

Hogyan kezelni a táblák sebességkorlátozását a Table Offering API-ban?

Ha a kérelem sebessége meghaladja a mögöttes tárolóhoz vagy tárolókészlethez kiosztott átviteli sebesség kapacitását, hibaüzenet jelenik meg, és az SDK az újrapróbálkozási szabályzat alkalmazásával újrapróbálkozza a hívást.

Miért kell a PartitionKey és a RowKey mellett egy átviteli sebességet választani, hogy kihasználhassam az Azure Cosmos DB Table-ajánlatának előnyeit?

Az Azure Cosmos DB beállít egy alapértelmezett átviteli sebességet a tárolóhoz, ha nem biztosít egyet az app.config fájlban vagy a portálon keresztül.

Az Azure Cosmos DB garantálja a teljesítményt és a késést, a működés felső határával. Ez a garancia akkor lehetséges, ha a motor kikényszerítheti a bérlő műveleteinek szabályozását. A TableThroughput beállítása biztosítja a garantált átviteli sebességet és késést, mivel a platform fenntartja ezt a kapacitást, és garantálja a működési sikert.

Az átviteli sebesség specifikációjának használatával rugalmasan módosíthatja, hogy kihasználhassa az alkalmazás szezonalitását, kielégítse az átviteli sebességet, és költségeket takarítson meg.

Az Azure Table Storage olcsó volt számomra, mert csak az adatok tárolásáért fizetek, és ritkán kérdezek le. Az Azure Cosmos DB for Table ajánlata úgy tűnik, hogy díjat kér, annak ellenére, hogy nem hajtottam végre egyetlen tranzakciót sem tároltam semmit. Meg tudja magyarázni?

Az Azure Cosmos DB egy globálisan elosztott, SLA-alapú rendszer, amely garantálja a rendelkezésre állást, a késést és az átviteli sebességet. Ha az Azure Cosmos DB-ben lefoglalja az átviteli sebességet, az garantált, ellentétben más rendszerek átviteli sebességével. Az Azure Cosmos DB további képességeket biztosít, amelyeket az ügyfelek igényeltek, például másodlagos indexeket és globális disztribúciót.

Soha nem kapok teljes kvótaértesítést (amely azt jelzi, hogy egy partíció megtelt), amikor adatokat ömlesztek az Azure Table Storage-ba. A Table API-val ezt az üzenetet kapom. Ez az ajánlat korlátozza, és arra kényszerít, hogy módosítsam a meglévő alkalmazásomat?

Az Azure Cosmos DB egy SLA-alapú rendszer, amely korlátlan skálázást biztosít, és garantálja a késést, az átviteli sebességet, a rendelkezésre állást és a konzisztenciát. A garantált prémium teljesítmény biztosítása érdekében győződjön meg arról, hogy az adatméret és az index kezelhető és méretezhető. A partíciókulcsonkénti entitások vagy elemek számának 20 GB-os korlátja annak biztosítása, hogy nagyszerű keresési és lekérdezési teljesítményt biztosítsunk. Annak érdekében, hogy az alkalmazás jól skálázható legyen, még az Azure Storage esetében is, javasoljuk, hogy ne hozzon létre gyakori elérésű partíciót úgy, hogy az összes információt egyetlen partícióban tárolja és lekérdezi.

A PartitionKey és a RowKey továbbra is szükséges a Table API-hoz?

Igen. Mivel a Table API felülete hasonló az Azure Table Storage SDK-hoz, a partíciókulcs hatékony módot biztosít az adatok elosztására. A sorkulcs egyedi a partíción belül. A sorkulcsnak jelen kell lennie, és nem lehet null értékű, mint a standard SDK-ban. A RowKey hossza 255 bájt, a PartitionKey hossza pedig 1 KB.

Milyen hibaüzenetek jelennek meg a Table API-hoz?

Az Azure Table Storage és az Azure Cosmos DB for Table ugyanazokat az SDK-kat használja, így a legtöbb hiba ugyanaz.

Miért van szabályozva, ha sok táblát próbálok egymás után létrehozni a Table API-ban?

Az Azure Cosmos DB egy SLA-alapú rendszer, amely késést, átviteli sebességet, rendelkezésre állást és konzisztenciát garantál. Mivel ez egy kiépített rendszer, erőforrásokat foglal le ezeknek a követelményeknek a biztosítására. A táblák létrehozásának gyors üteme észlelhető és szabályozható. Javasoljuk, hogy vizsgálja meg a táblák létrehozásának sebességét, és csökkentse azt percenként 5-nél kevesebbre. Ne feledje, hogy a Table API egy kiépített rendszer. A kiépítés pillanatában elkezd fizetni érte.

Hogyan visszajelzést küldeni az SDK-ról vagy a hibákról?

Visszajelzését az alábbi módokon oszthatja meg: