Udostępnij przez


Funkcje bazy danych Apache Cassandra obsługiwane przez usługę Azure Cosmos DB dla systemu Apache Cassandra

DOTYCZY: Kasandra

Azure Cosmos DB to dystrybuowana globalnie, wielomodelowa usługa bazy danych udostępniana przez Microsoft. Możesz komunikować się z usługą Azure Cosmos DB dla systemu Apache Cassandra za pośrednictwem sterowników klienta Cassandra Query Language (CQL) Binary Protocol v4.

Korzystając z usługi Azure Cosmos DB dla systemu Apache Cassandra, możesz korzystać z zalet interfejsów API apache Cassandra i możliwości przedsiębiorstwa oferowanych przez usługę Azure Cosmos DB. Możliwości przedsiębiorstwa obejmują dystrybucję globalną, automatyczne partycjonowanie w poziomie, gwarancje dostępności i opóźnienia, szyfrowanie danych w spoczynku i kopie zapasowe.

Protokół Cassandra

Usługa Azure Cosmos DB dla Apache Cassandra jest zgodna z interfejsem API Cassandra Query Language (CQL) w wersji 3.11. Jest kompatybilny wstecznie z wersją 2.x. Obsługiwane polecenia, narzędzia, ograniczenia i wyjątki języka CQL są wymienione w dalszej części tego artykułu. Każdy sterownik klienta, który rozumie te protokoły, powinien być w stanie nawiązać połączenie z usługą Azure Cosmos DB dla usługi Apache Cassandra.

Zarządzana Instancja Azure dla Apache Cassandra

W przypadku niektórych klientów dostosowanie do interfejsu API dla rozwiązania Cassandra może być wyzwaniem ze względu na różnice w zachowaniu i konfiguracji, szczególnie w przypadku migracji metodą lift-and-shift. Jeśli w dalszej części tego artykułu zostanie wyświetlona funkcja krytyczna dla aplikacji, która nie jest obsługiwana, rozważ użycie wystąpienia zarządzanego platformy Azure dla usługi Apache Cassandra. Ta usługa jest natywną usługą platformy Azure do hostowania i obsługi klastrów Apache Cassandra typu open source z pełną zgodnością 100%%.

Sterownik Cassandra

Usługa Azure Cosmos DB dla systemu Apache Cassandra obsługuje następujące wersje sterowników Cassandra:

Typy danych CQL

Usługa Azure Cosmos DB dla systemu Apache Cassandra obsługuje następujące typy danych CQL:

Typ Obsługiwane
ascii Tak
bigint Tak
blob Tak
boolean Tak
counter Tak
date Tak
decimal Tak
double Tak
float Tak
frozen Tak
inet Tak
int Tak
list Tak
set Tak
smallint Tak
text Tak
time Tak
timestamp Tak
timeuuid Tak
tinyint Tak
tuple Tak
uuid Tak
varchar Tak
varint Tak
tuples Tak
udts Tak
map Tak

Statyczna jest obsługiwana dla deklaracji typu danych.

Funkcje języka CQL

Usługa Azure Cosmos DB dla systemu Apache Cassandra obsługuje następujące funkcje języka CQL:

Polecenie Obsługiwane
Token * Tak
ttl *** Tak
writetime *** Tak
cast ** Tak

Uwaga

* Interfejs API dla rozwiązania Cassandra obsługuje token jako selektor projekcji/selektora i zezwala tylko na token (pk) po lewej stronie klauzuli where. Na przykład WHERE token(pk) > 1024 jest obsługiwana, ale WHERE token(pk) > token(100) nie jest obsługiwana. ** Funkcja cast() nie jest zagnieżdżona w interfejsie API dla bazy danych Cassandra. Na przykład SELECT cast(count as double) FROM myTable jest obsługiwana, ale SELECT avg(cast(count as double)) FROM myTable nie jest obsługiwana. Niestandardowe znaczniki czasowe i TTL określone za pomocą opcji USING są stosowane na poziomie wiersza (a nie na komórkę).

Agregujących:

Polecenie Obsługiwane
avg Tak
count Tak
min Tak
max Tak
sum Tak

Uwaga

Funkcje agregujące działają na zwykłych kolumnach, ale agregacje w kolumnach klastrowania nieobsługiwane.

Funkcje konwersji obiektów blob:

Polecenie Obsługiwane
typeAsBlob(value) Tak
blobAsType(value) Tak

Funkcje UUID i timeuuid:

Polecenie Obsługiwane
dateOf() Tak
now() Tak
minTimeuuid() Tak
unixTimestampOf() Tak
toDate(timeuuid) Tak
toTimestamp(timeuuid) Tak
toUnixTimestamp(timeuuid) Tak
toDate(timestamp) Tak
toUnixTimestamp(timestamp) Tak
toTimestamp(date) Tak
toUnixTimestamp(date) Tak

Polecenie języka CQL

Usługa Azure Cosmos DB obsługuje następujące polecenia bazy danych w interfejsie API dla kont Cassandra.

Polecenie Obsługiwane
ALLOW FILTERING Tak
ALTER KEYSPACE N/A (usługa PaaS, replikacja zarządzana wewnętrznie)
ALTER MATERIALIZED VIEW Tak
ALTER ROLE Nie
ALTER TABLE Tak
ALTER TYPE Nie
ALTER USER Nie
BATCH Tak (tylko nieobjętą partią)
COMPACT STORAGE N/A (usługa PaaS)
CREATE AGGREGATE Nie
CREATE CUSTOM INDEX (SASI) Nie
CREATE INDEX Tak (w tym nazwane indeksy, ale pełna kolekcja FROZEN nie jest obsługiwana)
CREATE FUNCTION Nie
CREATE KEYSPACE (ignorowane ustawienia replikacji) Tak
CREATE MATERIALIZED VIEW Tak
CREATE TABLE Tak
CREATE TRIGGER Nie
CREATE TYPE Tak
CREATE ROLE Nie
CREATE USER (Przestarzałe w natywnym systemie Apache Cassandra) Nie
DELETE Tak
DISTINCT Nie
DROP AGGREGATE Nie
DROP FUNCTION Nie
DROP INDEX Tak
DROP KEYSPACE Tak
DROP MATERIALIZED VIEW Tak
DROP ROLE Nie
DROP TABLE Tak
DROP TRIGGER Nie
DROP TYPE Tak
DROP USER (Przestarzałe w natywnym systemie Apache Cassandra) Nie
GRANT Nie
INSERT Tak
LIST PERMISSIONS Nie
LIST ROLES Nie
LIST USERS (Przestarzałe w natywnym systemie Apache Cassandra) Nie
REVOKE Nie
SELECT Tak
UPDATE Tak
TRUNCATE Tak
USE Tak

Uproszczone transakcje (LWT)

Składnik Obsługiwane
DELETE IF EXISTS Tak
DELETE conditions Tak
INSERT IF NOT EXISTS Tak
UPDATE IF EXISTS Tak
UPDATE IF NOT EXISTS Tak
UPDATE conditions Tak

Uwaga

Uproszczone transakcje nie są obecnie obsługiwane w przypadku kont z włączoną obsługą zapisu w wielu regionach.

Polecenia powłoki CQL

Usługa Azure Cosmos DB obsługuje następujące polecenia bazy danych w interfejsie API dla kont Cassandra.

Polecenie Obsługiwane
CAPTURE Tak
CLEAR Tak
CONSISTENCY * Nie dotyczy
COPY Nie
DESCRIBE Tak
cqlshExpand Nie
EXIT Tak
LOGIN N/A (funkcja USER CQL nie jest obsługiwana, dlatego LOGIN jest nadmiarowa)
PAGING Tak
SERIAL CONSISTENCY * Nie dotyczy
SHOW Tak
SOURCE Tak
TRACING Nie dotyczy (interfejs API dla bazy danych Cassandra jest wspierany przez usługę Azure Cosmos DB — użyj rejestrowania diagnostycznego do rozwiązywania problemów)

Uwaga

Spójność działa inaczej w usłudze Azure Cosmos DB. Aby uzyskać więcej informacji, zobacz Apache Cassandra i Azure Cosmos DB for Apache Cassandra consistency levels (Poziomy spójności apache Cassandra i Azure Cosmos DB dla systemu Apache Cassandra).

Obsługa formatu JSON

Polecenie Obsługiwane
SELECT JSON Tak
INSERT JSON Tak
fromJson() Nie
toJson() Nie

Interfejs API dla limitów bazy danych Cassandra

Usługa Azure Cosmos DB dla systemu Apache Cassandra nie ma żadnych ograniczeń dotyczących rozmiaru danych przechowywanych w tabeli. Można przechowywać setki terabajtów lub petabajtów danych przy zapewnieniu uznania limitów klucza partycji. Podobnie każdy odpowiednik jednostki lub wiersza nie ma żadnych limitów liczby kolumn. Całkowity rozmiar jednostki nie powinien przekraczać 2 MB. Dane na klucz partycji nie mogą przekraczać 20 GB, tak jak we wszystkich innych interfejsach API.

Narzędzia

Usługa Azure Cosmos DB dla systemu Apache Cassandra to zarządzana platforma usług. Platforma nie wymaga żadnych obciążeń związanych z zarządzaniem ani narzędzi, takich jak zbieracz śmieci, maszyna wirtualna Java (JVM) czy narzędzie do zarządzania węzłami klastra. Obsługiwane są narzędzia, takie jak cqlsh, które wykorzystują zgodność z binarnym CQLv4.

  • Eksplorator danych, metryki, diagnostyka dzienników, program PowerShell i interfejs wiersza polecenia w witrynie Azure Portal to inne obsługiwane mechanizmy zarządzania kontem.

Powłoka CQL

Możesz nawiązać połączenie z interfejsem API dla bazy danych Cassandra w usłudze Azure Cosmos DB przy użyciu protokołu CQLSH zainstalowanego na komputerze lokalnym. Jest on dostarczany z systemem Apache Cassandra 3.11 i działa poza tym, ustawiając zmienne środowiskowe. Poniższe sekcje zawierają instrukcje dotyczące instalowania, konfigurowania i nawiązywania połączenia z interfejsem API dla usługi Cassandra w usłudze Azure Cosmos DB w systemie Windows lub Linux przy użyciu protokołu CQLSH.

Ostrzeżenie

Połączenia z usługą Azure Cosmos DB dla Apache Cassandra nie działają z wersjami DataStax Enterprise (DSE) ani Cassandra 4.0 CQLSH. Upewnij się, że używasz tylko wersji open source 3.11 Apache Cassandra języka CQLSH, gdy łączysz się z interfejsem API dla Cassandra.

Windows:

  1. Zainstaluj język Python 3.

  2. Zainstaluj PIP.

    1. Przed zainstalowaniem PIP, pobierz plik get-pip.py.
    2. Uruchom okno wiersza polecenia, jeśli nie jest jeszcze otwarte. Aby to zrobić, otwórz pasek wyszukiwania systemu Windows, wpisz cmd i wybierz ikonę.
    3. Następnie uruchom następujące polecenie, aby pobrać plik get-pip.py :
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 
    
  3. Zainstaluj PIP w systemie Windows:

    python get-pip.py
    
  4. Zweryfikuj instalację PIP. Poszukaj komunikatu z kroku 3, aby potwierdzić, w którym folderze został zainstalowany PIP. Następnie przejdź do tego folderu i uruchom polecenie pip help.

  5. Zainstaluj CQLSH za pomocą PIP:

    pip3 install cqlsh==5.0.3
    
  6. Zainstaluj język Python 2.

  7. Uruchom protokół CQLSH przy użyciu mechanizmu uwierzytelniania.

Uwaga

Należy ustawić zmienne środowiskowe, aby wskazywały folder Python 2.

Zainstaluj w systemach Unix/Linux/Mac:

# Install default-jre and default-jdk
sudo apt install default-jre
sudo apt-get update
sudo apt install default-jdk

# Import the Baltimore CyberTrust root certificate:
curl https://cacert.omniroot.com/bc2025.crt > bc2025.crt
keytool -importcert -alias bc2025ca -file bc2025.crt

# Install the Cassandra libraries in order to get CQLSH:
echo "deb https://downloads.apache.org/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra=3.11.13

Nawiąż połączenie z systemami Unix/Linux/Mac:

# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false

# Connect to Azure Cosmos DB for Apache Cassandra:
cqlsh <YOUR_ACCOUNT_NAME>.cassandra.cosmosdb.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl --protocol-version=4

Nawiązywanie połączenia z platformą Docker:

docker run -it --rm -e SSL_VALIDATE=false -e SSL_VERSION=TLSv1_2 cassandra:3.11 cqlsh <account_name>.cassandra.cosmos.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl

Wszystkie operacje CRUD, które są uruchamiane za pośrednictwem zestawu SDK zgodnego z językiem CQL w wersji 4, zwracają dodatkowe informacje o błędach i wykorzystanych jednostkach żądań. Aby zapewnić najbardziej efektywne wykorzystanie aprowizowanej przepływności, polecenia DELETE i UPDATE powinny być obsługiwane z uwzględnieniem zarządzania zasobami.

Uwaga

Wartość gc_grace_seconds musi być równa zero, jeśli została określona.

var tableInsertStatement = table.Insert(sampleEntity); 
var insertResult = await tableInsertStatement.ExecuteAsync(); 
 
foreach (string key in insertResult.Info.IncomingPayload) 
        { 
            byte[] valueInBytes = customPayload[key]; 
            double value = Encoding.UTF8.GetString(valueInBytes); 
            Console.WriteLine($"CustomPayload:  {key}: {value}"); 
        } 

Mapowanie spójności

Usługa Azure Cosmos DB dla bazy danych Apache Cassandra zapewnia wybór spójności dla operacji odczytu. Aby uzyskać więcej informacji, zobacz Mapowanie poziomów spójności.

Zarządzanie uprawnieniami i rolami

Usługa Azure Cosmos DB obsługuje kontrolę dostępu opartą na rolach (RBAC) platformy Azure do aprowizowania, rotacji kluczy, wyświetlania metryk oraz haseł/kluczy tylko do odczytu i odczytu, które można uzyskać za pośrednictwem witryny Azure Portal. Usługa Azure Cosmos DB nie obsługuje ról dla działań CRUD.

Opcje przestrzeni kluczy i tabeli

Opcje nazwy regionu, klasy, replication_factor i centrum danych w poleceniu CREATE KEYSPACE są obecnie ignorowane. System używa podstawowej metody replikacji dystrybucji globalnej usługi Azure Cosmos DB w celu dodania regionów. Jeśli potrzebujesz obecności danych między regionami, możesz ją włączyć na poziomie konta przy użyciu programu PowerShell, interfejsu wiersza polecenia lub witryny Azure Portal. Aby uzyskać więcej informacji, zobacz Dodawanie regionów do konta bazy danych.

Durable_writes nie można wyłączyć, ponieważ usługa Azure Cosmos DB zapewnia trwałość każdego zapisu. W każdym regionie usługa Azure Cosmos DB replikuje dane w zestawie replik składającym się z czterech replik i nie można zmodyfikować tej konfiguracji zestawu replik.

Wszystkie opcje są ignorowane podczas tworzenia tabeli, z wyjątkiem gc_grace_seconds, wartość powinna być ustawiona na zero. Kluczowa przestrzeń i tabela mają dodatkową opcję o nazwie cosmosdb_provisioned_throughput z minimalną wartością 400 RU/s. Przepływność usługi Keyspace umożliwia udostępnianie przepływności między wieloma tabelami. Jest to przydatne w scenariuszach, w których wszystkie tabele nie korzystają z aprowizowanej przepływności. Polecenie ALTER TABLE umożliwia zmianę aprowizowanej przepływności w różnych regionach.

CREATE KEYSPACE sampleks WITH REPLICATION = {  'class' : 'SimpleStrategy'} AND cosmosdb_provisioned_throughput=2000;  

CREATE TABLE sampleks.t1(user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=2000; 

ALTER TABLE gks1.t1 WITH cosmosdb_provisioned_throughput=10000 ;

Indeks pomocniczy

Interfejs API dla rozwiązania Cassandra obsługuje indeksy pomocnicze dla wszystkich typów danych z wyjątkiem zamrożonych typów kolekcji, dziesiętnych i typów wariantów.

Użycie zasad ponawiania próby połączenia bazy danych Cassandra

Azure Cosmos DB to system zarządzany przez zasoby. Niektóre operacje można wykonać w danej sekundzie na podstawie jednostek żądania używanych przez operacje. Jeśli aplikacja przekroczy ten limit w danej sekundzie, żądania są ograniczone szybkością, a wyjątki są zgłaszane. Interfejs API dla bazy danych Cassandra w usłudze Azure Cosmos DB tłumaczy te wyjątki na przeciążone błędy w natywnym protokole Cassandra.

Aby upewnić się, że aplikacja może przechwytywać i ponawiać żądania w przypadku ograniczenia szybkości, udostępniane są rozszerzenia spark i Java . Zobacz również przykłady kodu Java dla sterowników Datastax w wersji 3 i 4 podczas nawiązywania połączenia z interfejsem API dla bazy danych Cassandra w usłudze Azure Cosmos DB. Jeśli używasz innych zestawów SDK do uzyskiwania dostępu do interfejsu API dla bazy danych Cassandra w usłudze Azure Cosmos DB, utwórz zasady ponawiania prób w celu ponawiania prób dla tych wyjątków. Alternatywnie włącz ponawianie prób po stronie serwera dla interfejsu API dla bazy danych Cassandra.

Następne kroki