Nejčastější dotazy ke službě Azure Cosmos DB for Table

PLATÍ PRO: Tabulka

Porovnání služby Azure Cosmos DB for Table a Azure Table Storage

Kde je rozhraní API pro tabulku, které není identické s chováním služby Azure Table Storage?

Existují určité rozdíly v chování, které uživatelé pocházející ze služby Azure Table Storage, kteří chtějí vytvářet tabulky se službou Azure Cosmos DB for Table, by měli vědět:

  • Azure Cosmos DB for Table používá k zajištění zaručeného výkonu model rezervované kapacity, ale znamená to, že jedna platí za kapacitu hned po vytvoření tabulky, i když se kapacita nepoužívá. Azure Table Storage platí jenom za využitou kapacitu. To vám pomůže vysvětlit, proč rozhraní API pro tabulku může nabídnout smlouvu SLA o 10 ms pro čtení a zápis 15 ms na 99. percentilu, zatímco Azure Table Storage nabízí 10sekundovou smlouvu SLA. V důsledku toho ale rozhraní API pro tabulky tabulek, i prázdné tabulky bez jakýchkoli požadavků, stojí peníze, aby se zajistilo, že kapacita bude k dispozici pro zpracování všech požadavků na ně na základě smlouvy SLA nabízené službou Azure Cosmos DB.

  • Výsledky dotazů vrácené rozhraním API pro tabulku nejsou seřazené v pořadí klíče oddílu nebo řádku, protože jsou ve službě Azure Table Storage.

  • Klíče řádků můžou mít maximálně 255 bajtů.

  • Dávky můžou mít maximálně 2 MB.

  • CORS se v současné době nepodporuje.

  • Názvy tabulek ve službě Azure Table Storage nerozlišují malá a velká písmena, ale jsou ve službě Azure Cosmos DB for Table.

  • Některé interní formáty služby Azure Cosmos DB pro informace o kódování, jako jsou binární pole, momentálně nejsou tak efektivní, jak by mohlo vypadat. To proto může způsobit neočekávaná omezení velikosti dat. V současné době například nelze použít úplný meg entity tabulky k ukládání binárních dat, protože kódování zvyšuje velikost dat.

  • Azure Cosmos DB si vyhrazuje názvy IDvlastností entity , ridetaga ResourceId v současné době se nepodporují.

  • TableQuery TakeCount není omezen na 1000.

  • Služba Azure Table Storage (ale ne Azure Cosmos DB for Table) z hlediska rozhraní REST API podporuje následující koncové body a možnosti dotazů:

    Metody REST Možnost koncového bodu rest nebo dotazu Adresy URL dokumentace Vysvětlení Podporováno ve službě Table Storage Podporováno v rozhraní API pro tabulku
    GET, PUT /?Restype=service@comp=properties Nastavení vlastností služby Table Service a získání vlastností služby Table Service Tento koncový bod slouží k nastavení pravidel CORS, konfigurace analýzy úložiště a nastavení protokolování. CORS se v současné době nepodporuje a analýzy a protokolování se v Azure Cosmos DB zpracovávají jinak než tabulky Azure Storage. Yes No
    OPTIONS /<table-resource-name> Předběžný požadavek na tabulku CORS Je to součást CORS, kterou Azure Cosmos DB v současné době nepodporuje. Yes No
    GET /?Restype=service@comp=stats Získání statistik služby Table Service Poskytuje informace o tom, jak rychle se replikují data mezi primárními a sekundárními daty. V Azure Cosmos DB to není potřeba, protože replikace je součástí zápisů. Yes No
    GET, PUT /mytable?comp=acl Získání seznamu ACL tabulky a nastavení seznamu ACL tabulky Tím se načte a nastaví uložené zásady přístupu používané ke správě sdílených přístupových podpisů (SAS). Yes No
  • Azure Cosmos DB pro tabulku podporuje pouze formát JSON, nikoli ATOM.

  • Konkrétně pro sadu .NET SDK existují některé třídy a metody, které Azure Cosmos DB v současné době nepodporuje.

    • CloudTableClient – třída
      • \ServiceProperties
      • \ServiceStats
    • CloudTable – třída
      • SetPermissions
      • GetPermissions

Další nejčastější dotazy

Potřebuji k použití rozhraní API pro tabulku novou sadu SDK?

Ne, stávající sady SDK úložiště by stále měly fungovat. Doporučuje se ale, aby jedna vždy získala nejnovější sady SDK pro nejlepší podporu a v mnoha případech vyšší výkon. Seznam dostupných jazyků najdete v tématu Úvod do služby Azure Cosmos DB for Table.

Jaké připojovací řetězec potřebuji použít pro připojení k rozhraní API pro tabulku?

Připojovací řetězec je:

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

Připojovací řetězec můžete získat ze stránky Připojení ion String na webu Azure Portal.

Návody přepsat nastavení konfigurace pro možnosti žádosti v sadě .NET SDK pro rozhraní API pro tabulku?

Některá nastavení se zpracovávají v metodě CreateCloudTableClient a jiné prostřednictvím app.config v aplikaci Nastavení oddílu v klientské aplikaci. Informace o nastavení konfigurace najdete v tématu Možnosti služby Azure Cosmos DB.

Existují nějaké změny pro zákazníky, kteří používají stávající sady SDK služby Azure Table Storage?

Nezaokrouhlovat. Neexistují žádné změny stávajících nebo nových zákazníků, kteří používají existující sady SDK služby Azure Table Storage.

Návody zobrazit data tabulky uložená ve službě Azure Cosmos DB pro použití s rozhraním API pro tabulku?

K procházení dat můžete použít Azure Portal. Můžete také použít rozhraní API pro kód tabulky nebo nástroje uvedené v další odpovědi.

Které nástroje pracují s rozhraním API pro tabulku?

Můžete použít Průzkumník služby Azure Storage.

Nástroje s flexibilitou pro převzetí připojovací řetězec ve formátu uvedeném dříve můžou podporovat nové rozhraní API pro tabulku. Seznam nástrojů tabulky najdete na stránce Klientské nástroje služby Azure Storage.

Řídí se souběžnost operací?

Ano, optimistická souběžnost se poskytuje prostřednictvím mechanismu ETag.

Podporuje se model dotazu OData pro entity?

Ano, rozhraní API pro tabulku podporuje dotaz OData a dotaz LINQ.

Můžu se připojit ke službě Azure Table Storage a Službě Azure Cosmos DB pro tabulky vedle sebe ve stejné aplikaci?

Ano, můžete se připojit vytvořením dvou samostatných instancí CloudTableClient, z nichž každý odkazuje na vlastní identifikátor URI prostřednictvím připojovací řetězec.

Návody migrovat existující aplikaci Azure Table Storage do této nabídky?

Jak se pro tuto službu provádí rozšíření velikosti úložiště, pokud například začínám s n GB dat a data se v průběhu času zvětšují na 1 TB?

Služba Azure Cosmos DB je navržená tak, aby poskytovala neomezené úložiště prostřednictvím horizontálního škálování. Služba může monitorovat a efektivně zvýšit vaše úložiště.

Návody monitorovat nabídku rozhraní API pro tabulky?

K monitorování požadavků a využití úložiště můžete použít rozhraní API pro metriky tabulek.

Návody vypočítat propustnost, která vyžadujem?

Pomocí estimátoru kapacity můžete vypočítat hodnotu TableThroughput, která je nutná pro operace. Další informace najdete v tématu Odhad jednotek žádostí a úložiště dat. Obecně můžete entitu zobrazit jako JSON a zadat čísla pro vaše operace.

Můžu rozhraní API pro sadu Table SDK používat místně s emulátorem?

V tuto chvíli to není možné.

Může moje existující aplikace pracovat s rozhraním API pro tabulku?

Ano, stejné rozhraní API je podporované.

Musím migrovat stávající aplikace Azure Table Storage do sady SDK, pokud nechci používat rozhraní API pro funkce tabulky?

Ne, můžete vytvářet a používat existující prostředky azure Table Storage bez přerušení jakéhokoli druhu. Pokud ale rozhraní API pro tabulku nepoužíváte, nemůžete využít výhod automatického indexu, možnosti dodatečné konzistence nebo globální distribuce.

Návody přidat replikaci dat v rozhraní API pro tabulku ve více než jedné oblasti Azure?

Globální nastavení replikace na portálu Azure Cosmos DB můžete použít k přidání oblastí vhodných pro vaši aplikaci. Pokud chcete vyvíjet globálně distribuovanou aplikaci, měli byste také přidat aplikaci s informacemi PreferredLocation nastavenými do místní oblasti pro zajištění nízké latence čtení.

Návody změnit primární oblast zápisu pro účet v rozhraní API pro tabulku?

K přidání oblasti a následnému převzetí služeb při selhání do požadované oblasti můžete použít podokno globálního portálu replikace služby Azure Cosmos DB. Pokyny najdete v tématu Vývoj s účty Azure Cosmos DB ve více oblastech.

Návody nakonfigurovat upřednostňované oblasti čtení pro nízkou latenci při distribuci dat?

Ke čtení z místního umístění použijte klíč PreferredLocation v souboru app.config. U existujících aplikací vyvolá rozhraní API pro tabulku chybu, pokud je nastavena vlastnost LocationMode. Odeberte tento kód, protože rozhraní API pro tabulku přebírá tyto informace ze souboru app.config.

Jak mám uvažovat o úrovních konzistence v rozhraní API pro tabulku?

Azure Cosmos DB poskytuje dobře zdůvodněné kompromisy mezi konzistencí, dostupností a latencí. Azure Cosmos DB nabízí rozhraní API pro vývojáře tabulek pět úrovní konzistence, takže můžete zvolit správný model konzistence na úrovni tabulky a provádět jednotlivé požadavky při dotazování na data. Když se klient připojí, může zadat úroveň konzistence. Úroveň můžete změnit pomocí argumentu consistencyLevel createCloudTableClient.

Rozhraní API pro tabulku poskytuje čtení s nízkou latencí s textem Čtení vlastních zápisů s konzistencí omezené nečekanosti jako výchozí. Další informace najdete v tématu Úrovně konzistence.

Azure Table Storage ve výchozím nastavení poskytuje silnou konzistenci v rámci oblasti a konečné konzistence v sekundárních umístěních.

Nabízí Azure Cosmos DB pro tabulky více úrovní konzistence než Azure Table Storage?

Ano, informace o tom, jak těžit z distribuované povahy služby Azure Cosmos DB, najdete v tématu Úrovně konzistence. Vzhledem k tomu, že pro úrovně konzistence jsou poskytovány záruky, můžete je používat s jistotou.

Když je povolená globální distribuce, jak dlouho trvá replikace dat?

Azure Cosmos DB potvrdí data trvale v místní oblasti a nasdílí data do jiných oblastí okamžitě v řádu milisekund. Tato replikace závisí pouze na době odezvy (RTT) datacentra. Další informace o globální distribuci služby Azure Cosmos DB najdete v tématu Azure Cosmos DB: Globálně distribuovaná databázová služba v Azure.

Je možné změnit úroveň konzistence žádosti pro čtení?

Pomocí služby Azure Cosmos DB můžete nastavit úroveň konzistence na úrovni kontejneru (v tabulce). Pomocí sady .NET SDK můžete změnit úroveň zadáním hodnoty klíče TableConsistencyLevel v souboru app.config. Možné hodnoty jsou: Silná, ohraničená neakutnost, relace, konzistentní předpona a případná. Další informace najdete v tématu Ladění úrovní konzistence dat ve službě Azure Cosmos DB. Klíčovou myšlenkou je, že nemůžete nastavit úroveň konzistence požadavků na více než nastavení tabulky. Nemůžete například nastavit úroveň konzistence pro tabulku na úrovni Eventual a úroveň konzistence požadavku na úrovni Strong.

Jak rozhraní API pro tabulku zpracovává převzetí služeb při selhání v případě výpadku oblasti?

Rozhraní API pro tabulku používá globálně distribuovanou platformu služby Azure Cosmos DB. Pokud chcete zajistit, aby vaše aplikace mohla tolerovat výpadek datacentra, povolte alespoň jednu další oblast pro účet na portálu Azure Cosmos DB, který se vyvíjí s účty Azure Cosmos DB ve více oblastech. Prioritu oblasti můžete nastavit pomocí portálu Vývoj s účty Azure Cosmos DB s více oblastmi.

Můžete přidat libovolný počet oblastí pro účet a určit, kam může převzít služby při selhání, tím, že poskytnete prioritu převzetí služeb při selhání. Pokud chcete databázi použít, musíte tam také poskytnout aplikaci. Když to uděláte, vaši zákazníci nebudou docházet k výpadkům. Nejnovější klientská sada SDK .NET je automaticky naváděná, ale ostatní sady SDK nejsou. To znamená, že může zjistit oblast, která je down, a automaticky převzít služby při selhání do nové oblasti.

Je rozhraní API pro tabulky povolené pro zálohy?

Ano, rozhraní API pro tabulku používá pro zálohování platformu služby Azure Cosmos DB. Zálohy se provádějí automaticky. Další informace najdete v tématu Online zálohování a obnovení ve službě Azure Cosmos DB.

Indexuje rozhraní API pro tabulku ve výchozím nastavení všechny atributy entity?

Ano, ve výchozím nastavení se indexují všechny atributy entity. Další informace najdete v tématu Azure Cosmos DB: Zásady indexování.

Znamená to, že pro splnění dotazů nemusím vytvářet více než jeden index?

Ano, Azure Cosmos DB for Table poskytuje automatické indexování všech atributů bez jakékoli definice schématu. Tato automatizace umožňuje vývojářům soustředit se na aplikaci, nikoli na vytváření a správu indexů. Další informace najdete v tématu Azure Cosmos DB: Zásady indexování.

Můžu změnit zásady indexování?

Ano, zásadu indexování můžete změnit zadáním definice indexu. Musíte správně zakódovat a utéct nastavení.

Zásady indexování se dají nastavit jenom na portálu v Průzkumníku dat, přejděte na konkrétní tabulku, kterou chcete změnit, a pak přejděte na Zásady škálování a indexování Nastavení>, proveďte požadovanou změnu a pak uložte.

Zdá se, že azure Cosmos DB jako platforma má spoustu funkcí, jako je řazení, agregace, hierarchie a další funkce. Přidáte tyto funkce do rozhraní API pro tabulku?

Rozhraní API pro tabulku poskytuje stejné funkce dotazů jako Azure Table Storage. Azure Cosmos DB podporuje také řazení, agregace, geoprostorové dotazy, hierarchie a širokou škálu integrovaných funkcí. Další informace najdete v tématu Dotazy SQL.

Kdy mám změnit TableThroughput pro rozhraní API pro tabulku?

Pokud platí některé z následujících podmínek, měli byste změnit TableThroughput:

  • Provádíte extrakci, transformaci a načítání dat (ETL) nebo chcete nahrát mnoho dat za krátkou dobu.
  • Potřebujete větší propustnost z kontejneru nebo ze sady kontejnerů na back-endu. Vidíte například, že použitá propustnost je větší než zřízená propustnost a že dochází k omezování. Další informace najdete v tématu Nastavení propustnosti pro kontejnery Azure Cosmos DB.

Můžu vertikálně navýšit nebo snížit kapacitu propustnosti rozhraní API pro tabulku tabulky?

Ano, propustnost můžete škálovat pomocí podokna škálování na portálu Azure Cosmos DB. Další informace najdete v tématu Nastavení propustnosti.

Je výchozí sada TableThroughput pro nově zřízené tabulky?

Ano, pokud tabulku TableThroughput nepřepíšete prostřednictvím app.config a nepoužíváte předem vytvořený kontejner ve službě Azure Cosmos DB, služba vytvoří tabulku s propustností 400.

Existují nějaké změny cen pro stávající zákazníky služby Azure Table Storage?

Nezaokrouhlovat. Stávající zákazníci služby Azure Table Storage nemají žádnou změnu ceny.

Jak se počítá cena pro rozhraní API pro tabulku?

Cena závisí na přidělené tabulce.

Návody zpracovávat omezení rychlosti u tabulek v rozhraní API pro nabídku tabulek?

Pokud je frekvence požadavků větší než kapacita zřízené propustnosti pro příslušný kontejner nebo sadu kontejnerů, zobrazí se chyba a sada SDK opakuje volání použitím zásad opakování.

Proč je potřeba zvolit propustnost kromě PartitionKey a RowKey, aby bylo využití rozhraní API pro nabídku Table služby Azure Cosmos DB?

Azure Cosmos DB nastaví výchozí propustnost kontejneru, pokud ji nezadáte v souboru app.config nebo prostřednictvím portálu.

Azure Cosmos DB poskytuje záruky pro výkon a latenci s horními hranicemi provozu. Tato záruka je možná, když modul může vynucovat zásady správného řízení v operacích tenanta. Nastavení tableThroughput zajišťuje, že získáte zaručenou propustnost a latenci, protože platforma si tuto kapacitu rezervuje a zaručuje provozní úspěch.

Pomocí specifikace propustnosti ji můžete elasticky změnit tak, aby využívala sezónnost vaší aplikace, splňovala potřeby propustnosti a ušetřila náklady.

Služba Azure Table Storage je pro mě levná, protože platím jenom za ukládání dat a zřídka se dotazuji. Zdá se, že nabídka Azure Cosmos DB for Table mi účtuje, i když jsem neprovedli jednu transakci nebo nic neuložili. Můžeš to vysvětlit?

Azure Cosmos DB je navržený tak, aby byl globálně distribuovaný systém založený na úrovni smluv SLA se zárukami dostupnosti, latence a propustnosti. Když si v Azure Cosmos DB rezervujete propustnost, je na rozdíl od propustnosti jiných systémů zaručená. Azure Cosmos DB poskytuje více možností, které si zákazníci vyžádali, jako jsou sekundární indexy a globální distribuce.

Při příjmu dat do služby Azure Table Storage se mi nikdy nedostává úplné oznámení o plné kvótě (označující, že je oddíl plný). S rozhraním API pro tabulku se zobrazí tato zpráva. Omezuje mě tato nabídka a vynutí mě změnit stávající aplikaci?

Azure Cosmos DB je systém založený na úrovni smlouvy SLA, který poskytuje neomezené škálování a zaručuje latenci, propustnost, dostupnost a konzistenci. Pokud chcete zajistit zaručený výkon úrovně Premium, ujistěte se, že velikost dat a index jsou spravovatelné a škálovatelné. 20GB limit počtu entit nebo položek na klíč oddílu je zajistit, abychom zajistili skvělý výkon vyhledávání a dotazů. Pokud chcete zajistit, aby se vaše aplikace škálovala dobře, i pro Azure Storage, doporučujeme nevytvoření horkého oddílu tak, že uložíte všechny informace do jednoho oddílu a dotážete se na něj.

Takže partitionKey a RowKey jsou stále potřeba s rozhraním API pro tabulku?

Ano. Vzhledem k tomu, že povrchová oblast rozhraní API pro tabulku je podobná sadě SDK služby Azure Table Storage, poskytuje klíč oddílu efektivní způsob distribuce dat. Klíč řádku je v rámci daného oddílu jedinečný. Klíč řádku musí být k dispozici a nesmí být null jako ve standardní sadě SDK. Délka RowKey je 255 bajtů a délka PartitionKey je 1 kB.

Jaké jsou chybové zprávy pro rozhraní API pro tabulku?

Azure Table Storage a Azure Cosmos DB pro tabulky používají stejné sady SDK, takže většina chyb je stejná.

Proč se při pokusu o vytvoření velkého množství tabulek po druhé v rozhraní API pro tabulku omezím?

Azure Cosmos DB je systém založený na sla, který poskytuje záruky latence, propustnosti, dostupnosti a konzistence. Vzhledem k tomu, že se jedná o zřízený systém, vyhrazuje si prostředky na záruku těchto požadavků. Rychlost rychlého vytváření tabulek je zjištěna a omezena. Doporučujeme podívat se na míru vytváření tabulek a snížit ji na méně než 5 minut. Nezapomeňte, že rozhraní API pro tabulku je zřízený systém. Když ho zřídíte, začnete za něj platit.

Návody poskytnout zpětnou vazbu k sadě SDK nebo chybám?

Svůj názor můžete sdílet některým z následujících způsobů: