VAN TOEPASSING OP: Cassandra
Wat zijn de belangrijkste verschillen tussen Azure Cosmos DB voor Cassandra en Apache Cassandra?
Hier volgen enkele belangrijke verschillen tussen de API voor de Cassandra-service en Apache Cassandra:
- Apache Cassandra raadt een limiet van 100 MB aan voor de grootte van een partitiesleutel. Met de API voor Cassandra voor Azure Cosmos DB kan maximaal 20 GB per partitie worden gebruikt.
- Met Apache Cassandra kunt u duurzame doorvoeringen uitschakelen. U kunt het schrijven naar het doorvoerlogboek overslaan en rechtstreeks naar de gegevensstructuur in het geheugen gaan. Dit kan leiden tot gegevensverlies als het knooppunt uitvalt voordat de in-memory gegevensstructuren worden leeggemaakt naar SSTables op schijf. Azure Cosmos DB voert altijd duurzame doorvoeringen uit om gegevensverlies te voorkomen.
- Apache Cassandra kan verminderde prestaties zien als de workload veel vervangingen of verwijderingen omvat. De reden hiervoor is tombstones dat de leesworkload moet overslaan om de meest recente gegevens op te halen. De API voor Cassandra ziet geen verminderde leesprestaties wanneer de workload veel vervangingen of verwijderingen heeft.
- Tijdens scenario's met hoge vervangingsworkloads moet compressie worden uitgevoerd om SSTables op schijf samen te voegen. (Er is een samenvoeging nodig omdat de schrijfbewerkingen van Apache Cassandra alleen worden toegevoegd. Meerdere updates worden opgeslagen als afzonderlijke SSTable-vermeldingen die periodiek moeten worden samengevoegd). Deze situatie kan ook leiden tot lagere leesprestaties tijdens het comprimeren. Deze invloed op de prestaties vindt niet plaats in de API voor Cassandra omdat de API geen compressie implementeert.
- Het instellen van een replicatiefactor van 1 is mogelijk met Apache Cassandra. Dit leidt echter tot lage beschikbaarheid als het enige knooppunt met de gegevens uitvalt. Dit is geen probleem met de API voor Cassandra voor Azure Cosmos DB, omdat er altijd een replicatiefactor van 4 is (quorum van 3).
- Het toevoegen of verwijderen van knooppunten in Apache Cassandra vereist handmatige tussenkomst, samen met een hoog CPU-gebruik op het nieuwe knooppunt, terwijl bestaande knooppunten enkele tokenbereiken naar het nieuwe knooppunt verplaatsen. Deze situatie is hetzelfde wanneer u een bestaand knooppunt buiten gebruik gaat stellen. De API voor Cassandra wordt echter uitgeschaald zonder dat er problemen zijn waargenomen in de service of toepassing.
- U hoeft num_tokens niet in te stellen op elk knooppunt in het cluster, zoals in Apache Cassandra. Azure Cosmos DB beheert knooppunten en tokenbereiken volledig.
- De API voor Cassandra wordt volledig beheerd. U hebt geen opdrachten nodig, zoals herstellen en buiten gebruik stellen die worden gebruikt in Apache Cassandra.
Welke protocolversie ondersteunt de API voor Cassandra?
De API voor Cassandra voor Azure Cosmos DB ondersteunt Cassandra Query Language (CQL) m versie 3.x. De CQL-compatibiliteit is gebaseerd op de openbare GitHub-opslagplaats van Apache Cassandra. Als u feedback hebt over het ondersteunen van andere protocollen, stuurt u een e-mail naar askcosmosdbcassandra@microsoft.com.
Waarom is het kiezen van doorvoer voor een tabel een vereiste?
Azure Cosmos DB stelt de standaarddoorvoer voor uw container in op basis van waar u de tabel maakt: Azure Portal of CQL.
Azure Cosmos DB biedt garanties voor prestaties en latentie, met bovengrenzen voor bewerkingen. Deze garanties zijn mogelijk wanneer de engine governance kan afdwingen voor de bewerkingen van de tenant. Het instellen van doorvoer zorgt ervoor dat u de gegarandeerde doorvoer en latentie krijgt, omdat het platform deze capaciteit reserveert en een geslaagde bewerking garandeert. U kunt de doorvoer elastisch wijzigen om te profiteren van de seizoensgebondenheid van uw toepassing en kosten te besparen.
Het doorvoerconcept wordt uitgelegd in het artikel Aanvraageenheden in Azure Cosmos DB . De doorvoer voor een tabel wordt gelijkmatig verdeeld over de onderliggende fysieke partities.
Wat is de doorvoer van een tabel die wordt gemaakt via CQL?
Azure Cosmos DB maakt gebruik van aanvraageenheden per seconde (RU/s) als valuta voor het leveren van doorvoer. Tabellen die zijn gemaakt via CQL, hebben standaard 400 RU's. U kunt de RU wijzigen vanuit Azure Portal.
CQL
CREATE TABLE keyspaceName.tablename (user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=1200
.NET
int provisionedThroughput = 400;
var simpleStatement = new SimpleStatement($"CREATE TABLE {keyspaceName}.{tableName} (user_id int PRIMARY KEY, lastname text)");
var outgoingPayload = new Dictionary<string, byte[]>();
outgoingPayload["cosmosdb_provisioned_throughput"] = Encoding.UTF8.GetBytes(provisionedThroughput.ToString());
simpleStatement.SetOutgoingPayload(outgoingPayload);
Wat gebeurt er wanneer doorvoer wordt gebruikt?
Azure Cosmos DB biedt garanties voor prestaties en latentie, met bovengrenzen voor bewerkingen. Deze garanties zijn mogelijk wanneer de engine governance kan afdwingen voor de bewerkingen van de tenant. Het instellen van doorvoer zorgt ervoor dat u de gegarandeerde doorvoer en latentie krijgt, omdat het platform deze capaciteit reserveert en een geslaagde bewerking garandeert.
Wanneer u deze capaciteit overgaat, krijgt u het volgende foutbericht dat aangeeft dat uw capaciteit is verbruikt:
0x1001 Overbelast: de aanvraag kan niet worden verwerkt omdat aanvraagsnelheid groot is
Het is essentieel om te zien welke bewerkingen (en hun volume) dit probleem veroorzaken. U kunt een idee krijgen van de verbruikte capaciteit met metrische gegevens in Azure Portal. Vervolgens moet u ervoor zorgen dat de capaciteit bijna evenveel wordt verbruikt voor alle onderliggende partities. Als u ziet dat één partitie de meeste doorvoer verbruikt, hebt u scheeftrekken van de werkbelasting.
Er zijn metrische gegevens beschikbaar die laten zien hoe doorvoer wordt gebruikt gedurende uren, over dagen en per zeven dagen, tussen partities of in aggregaties. Zie Bewaking en foutopsporing met metrische gegevens in Azure Cosmos DB voor meer informatie.
Diagnostische logboeken worden uitgelegd in het artikel diagnostische logboekregistratie van Azure Cosmos DB.
Wordt de primaire sleutel toegewezen aan het concept van de partitiesleutel van Azure Cosmos DB?
Ja, de partitiesleutel wordt gebruikt om de entiteit op de juiste locatie te plaatsen. In Azure Cosmos DB wordt deze gebruikt om de juiste logische partitie te vinden die is opgeslagen op een fysieke partitie. Het partitioneringsconcept wordt goed uitgelegd in het artikel Partitie en schaal in Azure Cosmos DB . Het essentiële voordeel hier is dat een logische partitie niet de limiet van 20 GB overschrijdt.
Wat gebeurt er wanneer ik een melding krijg dat een partitie vol is?
Azure Cosmos DB is een systeem op basis van service level agreement (SLA). Het biedt onbeperkte schaal, met garanties voor latentie, doorvoer, beschikbaarheid en consistentie. Deze onbeperkte opslag is gebaseerd op horizontaal uitschalen van gegevens, waarbij partitionering wordt gebruikt als sleutelconcept. Het partitioneringsconcept wordt goed uitgelegd in het artikel Partitie en schaal in Azure Cosmos DB .
U moet voldoen aan de limiet van 20 GB voor het aantal entiteiten of items per logische partitie. Om ervoor te zorgen dat uw toepassing goed wordt geschaald, 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. Deze fout kan alleen optreden als uw gegevens scheef zijn: dat wil gezegd, u hebt veel gegevens voor één partitiesleutel (meer dan 20 GB). U kunt de distributie van gegevens vinden met behulp van de opslagportal. U kunt deze fout oplossen door de tabel opnieuw te maken en een gedetailleerde primaire (partitiesleutel) te kiezen, zodat gegevens beter kunnen worden gedistribueerd.
Kan ik de API voor Cassandra gebruiken als sleutelwaardearchief met miljoenen of miljarden partitiesleutels?
Azure Cosmos DB kan onbeperkte gegevens opslaan door de opslag uit te schalen. Deze opslag is onafhankelijk van de doorvoer. Ja, u kunt altijd de API voor Cassandra gebruiken om sleutels en waarden op te slaan en op te halen door de juiste primaire/partitiesleutel op te geven. Deze afzonderlijke sleutels krijgen hun eigen logische partitie en zitten boven op een fysieke partitie zonder problemen.
Kan ik meer dan één tabel maken met de API voor Cassandra?
Ja, het is mogelijk om meer dan één tabel te maken met de API voor Cassandra. Elk van deze tabellen wordt behandeld als eenheid voor doorvoer en opslag.
Kan ik meer dan één tabel achter elkaar maken?
Azure Cosmos DB is door resources beheerd systeem voor zowel gegevens- als besturingsvlakactiviteiten. Containers, zoals verzamelingen en tabellen, zijn runtime-entiteiten die zijn ingericht voor een bepaalde doorvoercapaciteit. Het maken van deze containers in snelvolgorde is geen verwachte activiteit en kan worden beperkt. Als u tests hebt die tabellen onmiddellijk verwijderen of maken, probeert u deze uit te zetten.
Wat is het maximum aantal tabellen dat ik kan maken?
Er is geen fysieke limiet voor het aantal tabellen. Als u een groot aantal tabellen hebt (waarbij de totale stabiele grootte meer dan 10 TB aan gegevens bedraagt) die moeten worden gemaakt, niet de gebruikelijke tientallen of honderden, stuurt u e-mail naar askcosmosdbcassandra@microsoft.com.
Wat is het maximum aantal keyspaces dat ik kan maken?
Er is geen fysieke limiet voor het aantal keyspaces omdat het metagegevenscontainers zijn. Als u een groot aantal keyspaces hebt, stuurt u een e-mail naar askcosmosdbcassandra@microsoft.com.
Kan ik na het starten van een normale tabel veel gegevens inbrengen?
Ja. Uitgaande van uniform gedistribueerde partities, wordt de opslagcapaciteit automatisch beheerd en neemt toe naarmate u meer gegevens pusht. U kunt dus zo veel mogelijk gegevens importeren als u nodig hebt zonder knooppunten en meer te beheren en inrichten. Maar als u een groot aantal onmiddellijke gegevensgroei verwacht, is het logischer om rechtstreeks in te richten voor de verwachte doorvoer in plaats van dat u lager begint en deze onmiddellijk verhoogt.
Kan ik YAML-bestandsinstellingen gebruiken om API-gedrag te configureren?
De API voor Cassandra voor Azure Cosmos DB biedt compatibiliteit op protocolniveau voor het uitvoeren van bewerkingen. Het verbergt de complexiteit van beheer, bewaking en configuratie. Als ontwikkelaar/gebruiker hoeft u zich geen zorgen te maken over beschikbaarheid, tombstones, sleutelcache, rijcache, bloeifilter en een groot aantal andere instellingen. De API voor Cassandra is gericht op het bieden van de lees- en schrijfprestaties die u nodig hebt zonder de overhead van configuratie en beheer.
Biedt de API voor Cassandra ondersteuning voor het toevoegen van knooppunten, clusterstatus en knooppuntstatusopdrachten?
De API voor Cassandra vereenvoudigt de capaciteitsplanning en reageert op de elasticiteitsvereisten voor doorvoer en opslag. Met Azure Cosmos DB richt u de doorvoer in die u nodig hebt. Vervolgens kunt u het aantal keren omhoog en omlaag schalen gedurende de dag, zonder dat u zich zorgen hoeft te maken over het toevoegen, verwijderen of beheren van knooppunten. U hoeft geen hulpprogramma's te gebruiken voor knooppunt- en clusterbeheer.
Wat gebeurt er met verschillende configuratie-instellingen voor het maken van keyspace, zoals eenvoudig/netwerk?
Azure Cosmos DB biedt wereldwijde distributie uit het vak om redenen voor beschikbaarheid en lage latentie. U hoeft geen replica's of andere zaken in te stellen. Schrijfbewerkingen zijn altijd duurzaam quorum vastgelegd in elke regio waar u schrijft, terwijl u prestatiegaranties biedt.
Wat gebeurt er met verschillende instellingen voor tabelmetagegevens?
Azure Cosmos DB biedt prestatiegaranties voor lees- en schrijfbewerkingen en doorvoer. U hoeft zich dus geen zorgen te maken over het aanraken van een van de configuratie-instellingen en het per ongeluk bewerken ervan. Deze instellingen omvatten bloeifilter, caching, kans op leesherstel, gc_grace en compressie memtable_flush_period.
Wordt time-to-live ondersteund voor Cassandra-tabellen?
Ja, TTL wordt ondersteund.
Hoe kan ik de infrastructuur bewaken samen met doorvoer?
Azure Cosmos DB is een platformservice waarmee u de productiviteit kunt verhogen en u geen zorgen hoeft te maken over het beheren en bewaken van infrastructuur. U hoeft bijvoorbeeld de knooppuntstatus, replicastatus, gc en besturingssysteemparameters eerder niet te controleren met verschillende hulpprogramma's. U hoeft alleen te zorgen voor doorvoer die beschikbaar is in de metrische gegevens van de portal om te zien of u wordt beperkt en vervolgens die doorvoer verhoogt of verlaagt. U kunt:
Welke client-SDK's kunnen werken met de API voor Cassandra?
De clientstuurprogramma's van de Apache Cassandra SDK die gebruikmaken van CQLv3 zijn gebruikt voor clientprogramma's. Als u andere stuurprogramma's hebt die u gebruikt of als u problemen ondervindt, stuurt u een e-mail naar askcosmosdbcassandra@microsoft.com.
Worden samengestelde partitiesleutels ondersteund?
Ja, u kunt reguliere syntaxis gebruiken om samengestelde partitiesleutels te maken.
Kan ik sstableloader gebruiken voor het laden van gegevens?
Nee, sstableloader wordt niet ondersteund.
Kan ik een on-premises Apache Cassandra-cluster koppelen aan de API voor Cassandra?
Azure Cosmos DB heeft nu een geoptimaliseerde ervaring voor een cloudomgeving zonder de overhead van bewerkingen. Als u een koppeling nodig hebt, stuurt u een e-mail naar askcosmosdbcassandra@microsoft.com met een beschrijving van uw scenario. We werken aan een aanbieding om het on-premises of cloud-Cassandra-cluster te koppelen aan de API voor Cassandra voor Azure Cosmos DB.
Biedt de API voor Cassandra volledige back-ups?
Azure Cosmos DB biedt twee gratis volledige back-ups die zijn gemaakt met een interval van vier uur voor alle API's. U hoeft dus geen back-upschema in te stellen.
U kunt de back-upretentie en -frequentie zelf beheren.
Als u een back-up wilt terugzetten, stuurt u een e-mail naar askcosmosdbcassandra@microsoft.com of stuurt u een ondersteuningsaanvraag. Informatie over back-upmogelijkheden vindt u in het artikel Automatische online back-up en herstel met Azure Cosmos DB .
Hoe verwerkt de API voor het Cassandra-account failover als een regio uitvalt?
De API voor Cassandra is afkomstig van het wereldwijd gedistribueerde platform van Azure Cosmos DB. Schakel ten minste één regio in voor het account in Azure Portal om ervoor te zorgen dat uw toepassing downtime van datacenters tolereert. Zie Hoge beschikbaarheid met Azure Cosmos DB voor meer informatie.
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.
Indexeert de API voor Cassandra standaard alle kenmerken van een entiteit?
Nee De API voor Cassandra ondersteunt secundaire indexen, die zich op een vergelijkbare manier gedragen als Apache Cassandra. Met de API wordt niet standaard elk kenmerk geïndexeerd.
Kan ik de nieuwe API voor Cassandra SDK lokaal gebruiken met de emulator?
Ja, dit wordt ondersteund. U vindt meer informatie over hoe u dit kunt inschakelen in het artikel Azure Cosmos DB Emulator gebruiken voor lokale ontwikkeling en testen .
Hoe kan ik gegevens migreren van Apache Cassandra-clusters naar Azure Cosmos DB?
U kunt lezen over migratieopties in de zelfstudie Gegevens migreren naar API voor Cassandra-account in Azure Cosmos DB .