Руководство. Перенос данных в учетную запись API Cassandra

ПРИМЕНИМО К: API Cassandra

Как у разработчика у вас могут существовать рабочие нагрузки Cassandra, выполняемые локально или в облаке, и может понадобиться перенести их в Azure. Такие рабочие нагрузки можно перенести в учетную запись API Cassandra в Azure Cosmos DB. В этом руководстве приведены инструкции к различным методам переноса данных Apache Cassandra в учетную запись API Cassandra в Azure Cosmos DB.

В рамках этого руководства рассматриваются следующие задачи:

  • Планирование миграции
  • Предварительные требования для миграции
  • Перенос данных с помощью команды cqlsh COPY
  • Перенос данных с помощью Spark

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Предварительные требования для миграции

  • Оцените требования к пропускной способности. Прежде чем переносить данные в учетную запись API Cassandra в Azure Cosmos DB, следует оценить потребности в пропускной способности рабочей нагрузки. Как правило, рекомендуется начинать со средней пропускной способности, требуемой для операций CRUD, а затем включить дополнительную пропускную способность, необходимую для операций извлечения, преобразования и загрузки или операций, для которых характерны резкие скачки. Для планирования миграции необходимо знать следующее.

    • Текущий или предполагаемый размер данных. Определяет минимальное требование к размеру базы данных и пропускной способности. Если вы оцениваете размер данных для нового приложения, можно предположить, что данные равномерно распределены по строкам, и получить примерное значение путем умножения на размер данных.

    • Требуемая пропускная способность. Приблизительная пропускная способность для операций чтения (запрос, получение) и записи (изменение, удаление, вставка). Это значение необходимо для вычисления требуемого количества единиц, а также размера данных в устойчивом состоянии.

    • Схема. Подключитесь к существующему кластеру Cassandra с помощью cqlsh и экспортируйте схему из Cassandra.

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

      Определив требования существующей рабочей нагрузки, создайте учетную запись Azure Cosmos DB, базу данных и контейнеры в соответствии с полученными требованиями к пропускной способности.

    • Определите стоимость операции в единицах запроса. Определить ЕЗ можно с помощью любого из пакетов SDK, поддерживаемого API Cassandra. В этом примере мы используем для оценки затрат версию .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}");
        }
      
  • Выделите требуемую пропускную способность. Azure Cosmos DB поддерживает автоматическое масштабирование хранилища и пропускной способности по мере роста требований. Вы можете оценить требуемую вам пропускную способность с помощью калькулятора единиц запроса Azure Cosmos DB.

  • Создайте таблицы в учетной записи API Cassandra. Прежде чем начать миграцию данных, предварительно создайте все таблицы с помощью портала Azure или cqlsh. Если вы выполняете перенос в учетную запись Azure Cosmos DB, обладающую пропускной способностью уровня базы данных, обязательно укажите ключ раздела при создании контейнеров.

  • Увеличьте пропускную способность. Продолжительность перемещения данных зависит от пропускной способности, которую вы предоставите для таблиц в Azure Cosmos DB. Увеличьте пропускную способность на время выполнения миграции. Более высокая пропускная способность позволяет избежать ограничения скорости и выполнить перенос быстрее. После переноса уменьшите пропускную способность для экономии расходов. Также рекомендуется использовать учетную запись Azure Cosmos DB, находящуюся в том же регионе, что и база данных-источник.

  • Включите протокол TLS. В Azure Cosmos DB строгие требования к безопасности и стандарты. Обязательно включите TLS при взаимодействии с учетной записью. При использовании CQL с SSH у вас есть возможность предоставить сведения о TLS.

Варианты миграции данных

Вы можете переместить данные из существующих рабочих нагрузок Cassandra в Azure Cosmos DB с помощью команды cqlsh COPY или с помощью Spark.

Перенос данных с помощью команды cqlsh COPY

Команда CQL COPY используется для копирования локальных данных в учетную запись API Cassandra в Azure Cosmos DB.

  1. Получение сведений о строке подключения для учетной записи API Cassandra

    • Войдите на портал Azure и перейдите в учетную запись Azure Cosmos DB.

    • Откройте панель Строка подключения. Здесь вы можете просмотреть все сведения, необходимые для подключения к учетной записи API Cassandra из cqlsh.

  2. Войдите в cqlsh, используя полученные на портале сведения о подключении.

  3. Используйте команду CQL COPY, чтобы скопировать локальные данные в учетную запись API Cassandra.

    COPY exampleks.tablename FROM filefolderx/*.csv 
    

Перенос данных с помощью Spark

Для переноса данных в учетную запись API Cassandra с помощью Spark следуйте приведенным ниже инструкциям.

  1. Подготовьте кластер Azure Databricks или кластер Azure HDInsight.

  2. Переместите данные в целевую конечную точку API Cassandra. Сведения о миграции с помощью Azure Databricks см. в этом руководстве.

Перенос данных с помощью заданий Spark рекомендуется, если у вас есть данные, хранимые в существующем кластере в виртуальных машинах Azure или в любом другом облаке. Для этого следует настроить Spark в качестве промежуточного звена для однократного или регулярного приема данных. Можно ускорить миграцию с помощью подключений Azure ExpressRoute между локальной средой и Azure.

Очистка ресурсов

Когда группа ресурсов, учетная запись Azure Cosmos DB и все связанные ресурсы не требуются, можно удалить их. Для этого выберите группу ресурсов для виртуальной машины, выберите Удалить и подтвердите имя удаляемой группы ресурсов.

Дальнейшие действия

Из этого руководства вы узнали, как перенести данные в учетную запись API Cassandra в Azure Cosmos DB. Теперь вы можете познакомиться с другими концепциями Azure Cosmos DB: