Gyakori kérdések az Apache Cassandra-hoz készült Azure Cosmos DB-ről

A KÖVETKEZŐKRE VONATKOZIK: Cassandra

Mik a legfontosabb különbségek a Cassandrához készült Azure Cosmos DB és az Apache Cassandra között?

Íme néhány fontos különbség a Cassandra szolgáltatás API-ja és az Apache Cassandra között:

  • Az Apache Cassandra 100 MB-os korlátot javasol a partíciókulcs méretére vonatkozóan. Az Azure Cosmos DB-hez készült Cassandra API partíciónként legfeljebb 20 GB-ot tesz lehetővé.
  • Az Apache Cassandra lehetővé teszi a tartós véglegesítések letiltását. Kihagyhatja az írást a véglegesítési naplóba, és közvetlenül a memóriában lévő adatstruktúrára léphet. Ez adatvesztéshez vezethet, ha a csomópont lemegy, mielőtt a memóriabeli adatstruktúrák kipirulnak a lemez SSTables-jába. Az Azure Cosmos DB mindig tartós véglegesítéseket hajt végre az adatvesztés megelőzése érdekében.
  • Az Apache Cassandra teljesítménycsökkenést tapasztalhat, ha a számítási feladat sok cserét vagy törlést igényel. Ennek az az oka, hogy az olvasási számítási feladatnak át kell ugrania a legújabb adatok lekéréséhez. A Cassandra API nem fog csökkenni az olvasási teljesítményben, ha a számítási feladat sok cserével vagy törléssel rendelkezik.
  • A magas csereterhelések esetén a tömörítésnek futnia kell az SSTables lemezen való egyesítése érdekében. (Egyesítésre azért van szükség, mert az Apache Cassandra írásai csak hozzáfűződnek. A rendszer több frissítést tárol egyéni SSTable-bejegyzésként, amelyeket rendszeres időközönként egyesíteni kell. Ez a helyzet a tömörítés során az olvasási teljesítmény csökkenéséhez is vezethet. Ez a teljesítményhatás nem történik meg a Cassandra API-ban, mert az API nem implementálja a tömörítést.
  • Az 1-es replikációs tényező beállítása az Apache Cassandra használatával lehetséges. Ez azonban alacsony rendelkezésre álláshoz vezet, ha az adatokkal rendelkező egyetlen csomópont leáll. Ez nem jelent problémát az Azure Cosmos DB-hez készült Cassandra API-val kapcsolatban, mert mindig 4 replikációs tényező van (3 kvórum).
  • A csomópontok Apache Cassandra-ban való hozzáadásához vagy eltávolításához manuális beavatkozásra van szükség, valamint az új csomópont magas processzorhasználatára, miközben a meglévő csomópontok áthelyezik a tokentartományok egy részét az új csomópontra. Ez a helyzet ugyanaz, amikor egy meglévő csomópontot szerel le. A Cassandra API azonban a szolgáltatásban vagy az alkalmazásban észlelt problémák nélkül skálázható fel.
  • Nincs szükség num_tokens beállítására a fürt minden csomópontján, mint az Apache Cassandra esetében. Az Azure Cosmos DB teljes mértékben kezeli a csomópontokat és a tokentartományokat.
  • A Cassandra API teljes mértékben felügyelt. Nincs szükség olyan parancsokra, mint például az Apache Cassandra által használt javítás és leszerelés.

Milyen protokollverziót támogat a Cassandra API?

Az Azure Cosmos DB-hez készült Cassandra API támogatja a Cassandra Query Language (CQL) m 3.x-es verzióját. A CQL-kompatibilitás a nyilvános Apache Cassandra GitHub-adattáron alapul. Ha visszajelzést szeretne küldeni más protokollok támogatásáról, küldjön e-mailt a askcosmosdbcassandra@microsoft.comcímre.

Miért követelmény egy tábla átviteli sebességének kiválasztása?

Az Azure Cosmos DB beállítja a tároló alapértelmezett átviteli sebességét az alapján, hogy honnan hozza létre a táblát: Azure Portal vagy CQL.

Az Azure Cosmos DB garantálja a teljesítményt és a késést, a műveletek felső határával. Ezek a garanciák akkor lehetségesek, ha a motor kikényszerítheti a bérlő műveleteinek szabályozását. Az átviteli sebesség 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űvelet sikerességét. Rugalmasan módosíthatja az átviteli sebességet, hogy kihasználhassa az alkalmazás szezonalitását, és költségeket takaríthat meg.

Az átviteli sebesség fogalmát az Azure Cosmos DB kérelemegységei című cikkben ismertetheti. A táblák átviteli sebessége egyenlően oszlik el a mögöttes fizikai partíciók között.

Mi a CQL-n keresztül létrehozott tábla átviteli sebessége?

Az Azure Cosmos DB másodpercenkénti kérelemegységeket (RU/s) használ pénznemként az átviteli sebesség biztosításához. A CQL-n keresztül létrehozott táblák alapértelmezés szerint 400 RU-tal rendelkeznek. A kérelemegységet az Azure Portalon módosíthatja.

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);

Mi történik, ha az átviteli sebesség fel van használva?

Az Azure Cosmos DB garantálja a teljesítményt és a késést, a műveletek felső határával. Ezek a garanciák akkor lehetségesek, ha a motor kikényszerítheti a bérlő műveleteinek szabályozását. Az átviteli sebesség 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űvelet sikerességét.

Amikor túllépi ezt a kapacitást, a következő hibaüzenet jelenik meg, amely azt jelzi, hogy a kapacitás kihasznált volt:

0x1001 túlterhelt: a kérés nem dolgozható fel, mert "A kérelem sebessége nagy"

Fontos látni, hogy milyen műveletek (és azok mennyisége) okozzák ezt a problémát. Az Azure Portalon metrikákkal áttekintheti a kiosztott kapacitást. Ezután gondoskodnia kell arról, hogy a kapacitás szinte egyformán legyen felhasználva az összes mögöttes partíción. Ha azt látja, hogy egy partíció az átviteli sebesség nagy részét fogyasztja, akkor a számítási feladatok száma eltolódhat.

Olyan metrikák érhetők el, amelyek bemutatják, hogy a rendszer hogyan használja az átviteli sebességet órákon keresztül, napok alatt és hét naponként, partíciókon vagy összesítetten. További információ: Monitorozás és hibakeresés metrikákkal az Azure Cosmos DB-ben.

A diagnosztikai naplókat az Azure Cosmos DB diagnosztikai naplózási cikk ismerteti.

Az elsődleges kulcs megfelel az Azure Cosmos DB partíciókulcs-koncepciójának?

Igen, a partíciókulcs használatával az entitás a megfelelő helyre kerül. Az Azure Cosmos DB-ben a fizikai partíción tárolt megfelelő logikai partíció megkeresésére szolgál. A particionálási koncepciót az Azure Cosmos DB-ben található Partíció és skálázás című cikkben ismertetik. A lényeg az, hogy egy logikai partíciónak nem szabad túllépnie a 20 GB-os korlátot.

Mi történik, ha értesítést kapok arról, hogy egy partíció megtelt?

Az Azure Cosmos DB szolgáltatásszintű szerződésen (SLA) alapuló rendszer. 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. Ez a korlátlan tárterület az adatok horizontális felskálázásán alapul, fő koncepcióként particionálást használva. A particionálási koncepciót az Azure Cosmos DB-ben található Partíció és skálázás című cikkben ismertetik.

Meg kell felelnie a logikai partíciónkénti entitások vagy elemek számának 20 GB-os korlátjának. Annak érdekében, hogy az alkalmazás megfelelően skálázható legyen, 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. Ez a hiba csak akkor fordulhat elő, ha az adatok eltérnek: vagyis egy partíciókulcshoz (több mint 20 GB) sok adat tartozik. Az adatok elosztását a tárportálon találja. A hiba kijavításának módja a tábla újbóli létrehozása és egy részletes elsődleges (partíciókulcs) kiválasztása, amely lehetővé teszi az adatok jobb elosztását.

Használhatom a Cassandra API-t kulcsértéktárként több millió vagy több milliárd partíciókulcstal?

Az Azure Cosmos DB korlátlan mennyiségű adatot tárolhat a tárterület horizontális felskálázásával. Ez a tároló független az átviteli sebességétől. Igen, a Cassandra API-val mindig csak a megfelelő elsődleges/partíciókulcs megadásával tárolhatja és lekérheti a kulcsokat és az értékeket. Ezek az egyes kulcsok saját logikai partíciót kapnak, és problémák nélkül ülnek egy fizikai partíción.

Létrehozhatok egynél több táblát a Cassandra API-val?

Igen, több táblát is létrehozhat a Cassandra API-val. A táblák mindegyike egységként kezeli az átviteli sebességet és a tárolást.

Létrehozhatok egymás után több táblát?

Az Azure Cosmos DB erőforrás-vezérlésű rendszer adat- és vezérlősík-tevékenységekhez is. A tárolók, például a gyűjtemények és a táblák, futásidejű entitások, amelyek egy adott átviteli kapacitáshoz vannak kiépítve. Ezeknek a tárolóknak a gyors egymásutánban történő létrehozása nem várt tevékenység, és szabályozható. Ha olyan tesztekkel rendelkezik, amelyek azonnal ledobják vagy létrehozzák a táblákat, próbálja meg eltűrni őket.

Mennyi a létrehozható táblák maximális száma?

A táblák számára nincs fizikai korlát. Ha nagy számú táblával rendelkezik (ahol a teljes állandó méret meghaladja a 10 TB-ot), amelyeket létre kell hozni, nem pedig a szokásos tízes vagy több száz táblát, küldjön e-mailt a következő címre askcosmosdbcassandra@microsoft.com: .

Mi a maximálisan létrehozható kulcsterek száma?

A kulcsterek számának nincs fizikai korlátja, mert metaadattárolók. Ha nagy számú kulcstérrel rendelkezik, küldjön e-mailt.askcosmosdbcassandra@microsoft.com

Egy normál táblából kiindulva sok adatot be tudok állítani?

Igen. Az egységesen elosztott partíciók feltéve, hogy a tárolókapacitás automatikusan felügyelve lesz, és több adat leküldésekor nő. Így magabiztosan importálhat annyi adatot, amennyire szüksége van a csomópontok kezelése és kiépítése nélkül. Ha azonban számos azonnali adatnövekedésre számít, érdemesebb közvetlenül kiépíteni a várt átviteli sebességet ahelyett, hogy azonnal elkezdené az alacsonyabb és növekvő teljesítményt.

Használhatom a YAML-fájlbeállításokat az API viselkedésének konfigurálásához?

Az Azure Cosmos DB-hez készült Cassandra API protokollszintű kompatibilitást biztosít a műveletek végrehajtásához. Elrejti a felügyelet, a monitorozás és a konfiguráció összetettségét. Fejlesztőként/felhasználóként nem kell aggódnia a rendelkezésre állás, a sírkövek, a kulcsgyorsítótár, a sorgyorsítótár, a kinyíló szűrő és számos más beállítás miatt. A Cassandra API a szükséges olvasási és írási teljesítmény biztosítására összpontosít a konfiguráció és a felügyelet többletterhelése nélkül.

A Cassandra API támogatja a csomópontok hozzáadását, a fürt állapotát és a csomópont állapotparancsokat?

A Cassandra API leegyszerűsíti a kapacitástervezést, és reagál az átviteli sebességre és a tárolásra vonatkozó rugalmassági igényekre. Az Azure Cosmos DB-vel kiépítenie kell a szükséges átviteli sebességet. Ezután a nap folyamán tetszőleges számú alkalommal fel- és leskálázhatja, anélkül, hogy a csomópontok hozzáadásával, törlésével vagy kezelésével kellene foglalkoznia. Nem kell eszközöket használnia a csomópont- és fürtfelügyelethez.

Mi történik a kulcstér létrehozásának különböző konfigurációs beállításaival, például az egyszerű/hálózattal?

Az Azure Cosmos DB rendelkezésre állási és kis késési okokból globális elosztást biztosít. Nem kell replikákat vagy egyéb dolgokat beállítania. Az írások mindig tartósan kvórumban vannak lekötve minden olyan régióban, ahol ír, miközben teljesítménygaranciát biztosít.

Mi történik a tábla metaadatainak különböző beállításaival?

Az Azure Cosmos DB teljesítménygaranciát biztosít az olvasáshoz, az íráshoz és az átviteli sebességhez. Így nem kell aggódnia a konfigurációs beállítások megérintése és véletlen módosítása miatt. Ezek a beállítások közé tartozik a kinyíló szűrő, a gyorsítótárazás, az olvasási javítási lehetőség, a gc_grace és a tömörítési memtable_flush_period.

A Cassandra-táblák támogatják az élettartamot?

Igen, a TTL támogatott.

Hogyan monitorozhatom az infrastruktúrát és az átviteli sebességet?

Az Azure Cosmos DB egy platformszolgáltatás, amely segít növelni a termelékenységet, és nem kell aggódnia az infrastruktúra kezelése és monitorozása miatt. Nem kell például különböző eszközökkel figyelnie a csomópontok állapotát, replikaállapotát, gc- és operációsrendszer-paramétereit. Csak gondoskodnia kell a portálmetrikákban elérhető átviteli sebességről, hogy lássa, szabályozva van-e, majd növelje vagy csökkentse az átviteli sebességet. A következőket teheti:

  • SLA-k monitorozása
  • Metrikák használata
  • Diagnosztikai naplók használata

Mely ügyféloldali SDK-k használhatók a Cassandra API-val?

Az Apache Cassandra SDK CQLv3-at használó ügyfélillesztői az ügyfélprogramokhoz lettek használva. Ha más illesztőprogramokat is használ, vagy problémákat tapasztal, küldjön e-mailt a következő címre askcosmosdbcassandra@microsoft.com: .

Támogatottak az összetett partíciókulcsok?

Igen, használhatja a normál szintaxist összetett partíciókulcsok létrehozásához.

Használhatom az sstableloadert az adatbetöltéshez?

Nem, az sstableloader nem támogatott.

Párosíthatok egy helyszíni Apache Cassandra-fürtöt a Cassandra API-val?

Az Azure Cosmos DB mostantól optimalizált felhasználói élményt nyújt egy felhőkörnyezethez a műveletek többletterhelése nélkül. Ha párosítást igényel, küldjön e-mailt askcosmosdbcassandra@microsoft.com a forgatókönyv leírásával. Dolgozunk egy ajánlaton, amely segít párosítani a helyszíni vagy a felhőbeli Cassandra-fürtöt az Azure Cosmos DB-hez készült Cassandra API-val.

A Cassandra API teljes biztonsági mentést biztosít?

Az Azure Cosmos DB két ingyenes teljes biztonsági másolatot biztosít négy órás időközönként az összes API-ról. Ezért nem kell biztonsági mentési ütemezést beállítania.

A biztonsági másolatok megőrzését és gyakoriságát saját maga kezelheti.

Ha biztonsági másolatból szeretne visszaállítani, küldjön e-mailt egy támogatási esetnek askcosmosdbcassandra@microsoft.com , vagy emeljen fel egy támogatási esetet. A biztonsági mentési képességről az Automatikus online biztonsági mentés és visszaállítás az Azure Cosmos DB-cikkből tájékozódhat.

Hogyan kezeli a Cassandra-fiók API-ja a feladatátvételt, ha egy régió leáll?

A Cassandra API az Azure Cosmos DB globálisan elosztott platformjáról kölcsönöz. Annak érdekében, hogy az alkalmazás elviselje az adatközpont állásidejét, engedélyezzen legalább egy régiót a fiók számára az Azure Portalon. További információ: Magas rendelkezésre állás az Azure Cosmos DB-vel.

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 Cassandra API alapértelmezés szerint egy entitás összes attribútumát indexeli?

Szám A Cassandra API támogatja a másodlagos indexeket, amelyek hasonlóan viselkednek, mint az Apache Cassandra. Az API alapértelmezés szerint nem indexel minden attribútumot.

Használhatom az új API-t a Cassandra SDK-hoz helyben az emulátorsal?

Igen, ez támogatott. Ennek engedélyezésével kapcsolatos részleteket az Azure Cosmos DB Emulator helyi fejlesztési és tesztelési cikkében találja.

Hogyan migrálhatok adatokat Apache Cassandra-fürtökről az Azure Cosmos DB-be?

Az Azure Cosmos DB oktatóanyagában az adatok migrálási lehetőségeiről olvashat az Azure Cosmos DB-fiókhoz készült API-ba történő migrálási lehetőségekről.