Udostępnij za pośrednictwem


Samouczek: migrowanie danych do interfejsu API dla konta cassandra

DOTYCZY: Kasandra

Jako deweloper być może masz istniejące obciążenia bazy danych Cassandra, które są uruchomione w środowisku lokalnym lub w chmurze, a które chcesz zmigrować na platformę Azure. Takie obciążenia można migrować do interfejsu API dla konta Cassandra w usłudze Azure Cosmos DB. Ten samouczek zawiera instrukcje dotyczące różnych dostępnych opcji migracji danych apache Cassandra do interfejsu API dla konta Cassandra w usłudze Azure Cosmos DB.

Ten samouczek obejmuje następujące zadania:

  • Planowanie migracji
  • Wymagania wstępne dotyczące migracji
  • Migrowanie danych przy użyciu cqlsh COPY polecenia
  • Migrowanie danych przy użyciu platformy Spark

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Wymagania wstępne dotyczące migracji

  • Szacowanie potrzeb związanych z 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 CRUD, a następnie uwzględnij dodatkową przepływność wymaganą dla operacji Wyodrębnij obciążenie transformacji lub operacje kolczaste. 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 między wiersze i szacują wartość przez pomnożenie 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ę RU dla operacji: możesz określić jednostki RU przy użyciu dowolnego zestawu SDK obsługiwanego przez interfejs API dla usługi 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ń. Potrzebną przepływność możesz oszacować, korzystając z kalkulatora jednostek żądań usługi Azure Cosmos DB.

  • Utwórz tabele na koncie interfejsu API dla bazy danych Cassandra: przed rozpoczęciem migracji danych utwórz wstępnie wszystkie tabele z witryny Azure Portal lub z witryny cqlsh. Jeśli przeprowadzasz migrację do konta usługi Azure Cosmos DB z przepływnością na poziomie bazy danych, pamiętaj o podaniu klucza partycji podczas tworzenia kontenerów.

  • Zwiększenie przepływności. Czas trwania migracji danych zależy od przepływności aprowizowanej dla tabel w usłudze Azure Cosmos DB. Na czas trwania migracji zwiększ przepływność. Dzięki większej przepływności można uniknąć ograniczania przepustowości i przeprowadzać migrację w krótszym czasie. Po ukończeniu migracji zmniejsz przepływność, aby ograniczyć koszty. Zalecamy również posiadanie konta usługi Azure Cosmos DB w tym samym regionie co źródłowa baza danych.

  • Włącz protokół TLS: usługa Azure Cosmos DB ma ścisłe wymagania i standardy zabezpieczeń. Pamiętaj, aby włączyć protokół TLS podczas interakcji z kontem. W przypadku korzystania z języka CQL z protokołem SSH 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 cqlsh COPY polecenia lub platformy Spark.

Migrowanie danych przy użyciu polecenia cqlsh COPY

Użyj polecenia CQL COPY, aby skopiować dane lokalne do interfejsu API dla konta Cassandra w usłudze Azure Cosmos DB.

Ostrzeżenie

Migrowanie małych zestawów danych przy użyciu funkcji COPY języka CQL. Aby przenieść duże zestawy danych, przeprowadź migrację danych przy użyciu platformy Spark.

  1. Aby upewnić się, ż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 plik 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 parametry połączenia interfejsu API dla konta Cassandra:

    • Zaloguj się do witryny Azure Portal i przejdź do konta usługi Azure Cosmos DB.

    • 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 usługi przy użyciu informacji o połączeniu z portalu.

  4. CQL COPY FROM Użyj polecenia , aby skopiować data.csv (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. Mogą wystąpić problemy z używaniem nowszych wersji protokołu w naszym interfejsie API. FUNKCJA COPY FROM z nowszą wersją protokołu może przejść do pętli i zwrócić zduplikowane wiersze. Dodaj wersję protokołu do polecenia cqlsh.

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Dodawanie opcji ograniczania przepływności do polecenia kopiowania języka CQL

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

Domyślna konfiguracja polecenia COPY próbuje pozyskiwać dane w bardzo szybkim tempie i nie uwzględnia zachowania ograniczającego szybkość usługi CosmosDB. Należy zmniejszyć rozmiar fragmentu lub szybkość pozyskiwania w zależności od przepływności skonfigurowanej w kolekcji.

Zalecamy poniższą konfigurację (co najmniej) dla kolekcji na 20 000 jednostek RU, jeśli rozmiar dokumentu lub rekordu wynosi 1 KB.

  • CHUNKSIZE = 100
  • POZYSKIWANIE = 500
  • MAXATTEMPTS = 10
Przykładowe polecenia
  • Kopiowanie danych 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 ;
  • Kopiowanie danych z lokalnego pliku CSV do interfejsu API dla bazy danych 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 oprogramowania Apache Cassandra typu open source CQLSH COPY. Wersje datastax Enterprise (DSE) CQLSH mogą napotkać błędy.

Migrowanie danych przy użyciu platformy Spark

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

  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. Zapoznaj się z tym przewodnikiem z instrukcjami dotyczącymi migracji za pomocą usługi Azure Databricks.

Migracja danych przy użyciu zadań platformy Spark jest opcją zalecaną, gdy Twoje dane znajdują się w istniejącym klastrze na maszynach wirtualnych platformy Azure lub w jakiejkolwiek innej chmurze. W tym celu należy skonfigurować 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 wymagana jest migracja bez przestojów z natywnego klastra Apache Cassandra, zalecamy skonfigurowanie podwójnych zapisów i oddzielne zbiorcze ładowanie danych w celu migracji danych historycznych. Wprowadziliśmy prostszą implementację tego wzorca, zapewniając serwer proxy z podwójnym zapisem typu open source, aby umożliwić minimalne zmiany kodu aplikacji. Zapoznaj się z naszym artykułem z instrukcjami dotyczącymi migracji na żywo przy użyciu serwera proxy z podwójnym zapisem i platformą Apache Spark , aby uzyskać więcej informacji na temat implementowania tego wzorca.

Czyszczenie zasobów

Gdy 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ępne kroki

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: