Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 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łą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:
Zainstaluj język Python 3.
Zainstaluj PIP.
- Przed zainstalowaniem PIP, pobierz plik get-pip.py.
- Uruchom okno wiersza polecenia, jeśli nie jest jeszcze otwarte. 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-pip.py :
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.pyZainstaluj PIP w systemie Windows:
python get-pip.pyZweryfikuj 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.
Zainstaluj CQLSH za pomocą PIP:
pip3 install cqlsh==5.0.3Zainstaluj język 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, 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
- Wprowadzenie do tworzenia interfejsu API dla konta, bazy danych i tabeli Cassandra przy użyciu aplikacji Java