Veelgestelde vragen over Azure Cosmos DB for Table

VAN TOEPASSING OP: Tabel

Azure Cosmos DB vergelijken met Table en Azure Table Storage

Waar is DE API voor Table niet identiek aan het gedrag van Azure Table Storage?

Er zijn enkele gedragsverschillen die gebruikers die afkomstig zijn van Azure Table Storage die tabellen willen maken met Azure Cosmos DB for Table, moeten rekening houden met:

  • Azure Cosmos DB for Table maakt gebruik van een gereserveerd capaciteitsmodel om gegarandeerde prestaties te garanderen, maar dit betekent dat één betaalt voor de capaciteit zodra de tabel wordt gemaakt, zelfs als de capaciteit niet wordt gebruikt. Met Azure Table Storage betaalt u slechts voor capaciteit die wordt gebruikt. Dit helpt om uit te leggen waarom DE API voor Table een SLA van 10 ms lezen en 15 ms schrijven kan bieden op het 99e percentiel, terwijl Azure Table Storage een SLA van 10 seconden biedt. Maar als gevolg hiervan, met API voor tabeltabellen, zelfs lege tabellen zonder aanvragen, kost geld om ervoor te zorgen dat de capaciteit beschikbaar is voor het afhandelen van aanvragen in de SLA die wordt aangeboden door Azure Cosmos DB.

  • Queryresultaten die door de API voor Table worden geretourneerd, worden niet gesorteerd in de volgorde van partitiesleutels/rijsleutels, omdat ze zich in Azure Table Storage bevinden.

  • Rijsleutels mogen maximaal 255 bytes zijn.

  • Batches kunnen maximaal 2 MB's hebben.

  • CORS wordt momenteel niet ondersteund.

  • Tabelnamen in Azure Table Storage zijn niet hoofdlettergevoelig, maar bevinden zich in Azure Cosmos DB voor Table.

  • Sommige interne indelingen van Azure Cosmos DB voor coderingsgegevens, zoals binaire velden, zijn momenteel niet zo efficiënt als u wilt. Dit kan daarom onverwachte beperkingen voor de gegevensgrootte veroorzaken. Momenteel kan bijvoorbeeld niet de volledige Meg van een tabelentiteit worden gebruikt om binaire gegevens op te slaan, omdat de codering de grootte van de gegevens verhoogt.

  • Azure Cosmos DB behoudt de namen van entiteitseigenschappenID, riden ResourceIdetagdeze worden momenteel niet ondersteund.

  • TableQuery TakeCount is niet beperkt tot 1000.

  • In termen van de REST API ondersteunt Azure Table Storage (maar niet Azure Cosmos DB for Table) de volgende eindpunten/queryopties:

    Rest-methoden Rest-eindpunt/queryoptie Doc-URL's Uitleg Ondersteund in Table Storage Ondersteund in API voor Table
    GET, PUT /?Restype=service@comp=properties Eigenschappen van tabelservice instellen en eigenschappen van tabelservice ophalen Dit eindpunt wordt gebruikt om CORS-regels, configuratie van opslaganalyses en logboekregistratie-instellingen in te stellen. CORS wordt momenteel niet ondersteund en analyses en logboekregistratie worden anders verwerkt in Azure Cosmos DB dan Azure Storage-tabellen Ja Nr.
    OPTIONS /<table-resource-name> Voorbereidende CORS-tabelaanvraag Dit maakt deel uit van CORS die momenteel niet door Azure Cosmos DB wordt ondersteund. Ja Nr.
    GET /?Restype=service@comp=stats Tabelservicestatistieken ophalen Biedt informatie over hoe snel gegevens worden gerepliceerd tussen primaire en secundaire bestanden. Dit is niet nodig in Azure Cosmos DB omdat de replicatie deel uitmaakt van schrijfbewerkingen. Ja Nr.
    GET, PUT /mytable?comp=acl Tabel-ACL ophalen en tabel-ACL instellen Hiermee wordt het opgeslagen toegangsbeleid ingesteld dat wordt gebruikt voor het beheren van Shared Access Signatures (SAS). Ja Nr.
  • Azure Cosmos DB for Table ondersteunt alleen de JSON-indeling, niet ATOM.

  • Voor de .NET SDK zijn er met name enkele klassen en methoden die momenteel niet door Azure Cosmos DB worden ondersteund.

    • CloudTableClient-klasse
      • \ServiceProperties
      • \ServiceStats
    • CloudTable-klasse
      • SetPermissions
      • GetPermissions

Andere veelgestelde vragen

Heb ik een nieuwe SDK nodig om de API voor Table te kunnen gebruiken?

Nee, bestaande opslag-SDK's moeten nog steeds werken. Het is echter raadzaam om altijd de nieuwste SDK's te krijgen voor de beste ondersteuning en in veel gevallen superieure prestaties. Bekijk de lijst met beschikbare talen in de inleiding tot Azure Cosmos DB voor tabellen.

Wat is de verbindingsreeks die ik moet gebruiken om verbinding te maken met de API voor Table?

De verbindingsreeks is:

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

U kunt de verbindingsreeks ophalen op de pagina Verbinding maken ion-tekenreeks in Azure Portal.

Hoe kan ik de configuratie-instellingen voor de aanvraagopties in de .NET SDK voor de API voor Table overschrijven?

Sommige instellingen worden verwerkt in de methode CreateCloudTableClient en andere via de app.config in de sectie app Instellingen in de clienttoepassing. Zie de mogelijkheden van Azure Cosmos DB voor informatie over configuratie-instellingen.

Zijn er wijzigingen voor klanten die gebruikmaken van de bestaande Azure Table Storage SDK's?

Geen. Er zijn geen wijzigingen voor bestaande of nieuwe klanten die gebruikmaken van de bestaande Azure Table Storage SDK's.

Hoe kan ik tabelgegevens weergeven die zijn opgeslagen in Azure Cosmos DB voor gebruik met de API voor Table?

U kunt Azure Portal gebruiken om door de gegevens te bladeren. U kunt ook de API voor tabelcode of de hulpprogramma's gebruiken die in het volgende antwoord worden genoemd.

Welke hulpprogramma's werken met de API voor Table?

U kunt De Azure Storage Explorer gebruiken.

Hulpprogramma's met de flexibiliteit om een verbindingsreeks in de eerder opgegeven indeling te gebruiken, kunnen de nieuwe API voor Table ondersteunen. Er wordt een lijst met hulpmiddelen voor tabellen weergegeven op de pagina Azure Storage-clienthulpprogramma's .

Wordt de gelijktijdigheid van bewerkingen beheerd?

Ja, optimistische gelijktijdigheid wordt geboden via het gebruik van het ETag-mechanisme.

Wordt het OData-querymodel ondersteund voor entiteiten?

Ja, de API voor Table ondersteunt OData-query en LINQ-query.

Kan ik verbinding maken met Azure Table Storage en Azure Cosmos DB voor Table naast elkaar in dezelfde toepassing?

Ja, u kunt verbinding maken door twee afzonderlijke exemplaren van de CloudTableClient te maken, die elk via de verbindingsreeks naar een eigen URI verwijzen.

Hoe kan ik een bestaande Azure Table Storage-toepassing migreren naar deze aanbieding?

AzCopy wordt ondersteund.

Hoe wordt de opslaggrootte voor deze service uitgebreid als ik bijvoorbeeld begin met 'n' GB aan gegevens en mijn gegevens na verloop van tijd toenemen tot 1 TB?

Azure Cosmos DB is ontworpen om onbeperkte opslag te bieden via horizontaal schalen. De service kan uw opslag bewaken en effectief verhogen.

Hoe kan ik de API voor Table-aanbieding controleren?

U kunt de API voor het deelvenster Metrische tabelgegevens gebruiken om aanvragen en opslaggebruik te bewaken.

Hoe kan ik de doorvoer berekenen die ik nodig heb?

U kunt de capaciteitsschatter gebruiken om de TableThroughput te berekenen die vereist is voor de bewerkingen. Zie Aanvraageenheden en gegevensopslag schatten voor meer informatie. Over het algemeen kunt u uw entiteit weergeven als JSON en de getallen voor uw bewerkingen opgeven.

Kan ik de API voor Table SDK lokaal gebruiken met de emulator?

Op dit moment niet.

Kan mijn bestaande toepassing werken met de API voor Table?

Ja, dezelfde API wordt ondersteund.

Moet ik mijn bestaande Azure Table Storage-toepassingen migreren naar de SDK als ik de API voor Table-functies niet wil gebruiken?

Nee, u kunt bestaande Azure Table Storage-assets zonder onderbrekingen maken en gebruiken. Als u de API voor Table echter niet gebruikt, kunt u niet profiteren van de automatische index, de extra consistentieoptie of globale distributie.

Hoe kan ik replicatie van de gegevens in de API voor Tabel toevoegen in meer dan één regio van Azure?

U kunt de globale replicatie-instellingen van de Azure Cosmos DB-portal gebruiken om regio's toe te voegen die geschikt zijn voor uw toepassing. Als u een wereldwijd gedistribueerde toepassing wilt ontwikkelen, moet u uw toepassing ook toevoegen met de PreferredLocation-informatie die is ingesteld op de lokale regio voor het bieden van een lage leeslatentie.

Hoe kan ik de primaire schrijfregio voor het account in de API voor Tabel wijzigen?

U kunt het deelvenster globale replicatieportal van Azure Cosmos DB gebruiken om een regio toe te voegen en vervolgens een failover uit te voeren naar de vereiste regio. Zie Ontwikkelen met Azure Cosmos DB-accounts met meerdere regio's voor instructies.

Hoe kan ik mijn voorkeursleesregio's configureren voor lage latentie wanneer ik mijn gegevens distribueer?

Gebruik de PreferredLocation-sleutel in het bestand app.config om te lezen vanaf de lokale locatie. Voor bestaande toepassingen genereert de API voor Table een fout als LocationMode is ingesteld. Verwijder die code, omdat de API voor Table deze informatie ophaalt uit het bestand app.config.

Hoe moet ik nadenken over consistentieniveaus in de API voor Table?

Azure Cosmos DB biedt goed onderbouwde afwegingen tussen consistentie, beschikbaarheid en latentie. Azure Cosmos DB biedt vijf consistentieniveaus voor API's voor tabelontwikkelaars, zodat u het juiste consistentiemodel op tabelniveau kunt kiezen en afzonderlijke aanvragen kunt indienen tijdens het uitvoeren van query's op de gegevens. Wanneer een client verbinding maakt, kan er een consistentieniveau worden opgegeven. U kunt het niveau wijzigen via het argument consistencyLevel van CreateCloudTableClient.

De API voor Table biedt leesbewerkingen met lage latentie met 'Uw eigen schrijfbewerkingen lezen', met de consistentie Gebonden veroudering als de standaardinstelling. Zie Consistentieniveaus voor meer informatie.

Standaard biedt Azure Table Storage sterke consistentie binnen een regio en uiteindelijke consistentie op de secundaire locaties.

Biedt Azure Cosmos DB for Table meer consistentieniveaus dan Azure Table Storage?

Ja, zie consistentieniveaus voor informatie over hoe u kunt profiteren van de gedistribueerde aard van Azure Cosmos DB. Omdat er garanties worden geboden voor de consistentieniveaus, kunt u ze met vertrouwen gebruiken.

Wanneer wereldwijde distributie is ingeschakeld, hoe lang duurt het om de gegevens te repliceren?

In Azure Cosmos DB worden de gegevens duurzaam doorgevoerd in de lokale regio en worden de gegevens onmiddellijk in milliseconden naar andere regio's gepusht. Deze replicatie is alleen afhankelijk van de retourtijd (RTT) van het datacenter. Zie Azure Cosmos DB: Een wereldwijd gedistribueerde databaseservice in Azure voor meer informatie over de wereldwijde distributiemogelijkheden van Azure Cosmos DB.

Kan het consistentieniveau van de leesaanvraag worden gewijzigd?

Met Azure Cosmos DB kunt u het consistentieniveau instellen op containerniveau (in de tabel). Met behulp van de .NET SDK kunt u het niveau wijzigen door de waarde op te geven voor de key TableConsistencyLevel in het bestand app.config. De mogelijke waarden zijn: Strong, Bounded Staleness, Session, Consistent Voorvoegsel en Uiteindelijk. Zie Tunable data consistency levels in Azure Cosmos DB voor meer informatie. Het belangrijkste idee is dat u het consistentieniveau van de aanvraag niet kunt instellen op meer dan de instelling voor de tabel. U kunt bijvoorbeeld het consistentieniveau voor de tabel op Eventual en het consistentieniveau van de aanvraag niet instellen op Sterk.

Hoe verwerkt de API voor Table failover als een regio uitvalt?

De API voor Table maakt gebruik van het wereldwijd gedistribueerde platform van Azure Cosmos DB. Om ervoor te zorgen dat uw toepassing downtime van datacenters tolereert, schakelt u ten minste één regio in voor het account in de Azure Cosmos DB-portal Ontwikkelen met Azure Cosmos DB-accounts voor meerdere regio's. U kunt de prioriteit van de regio instellen met behulp van de portal Ontwikkelen met Azure Cosmos DB-accounts voor meerdere regio's.

U kunt zoveel regio's toevoegen als u wilt voor het account en bepalen waar een failover naar kan worden uitgevoerd door een failoverprioriteit op te geven. Als u de database wilt gebruiken, moet u daar ook een toepassing opgeven. Wanneer u dit doet, ondervinden uw klanten geen downtime. De nieuwste .NET-client-SDK is automatisch homing, maar de andere SDK's zijn dat niet. Dat wil gezegd, het kan de regio detecteren die niet beschikbaar is en automatisch een failover naar de nieuwe regio uitvoert.

Is de API voor Table ingeschakeld voor back-ups?

Ja, de API voor Table maakt gebruik van het platform van Azure Cosmos DB voor back-ups. Back-ups worden automatisch gemaakt. Zie Online back-up en herstel met Azure Cosmos DB voor meer informatie.

Indexeert de API voor Table standaard alle kenmerken van een entiteit?

Ja, alle kenmerken van een entiteit worden standaard geïndexeerd. Zie Azure Cosmos DB: Indexeringsbeleid voor meer informatie.

Betekent dit dat ik niet meer dan één index moet maken om aan de query's te voldoen?

Ja, Azure Cosmos DB for Table biedt automatische indexering van alle kenmerken zonder schemadefinitie. Met deze automatisering kunnen ontwikkelaars zich richten op de toepassing in plaats van op het maken en beheren van indexen. Zie Azure Cosmos DB: Indexeringsbeleid voor meer informatie.

Kan ik het indexeringsbeleid wijzigen?

Ja, u kunt het indexeringsbeleid wijzigen door de indexdefinitie op te geven. U moet de instellingen correct coderen en escapen.

Het indexeringsbeleid kan alleen worden ingesteld in de portal bij Data Explorer, navigeer naar de specifieke tabel die u wilt wijzigen en ga vervolgens naar het beleid voor schalen en Instellingen-indexering>, breng de gewenste wijziging aan en sla vervolgens op.

Azure Cosmos DB als platform lijkt veel mogelijkheden te hebben, zoals sorteren, aggregaties, hiërarchie en andere functionaliteit. Voegt u deze mogelijkheden toe aan de API voor Table?

De API voor Table biedt dezelfde queryfunctionaliteit als Azure Table Storage. Azure Cosmos DB biedt ook ondersteuning voor sorteren, statistische functies, georuimtelijke query, hiërarchie en een groot aantal ingebouwde functies. Zie SQL-query's voor meer informatie.

Wanneer moet ik TableThroughput voor de API voor Table wijzigen?

U moet TableThroughput wijzigen wanneer een van de volgende voorwaarden van toepassing is:

  • U voert een ETL(extract, transformatie en belasting) van gegevens uit, of u wilt in korte tijd talloze gegevens uploaden.
  • U hebt meer doorvoer nodig van de container of van een set containers aan de back-end. U ziet bijvoorbeeld dat de gebruikte doorvoer meer is dan de ingerichte doorvoer en dat u wordt beperkt. Zie Doorvoer instellen voor Azure Cosmos DB-containers voor meer informatie.

Kan ik de doorvoer van mijn API voor tabeltabel omhoog of omlaag schalen?

Ja, u kunt het schaalvenster van de Azure Cosmos DB-portal gebruiken om de doorvoer te schalen. Zie Doorvoer instellen voor meer informatie.

Is een standaard TableThroughput ingesteld voor nieuw ingerichte tabellen?

Ja, als u de TableThroughput niet overschrijft via app.config en geen vooraf gemaakte container in Azure Cosmos DB gebruikt, maakt de service een tabel met doorvoer van 400.

Zijn er wijzigingen in de prijzen voor bestaande klanten van de Azure Table Storage-service?

Geen. Er is geen wijziging in de prijs voor bestaande Azure Table Storage-klanten.

Hoe wordt de prijs berekend voor de API voor Table?

De prijs is afhankelijk van de toegewezen TableThroughput.

Hoe kan ik eventuele snelheidsbeperking voor de tabellen in DE API voor Table-aanbieding verwerken?

Als de aanvraagsnelheid meer is dan de capaciteit van de ingerichte doorvoer voor de onderliggende container of een set containers, krijgt u een foutmelding en wordt de aanroep opnieuw uitgevoerd door de SDK toe te passen op het beleid voor opnieuw proberen.

Waarom moet ik een doorvoer kiezen naast PartitionKey en RowKey om te profiteren van de API voor Table-aanbieding van Azure Cosmos DB?

Azure Cosmos DB stelt een standaarddoorvoer in voor uw container als u er geen opgeeft in het bestand app.config of via de portal.

Azure Cosmos DB biedt garanties voor prestaties en latentie, met bovengrenzen voor bewerkingen. Deze garantie is mogelijk wanneer de engine governance kan afdwingen voor de bewerkingen van de tenant. Het instellen van TableThroughput zorgt ervoor dat u de gegarandeerde doorvoer en latentie krijgt, omdat het platform deze capaciteit behoudt en operationeel succes garandeert.

Met behulp van de doorvoerspecificatie kunt u deze elastisch wijzigen om te profiteren van de seizoensgebondenheid van uw toepassing, te voldoen aan de doorvoerbehoeften en kosten te besparen.

Azure Table Storage is goedkoop voor mij, omdat ik alleen betaal om de gegevens op te slaan en ik zelden query's heb uitgevoerd. Het azure Cosmos DB for Table-aanbod lijkt me op te laden, ook al heb ik nog geen enkele transactie uitgevoerd of iets opgeslagen. Kun je het uitleggen?

Azure Cosmos DB is ontworpen als een wereldwijd gedistribueerd, SLA-systeem met garanties voor beschikbaarheid, latentie en doorvoer. Wanneer u doorvoer reserveert in Azure Cosmos DB, is dit gegarandeerd, in tegenstelling tot de doorvoer van andere systemen. Azure Cosmos DB biedt meer mogelijkheden die klanten hebben aangevraagd, zoals secundaire indexen en wereldwijde distributie.

Ik krijg nooit een melding over het volledige quotum (waarmee wordt aangegeven dat een partitie vol is) wanneer ik gegevens opneemt in Azure Table Storage. Met de API voor Table krijg ik dit bericht. Beperkt dit aanbod mij en dwingt mij mijn bestaande toepassing te wijzigen?

Azure Cosmos DB is een OP SLA gebaseerd systeem dat onbeperkte schaal biedt, met garanties voor latentie, doorvoer, beschikbaarheid en consistentie. Om gegarandeerde Premium-prestaties te garanderen, moet u ervoor zorgen dat uw gegevensgrootte en -index beheersbaar en schaalbaar zijn. De limiet van 20 GB voor het aantal entiteiten of items per partitiesleutel is om ervoor te zorgen dat we goede opzoek- en queryprestaties bieden. Om ervoor te zorgen dat uw toepassing goed wordt geschaald, zelfs voor Azure Storage, raden we u aan geen dynamische partitie te maken door alle gegevens in één partitie op te slaan en er query's op uit te voeren.

Dus PartitionKey en RowKey zijn nog steeds vereist met de API voor Table?

Ja. Omdat het surface area van de API for Table vergelijkbaar is met die van de Azure Table Storage SDK, biedt de partitiesleutel een efficiënte manier om de gegevens te distribueren. De rijsleutel is uniek binnen die partitie. De rijsleutel moet aanwezig zijn en kan niet null zijn zoals in de standaard-SDK. De lengte van RowKey is 255 bytes en de lengte van PartitionKey is 1 kB.

Wat zijn de foutberichten voor de API voor Table?

Azure Table Storage en Azure Cosmos DB for Table gebruiken dezelfde SDK's, zodat de meeste fouten hetzelfde zijn.

Waarom krijg ik een beperking wanneer ik veel tabellen na elkaar probeer te maken in de API voor Table?

Azure Cosmos DB is een SLA-systeem dat garanties biedt voor latentie, doorvoer, beschikbaarheid en consistentie. Omdat het een ingericht systeem is, reserveert het resources om deze vereisten te garanderen. De snelle snelheid van het maken van tabellen wordt gedetecteerd en beperkt. We raden u aan om de snelheid van het maken van tabellen te bekijken en deze te verlagen tot minder dan 5 per minuut. Houd er rekening mee dat de API voor Table een ingericht systeem is. Op het moment dat u het inricht, begint u ervoor te betalen.

Hoe kan ik feedback geven over de SDK of bugs?

U kunt uw feedback op een van de volgende manieren delen: