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 klasy przedsiębiorstwa obejmują globalną dystrybucję, automatyczne skalowanie partycjonowania w poziomie, gwarancje dostępności i opóźnień, szyfrowanie nieużywanych danych, kopie zapasowe i wiele więcej.
Protokół Cassandra
Usługa Azure Cosmos DB dla systemu Apache Cassandra jest zgodna z interfejsem API Cassandra Query Language (CQL) w wersji 3.11 (zgodny z poprzednimi wersjami 2.x). Obsługiwane polecenia CQL, narzędzia, ograniczenia i wyjątki są wymienione poniżej. 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.
Azure Managed Instance for 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/lub konfiguracji, szczególnie w przypadku migracji metodą lift-and-shift. Jeśli funkcja krytyczna dla aplikacji jest wymieniona jako nieobsługiwana poniżej, rozważ użycie wystąpienia zarządzanego platformy Azure dla usługi Apache Cassandra. Jest to usługa platformy Azure pierwszej firmy do hostowania i obsługi czystych klastrów Apache Cassandra typu open source z 100% zgodnością.
Sterownik Cassandra
Następujące wersje sterowników Cassandra są obsługiwane przez usługę Azure Cosmos DB dla systemu Apache 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 czasu i czas wygaśnięcia określony za pomocą USING
opcji 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 nie są obsł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łączonymi zapisami 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, zobacz tutaj , aby uzyskać więcej informacji.
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 bazy danych 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. Jednak całkowity rozmiar jednostki nie powinien przekraczać 2 MB. Dane na klucz partycji nie mogą przekraczać 20 GB, 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ędziami, takimi jak moduł odśmiecania pamięci, maszyna wirtualna Java (JVM) i narzędzie nodetool do zarządzania klastrem. Obsługiwane są narzędzia, takie jak cqlsh, które korzystają ze zgodności binarnych 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 systemu Apache Cassandra nie będą działać z wersją DataStax Enterprise (DSE) ani Cassandra 4.0 języka CQLSH. Upewnij się, że używasz tylko wersji 3.11 typu open source wersji Apache Cassandra języka CQLSH podczas nawiązywania połączenia z interfejsem API dla bazy danych Cassandra.
Windows:
- Instalowanie języka Python 3
- Instalowanie narzędzia
- Przed zainstalowaniem narzędzia pobierz plik get-.py.
- Uruchom wiersz polecenia, jeśli jeszcze nie jest otwarty. Aby to zrobić, otwórz pasek wyszukiwania systemu Windows, wpisz cmd i wybierz ikonę.
- Następnie uruchom następujące polecenie, aby pobrać plik get-.py:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- Instalowanie narzędzia w systemie Windows
python get-pip.py
- Sprawdź instalację narzędzia (poszukaj komunikatu z kroku 3, aby potwierdzić, w którym folderze zainstalowano narzędzie, a następnie przejdź do tego folderu i uruchom pomoc narzędzia polecenia).
- Instalowanie protokołu CQLSH przy użyciu narzędzia
pip3 install cqlsh==5.0.3
- Instalowanie języka Python 2
- 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 wykonywane za pośrednictwem zestawu SDK zgodnego z językiem CQL w wersji 4 zwracają dodatkowe informacje o błędach i wykorzystanych jednostkach żądań. Polecenia DELETE i UPDATE powinny być obsługiwane z uwzględnieniem ładu zasobów, aby zapewnić najbardziej efektywne wykorzystanie aprowizowanej przepływności.
- Uwaga: jeśli wartość gc_grace_seconds została określona, musi być równa zero.
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. Mapowanie spójności zostało szczegółowo opisane tutaj.
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 "Utwórz przestrzeń kluczy" 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 portalu, aby dowiedzieć się więcej, zobacz artykuł Dotyczący dodawania regionów . 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, które powinny być ustawione na zero. Przestrzeń kluczy 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 i jest przydatna 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. W danej sekundzie można wykonać pewną liczbę operacji na podstawie jednostek żądania używanych przez operacje. Jeśli aplikacja przekroczy ten limit w danej sekundzie, żądania są ograniczone do szybkości, a wyjątki zostaną zgłoszone. 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 platformy Spark i języka 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
- Wprowadzenie do tworzenia interfejsu API dla konta, bazy danych i tabeli Cassandra przy użyciu aplikacji Java