Udostępnij przez


Samouczek: migrowanie danych do interfejsu API dla konta Cassandra

DOTYCZY: Kasandra

Jako deweloper możesz mieć istniejące obciążenia cassandra, które działają lokalnie lub w chmurze. Możesz chcieć przeprowadzić migrację ich na platformę Azure. Takie obciążenia można migrować do konta Cassandra za pomocą interfejsu API w Azure Cosmos DB. Ten samouczek zawiera instrukcje dotyczące różnych opcji, które są dostępne do migrowania danych apache Cassandra do interfejsu API dla konta Cassandra w usłudze Azure Cosmos DB.

Ten samouczek obejmuje następujące zadania:

  • Planowanie migracji.
  • Spełnianie wymagań wstępnych dotyczących migracji.
  • Migrowanie danych przy użyciu cqlshCOPY polecenia .
  • Migrowanie danych przy użyciu platformy Spark.

Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.

Wymagania wstępne dotyczące migracji

  • Szacowanie potrzeb w zakresie przepływności: Przed migracją danych do interfejsu API dla konta Cassandra w usłudze Azure Cosmos DB należy oszacować wymagania dotyczące przepływności obciążenia. Ogólnie rzecz biorąc, zacznij od średniej przepływności wymaganej przez operacje tworzenia, odczytu, aktualizacji i usuwania (CRUD). Następnie uwzględnij dodatkową przepustowość wymaganą do operacji wyodrębniania, przekształcania i ładowania (ETL) lub operacji charakteryzujących się dużą zmiennością. Do zaplanowania migracji potrzebne są następujące szczegóły:

    • Istniejący rozmiar danych lub szacowany rozmiar danych. Definiuje minimalne wymagania dotyczące rozmiaru bazy danych i przepływności. Jeśli szacujesz rozmiar danych dla nowej aplikacji, możesz założyć, że dane są równomiernie rozłożone w wierszach. Wartość można oszacować, mnożąc je przy użyciu rozmiaru danych.

    • Wymagana przepływność: przybliżona szybkość przepływności operacji odczytu (zapytanie/pobieranie) i zapis (aktualizacja/usuwanie/wstawianie). Ta wartość jest wymagana do obliczenia wymaganych jednostek żądania wraz z rozmiarem danych w stanie stałym.

    • Schemat: Połącz się z istniejącym klastrem Cassandra za pomocą cqlshmetody i wyeksportuj schemat z bazy danych Cassandra:

      cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
      

      Po zidentyfikowaniu wymagań dotyczących istniejącego obciążenia utwórz konto, bazę danych i kontenery usługi Azure Cosmos DB zgodnie z zebranymi wymaganiami dotyczącymi przepływności.

    • Określ opłatę za jednostkę żądania (RU) za operację: Jednostki RU można określić przy użyciu dowolnego zestawu SDK obsługiwanego przez interfejs API dla bazy danych Cassandra. W tym przykładzie przedstawiono sposób określania opłaty za jednostki żądań z użyciem wersji platformy .NET.

      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}");
        }
      
  • Przydzielenie wymaganej przepływności. Usługa Azure Cosmos DB potrafi automatycznie skalować magazyn i przepływność w miarę wzrostu wymagań. Możesz oszacować swoje potrzeby dotyczące przepływności, używając kalkulatora RU dla usługi Azure Cosmos DB.

  • Tworzenie tabel w interfejsie API dla konta Cassandra: Przed rozpoczęciem migracji danych utwórz wstępnie wszystkie tabele z portalu Azure lub z cqlsh. Jeśli przeprowadzasz migrację do konta usługi Azure Cosmos DB z przepływnością na poziomie bazy danych, podczas tworzenia kontenerów podaj klucz partycji.

  • Zwiększenie przepływności. Czas trwania migracji danych zależy od przepływności aprowizowanej dla tabel w usłudze Azure Cosmos DB. Zwiększ przepływność podczas migracji. Dzięki wyższej przepływności można uniknąć ograniczania szybkości i migrowania w krótszym czasie. Po zakończeniu migracji zmniejsz przepływność, aby zaoszczędzić koszty. Zalecamy również posiadanie konta usługi Azure Cosmos DB w tym samym regionie co źródłowa baza danych.

  • Włącz protokół Transport Layer Security (TLS): Usługa Azure Cosmos DB ma ścisłe wymagania i standardy zabezpieczeń. Włącz protokół TLS podczas interakcji z kontem. Jeśli używasz języka zapytań Cassandra (CQL) z protokołem Secure Shell, możesz podać informacje o protokole TLS.

Opcje migracji danych

Dane można przenosić z istniejących obciążeń Cassandra do usługi Azure Cosmos DB przy użyciu cqlshCOPY polecenia lub platformy Spark.

Migrowanie danych przy użyciu polecenia cqlsh COPY

Ostrzeżenie

Użyj tylko polecenia CQL COPY , aby przeprowadzić migrację małych zestawów danych. Aby przenieść duże zestawy danych, przeprowadź migrację danych przy użyciu platformy Spark.

  1. Aby mieć pewność, że plik .csv zawiera poprawną strukturę plików, użyj COPY TO polecenia , aby wyeksportować dane bezpośrednio ze źródłowej tabeli Cassandra do pliku .csv. Upewnij się, że cqlsh jest połączony z tabelą źródłową przy użyciu odpowiednich poświadczeń.

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. Teraz uzyskaj informacje o parametrach połączenia konta Cassandra interfejsu API:

    1. Zaloguj się do witryny Azure Portal i przejdź do konta usługi Azure Cosmos DB.
    2. Otwórz okienko Parametry połączenia. W tym miejscu zobaczysz wszystkie informacje potrzebne do nawiązania połączenia z interfejsem API dla konta Cassandra z witryny cqlsh.
  3. Zaloguj się do cqlsh korzystając z informacji o połączeniu z portalu Azure.

  4. Użyj polecenia CQL COPY FROM , aby skopiować data.csvplik . Ten plik nadal znajduje się w katalogu głównym użytkownika, w którym cqlsh jest zainstalowany.

    COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
    

Uwaga

Interfejs API dla bazy danych Cassandra obsługuje protokół w wersji 4, który jest dostarczany z rozwiązaniem Cassandra 3.11. W przypadku używania nowszych wersji protokołu z naszym interfejsem API mogą wystąpić problemy. W przypadku nowszej wersji COPY FROM protokołu polecenie może przejść do pętli i zwrócić zduplikowane wiersze.

Dodaj protocol-version do cqlsh polecenia :

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4

Dodawanie opcji ograniczania przepływności do polecenia CQL COPY

Polecenie COPY w programie cqlsh obsługuje różne parametry do kontrolowania szybkości pozyskiwania dokumentów w usłudze Azure Cosmos DB.

Domyślna konfiguracja polecenia COPY próbuje przetwarzać dane w szybkim tempie. Nie uwzględnia ona zachowania ograniczającego szybkość usługi Azure Cosmos DB. Zmniejsz CHUNKSIZE lub INGESTRATE w zależności od przepływności skonfigurowanej w kolekcji.

Zalecamy następującą konfigurację (co najmniej) dla kolekcji na 20 000 jednostek RU, jeśli rozmiar dokumentu lub rekordu wynosi 1 KB:

  • CHUNKSIZE = 100
  • INGESTRATE = 500
  • MAXATTEMPTS = 10
Przykładowe polecenia
  • Skopiuj dane z interfejsu API dla bazy danych Cassandra do lokalnego pliku .csv:

    COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
    
  • Skopiuj dane z lokalnego pliku .csv do interfejsu API dla systemu Cassandra:

    COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;
    

Ważne

Obsługiwana jest tylko wersja CQLSH COPY oprogramowania Apache Cassandra typu open source. Wersje CQLSH Datastax Enterprise (DSE) mogą napotkać błędy.

Migrowanie danych przy użyciu platformy Spark

Aby przeprowadzić migrację danych do interfejsu API dla konta cassandra za pomocą platformy Spark, wykonaj następujące kroki:

  1. Aprowizuj klaster usługi Azure Databricks lub klaster usługi Azure HDInsight.

  2. Przenoszenie danych do docelowego interfejsu API dla punktu końcowego Cassandra. Aby uzyskać więcej informacji, zobacz Migrate data from Cassandra to an Azure Cosmos DB for Apache Cassandra account (Migrowanie danych z bazy danych Cassandra do konta usługi Azure Cosmos DB dla bazy danych Apache Cassandra).

Jeśli masz dane znajdujące się w istniejącym klastrze na maszynach wirtualnych platformy Azure lub w dowolnej innej chmurze, zalecamy migrowanie danych przy użyciu zadań platformy Spark. Skonfiguruj platformę Spark jako pośrednika w jednorazowym lub regularnym pozyskiwaniu. Migrację można przyspieszyć przy użyciu łączności usługi Azure ExpressRoute między środowiskiem lokalnym a platformą Azure.

Migracja na żywo

Jeśli potrzebujesz migracji bez przestojów z natywnego klastra Apache Cassandra, zalecamy skonfigurowanie podwójnych zapisów i oddzielnego obciążenia danych zbiorczych w celu migracji danych historycznych. Implementacja tego wzorca jest prostsza w przypadku używania serwera proxy z podwójnym zapisem typu open source w celu umożliwienia minimalnych zmian kodu aplikacji. Aby uzyskać więcej informacji, zobacz Live migrate data from Apache Cassandra to the Azure Cosmos DB for Apache Cassandra (Migrowanie danych na żywo z bazy danych Apache Cassandra do usługi Azure Cosmos DB dla systemu Apache Cassandra).

Czyszczenie zasobów

Gdy zasoby nie są już potrzebne, możesz usunąć grupę zasobów, konto usługi Azure Cosmos DB i wszystkie powiązane zasoby. Aby to zrobić, wybierz grupę zasobów maszyny wirtualnej, wybierz pozycję Usuń, a następnie potwierdź nazwę grupy zasobów, którą chcesz usunąć.

Następny krok

W tym samouczku przedstawiono sposób migrowania danych do interfejsu API dla konta Cassandra w usłudze Azure Cosmos DB. Teraz możesz dowiedzieć się więcej o innych pojęciach w usłudze Azure Cosmos DB: