Tutorial: Memigrasikan data Anda ke API untuk akun Cassandra

BERLAKU UNTUK: Cassandra

Sebagai pengembang, Anda mungkin memiliki beban kerja Cassandra yang sudah ada yang berjalan lokal atau di cloud, dan Anda mungkin ingin memigrasikannya ke Azure. Anda dapat memigrasikan beban kerja tersebut ke API untuk akun Cassandra di Azure Cosmos DB. Tutorial ini memberikan instruksi tentang berbagai opsi yang tersedia untuk memigrasikan data Apache Cassandra ke dalam API untuk akun Cassandra di Azure Cosmos DB.

Tutorial ini mencakup tugas-tugas berikut:

  • Merencanakan migrasi
  • Prasyarat untuk migrasi
  • Migrasikan data dengan menggunakan perintah cqlshCOPY
  • Migrasikan data menggunakan Spark

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Prasyarat untuk migrasi

  • Perkirakan kebutuhan throughput Anda: Sebelum memigrasikan data ke API untuk akun Cassandra di Azure Cosmos DB, Anda harus memperkirakan kebutuhan throughput beban kerja Anda. Secara umum, mulailah dengan throughput rata-rata yang diperlukan oleh operasi CRUD, dan kemudian sertakan throughput tambahan yang diperlukan untuk Operasi Ekstract Transform Load atau operasi runcing. Anda memerlukan detail berikut untuk merencanakan migrasi:

    • Ukuran data yang ada atau perkiraan ukuran data: Menentukan ukuran database minimum dan persyaratan throughput. Jika Anda memperkirakan ukuran data untuk aplikasi baru, Anda dapat mengasumsikan bahwa data didistribusikan secara seragam di seluruh baris, dan memperkirakan nilai dengan mengalikan dengan ukuran data.

    • Throughput yang diperlukan: Perkiraan laju throughput dari operasi baca (kueri/dapatkan) dan tulis (perbarui/hapus/sisipkan). Nilai ini diperlukan untuk menghitung unit permintaan yang diperlukan, bersama dengan ukuran data status stabil.

    • Skema: Hubungkan ke kluster Cassandra Anda yang ada melalui cqlsh, dan ekspor skema dari Cassandra:

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

      Setelah Anda mengidentifikasi persyaratan beban kerja Anda yang ada, buat akun Azure Cosmos DB, database, dan kontainer, sesuai dengan persyaratan throughput yang dikumpulkan.

    • Tentukan biaya RU untuk operasi: Anda dapat menentukan RU dengan menggunakan salah satu SDK yang didukung oleh API untuk Cassandra. Contoh ini menunjukkan versi .NET untuk mendapatkan biaya RU.

      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}");
        }
      
  • Alokasikan throughput yang diperlukan: Azure Cosmos DB dapat secara otomatis menskalakan penyimpanan dan throughput seiring dengan bertambahnya persyaratan Anda. Anda dapat memperkirakan kebutuhan throughput Anda dengan menggunakan kalkulator unit permintaan Azure Cosmos DB.

  • Buat tabel di API untuk akun Cassandra: Sebelum Anda mulai memigrasikan data, buat semua tabel Anda dari portal Azure atau dari cqlsh. Untuk bermigrasi ke akun Azure Cosmos DB yang memiliki throughput tingkat database, pastikan untuk menyediakan kunci partisi saat Anda membuat kontainer.

  • Tambah throughput: Durasi migrasi data Anda tergantung pada jumlah throughput yang Anda provisikan untuk tabel di Azure Cosmos DB. Tambah throughput selama durasi migrasi. Dengan throughput yang lebih tinggi, Anda dapat menghindari pembatasan tarif dan migrasi dalam waktu yang lebih singkat. Setelah Anda menyelesaikan migrasi, kurangi throughput untuk menghemat biaya. Kami juga menyarankan Agar Anda memiliki akun Azure Cosmos DB di wilayah yang sama dengan database sumber Anda.

  • Aktifkan TLS: Azure Cosmos DB memiliki persyaratan dan standar keamanan yang ketat. Pastikan untuk mengaktifkan TLS saat Anda berinteraksi dengan akun Anda. Ketika Anda menggunakan CQL dengan SSH, Anda memiliki opsi untuk memberikan informasi TLS.

Opsi untuk melakukan migrasi data

Anda dapat memindahkan data dari beban kerja Cassandra yang ada ke Azure Cosmos DB dengan menggunakan perintah cqlshCOPY, atau dengan menggunakan Spark.

Memigrasikan data dengan menggunakan perintah cqlsh COPY

Gunakan perintah CQL COPY untuk menyalin data lokal ke API untuk akun Cassandra di Azure Cosmos DB.

Peringatan

Hanya gunakan CQL COPY untuk memigrasikan himpunan data kecil. Untuk memindahkan himpunan data besar, migrasikan data dengan menggunakan Spark.

  1. Untuk memastikan bahwa file csv Anda berisi struktur file yang benar, gunakan perintah COPY TO untuk mengekspor data langsung dari tabel Cassandra sumber Anda ke file csv (pastikan cqlsh terhubung ke tabel sumber menggunakan kredensial yang sesuai):

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. Sekarang dapatkan api Anda untuk informasi string koneksi akun Cassandra:

    • Masuk ke portal Microsoft Azure,dan buka akun Azure Cosmos DB Anda.

    • Buka panelString Koneksi. Di sini Anda melihat semua informasi yang Anda butuhkan untuk terhubung ke API Anda untuk akun Cassandra dari cqlsh.

  3. Masuk ke cqlsh dengan menggunakan informasi koneksi dari portal.

  4. Gunakan perintah CQLCOPY FROM untuk menyalin data.csv (masih berada di direktori akar pengguna tempat cqlsh dipasang):

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

Catatan

API untuk Cassandra mendukung protokol versi 4, yang dikirim dengan Cassandra 3.11. Ada kemungkinan terjadinya masalah saat menggunakan versi protokol yang lebih baru dengan API kami. COPY FROM dengan versi protokol yang lebih baru dapat berubah menjadi perulangan dan ditampilkannya baris duplikat. Tambahkan versi protokol ke perintah cqlsh.

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Menambahkan opsi pembatasan throughput ke perintah CQL Copy

Perintah COPY dalam cqlsh mendukung berbagai parameter untuk mengontrol laju penyerapan dokumen ke Azure Cosmos DB.

Konfigurasi default perintah COPY akan menyerap data dengan kecepatan yang sangat cepat dan akan mengabaikan perilaku pembatasan tarif CosmosDB. Anda harus mengurangi CHUNKSIZE atau INGESTRATE sesuai pada throughput yang dikonfigurasi pada koleksi.

Kami merekomendasikan konfigurasi di bawah ini (minimal) untuk koleksi pada 20.000 RU jika ukuran dokumen atau rekaman adalah 1 KB.

  • CHUNKSIZE = 100
  • INGESTRATE = 500
  • MAXATTEMPTS = 10
Contoh perintah
  • Menyalin data dari API untuk Cassandra ke file csv lokal
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
  • Menyalin data dari file csv lokal ke API untuk Cassandra
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;

Penting

Hanya versi sumber terbuka Apache Cassandra dari CQLSH COPY yang didukung. Datastax Enterprise (DSE) versi CQLSH mungkin mengalami kesalahan.

Migrasikan data menggunakan Spark

Gunakan langkah-langkah berikut untuk memigrasikan data ke API untuk akun Cassandra dengan Spark:

  1. Provisikan kluster Azure Databricks atau kluster Azure HDInsight.

  2. Memindahkan data ke API tujuan untuk titik akhir Cassandra. Lihat panduan cara ini untuk migrasi dengan Azure Databricks.

Melakukan migrasi data dengan menggunakan pekerjaan Spark adalah opsi yang direkomendasikan jika Anda memiliki data yang berada di kluster yang ada di komputer virtual Azure atau cloud lainnya. Untuk melakukan ini, Anda harus menyiapkan Spark sebagai perantara untuk satu kali atau konsumsi reguler. Anda dapat mempercepat migrasi ini dengan menggunakan konektivitas Azure ExpressRoute antara lingkungan lokal Anda dan Azure.

Migrasi langsung

Jika migrasi tanpa waktu henti dari kluster Apache Cassandra asli diperlukan, sebaiknya konfigurasikan penulisan ganda, dan pemuatan data massal terpisah untuk memigrasikan data historis. Kami telah membuat penerapan pola ini lebih mudah dengan menyediakan proksi penulisan ganda sumber terbuka untuk memungkinkan perubahan kode aplikasi minimal. Lihat artikel petunjuk kami tentang migrasi langsung menggunakan proksi penulisan ganda dan Apache Spark untuk detail selengkapnya tentang penerapan pola ini.

Membersihkan sumber daya

Saat sumber daya tidak lagi diperlukan, Anda dapat menghapus grup sumber daya, akun Azure Cosmos DB, dan semua sumber daya terkait. Untuk melakukannya, pilih grup sumber daya untuk komputer virtual, pilih Hapus, lalu konfirmasi nama grup sumber daya yang akan dihapus.

Langkah berikutnya

Dalam tutorial ini, Anda telah mempelajari cara memigrasikan data Anda ke API untuk akun Cassandra di Azure Cosmos DB. Sekarang Anda dapat mempelajari konsep lain di Azure Cosmos DB: