Краткое руководство. Создание приложения Cassandra с помощью пакета SDK Node.js и Azure Cosmos DB

Область применения: Кассандра

В этом кратком руководстве вы создадите учетную запись Azure Cosmos DB для Apache Cassandra и используйте клонированные из GitHub приложение Cassandra Node.js, чтобы создать базу данных и контейнер Cassandra. Azure Cosmos DB — это служба многомодельной базы данных, позволяющая быстро создать и запрашивать документы, таблицы, пары "ключ-значение", а также графовые базы данных, используя возможности глобального распределения и горизонтального масштабирования.

Необходимые компоненты

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

Кроме того, вам потребуется:

  • Node.js версии 0.10.29 или более поздней.
  • Git

Создание учетной записи базы данных

Прежде чем создавать базу данных документов, необходимо создать в Azure Cosmos DB учетную запись Cassandra.

  1. На домашней странице или в меню портала Azure выберите Создать ресурс.

  2. На странице Создание найдите и выберите Azure Cosmos DB.

  3. На странице Azure Cosmos DB выберите Создать.

  4. На странице API выберите "Создать" в разделе Cassandra.

    API определяет тип учетной записи, которую нужно создать. Azure Cosmos DB предоставляет пять API: NoSQL для баз данных документов, Gremlin для графовых баз данных, MongoDB для баз данных документов, таблиц Azure и Cassandra. Для каждого API требуется создать отдельную учетную запись.

    Выберите Cassandra, так как в этом кратком руководстве вы создаете таблицу, которая работает с API для Cassandra.

    Дополнительные сведения об API для Cassandra.

  5. На странице "Создание учетной записи Azure Cosmos DB" введите основные параметры для новой учетной записи Azure Cosmos DB.

    Параметр значение Description
    Подписка Ваша подписка Выберите подписку Azure, которую вы хотите использовать для этой учетной записи Azure Cosmos DB.
    Группа ресурсов создание

    Затем введите имя, использованное для учетной записи
    Выберите Создать. Затем введите новое имя группы ресурсов для учетной записи. Для удобства можно использовать то же имя, которое присвоено учетной записи Azure Cosmos DB.
    Имя учетной записи Укажите уникальное имя Введите уникальное имя для идентификации вашей учетной записи Azure Cosmos DB. URI вашей учетной записи cassandra.cosmos.azure.com будет добавлен к уникальному имени учетной записи.

    Имя может содержать только строчные буквы, цифры и дефисы. Его длина должна быть от 3 до 31 знаков.
    Местонахождение Ближайший к пользователям регион Выберите географическое расположение для размещения учетной записи Azure Cosmos DB. Используйте ближайшее к пользователям расположение, чтобы предоставить им максимально быстрый доступ к данным.
    Режим емкости Подготовленная пропускная способность или Бессерверный режим Выберите Подготовленная пропускная способность, чтобы создать учетную запись в режиме подготовленной пропускной способности. Выберите Бессерверный, чтобы создать учетную запись в режиме Бессерверный.
    Применение скидки на основе категории "Бесплатный" для Azure Cosmos DB Применить или не применять В категории "Бесплатный" Azure Cosmos DB для учетной записи бесплатно предоставляются первые 1000 единиц запросов в секунду и 25 ГБ свободного места. Ознакомьтесь с дополнительными сведениями о категории "Бесплатный".
    Ограничить общую пропускную способность учетной записи Выберите, чтобы ограничить пропускную способность учетной записи Это полезно, если требуется ограничить общую пропускную способность учетной записи определенным значением.

    Примечание.

    Вы можете использовать не более одной учетной записи Azure Cosmos DB категории "Бесплатный" на подписку Azure. При создании учетной записи нужно зарегистрироваться. Если параметр подачи заявки на скидку на основе категории "Бесплатный" не отображается, это означает, что в подписке уже включена другая учетная запись категории "Бесплатный".

    The new account page for Azure Cosmos DB for Apache Cassandra

  6. На вкладке Глобальное распределение настройте следующие сведения. При работе с этим кратким руководством можно оставить значения по умолчанию.

    Параметр значение Description
    Геоизбыточность Disable Включает или отключает глобальное распределение в вашей учетной записи, связывая ваш регион с парным регионом. В дальнейшем в учетную запись можно добавить дополнительные регионы.
    Операции записи с поддержкой нескольких регионов Disable Поддержка записи в несколько регионов позволяет использовать подготовленную пропускную способность для баз данных и контейнеров по всему миру.
    зоны доступности; Disable Зоны доступности — это изолированные расположения в регионе Azure. Каждая зона состоит из одного или нескольких центров обработки данных, оснащенных независимыми системами электроснабжения, охлаждения и сетевого взаимодействия.

    Примечание.

    Следующие параметры недоступны, если вы выбрали значение Бессерверный для параметра Режим емкости:

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

  8. Выберите Review + create (Просмотреть и создать).

  9. Проверьте параметры учетной записи, а затем нажмите кнопку Создать. Создание учетной записи занимает несколько минут. Дождитесь, пока на странице портала появится сообщение Развертывание выполнено.

    The Azure portal Notifications pane

  10. Выберите Перейти к ресурсу, чтобы перейти на страницу учетной записи Azure Cosmos DB.

Клонирование примера приложения

Клонируйте api для приложения Cassandra из GitHub, задайте строка подключения и запустите его.

  1. Откройте окно командной строки. Создайте папку с именем git-samples. Затем закройте окно.

    md "C:\git-samples"
    
  2. Откройте окно терминала Git, например Git Bash. С помощью команды cd перейдите в новую папку для установки примера приложения.

    cd "C:\git-samples"
    
  3. Выполните команду ниже, чтобы клонировать репозиторий с примером. Эта команда создает копию примера приложения на локальном компьютере.

    git clone https://github.com/Azure-Samples/azure-cosmos-db-cassandra-nodejs-getting-started.git
    
  4. Установите зависимости Node.js с помощью npm.

    npm install
    

Просмотр кода

Этот шаг необязательный. Если вы хотите узнать, как создавать ресурсы базы данных в коде, изучите приведенные ниже фрагменты кода. Все фрагменты кода взяты из файла uprofile.js, расположенного в папке C:\git-samples\azure-cosmos-db-cassandra-nodejs-getting-started. Если вас это не интересует, можете сразу переходить к разделу Обновление строки подключения.

  • Для указания имени пользователя и пароля используется страница строки подключения на портале Azure.

    let authProvider = new cassandra.auth.PlainTextAuthProvider(
        config.username,
        config.password
    );
    
  • client инициализируется со сведениями contactPoint. contactPoint извлекается с портала Azure.

    let client = new cassandra.Client({
        contactPoints: [`${config.contactPoint}:10350`],
        authProvider: authProvider,
        localDataCenter: config.localDataCenter,
        sslOptions: {
            secureProtocol: "TLSv1_2_method"
        },
    });
    
  • Подключение client к Azure Cosmos DB для Apache Cassandra.

    client.connect();
    
  • Создается пространство ключей.

    var query =
        `CREATE KEYSPACE IF NOT EXISTS ${config.keySpace} WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter' : '1' }`;
    await client.execute(query);
    
  • Создается таблица.

    query =
        `CREATE TABLE IF NOT EXISTS ${config.keySpace}.user (user_id int PRIMARY KEY, user_name text, user_bcity text)`;
    await client.execute(query);
    
  • Вставляются сущности ключа и значения.

    const arr = [
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (1, 'AdrianaS', 'Seattle')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (2, 'JiriK', 'Toronto')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (3, 'IvanH', 'Mumbai')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (4, 'IvanH', 'Seattle')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (5, 'IvanaV', 'Belgaum')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (6, 'LiliyaB', 'Seattle')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (7, 'JindrichH', 'Buenos Aires')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (8, 'AdrianaS', 'Seattle')`,
        `INSERT INTO  ${config.keySpace}.user (user_id, user_name , user_bcity) VALUES (9, 'JozefM', 'Seattle')`,
    ];
    for (const element of arr) {
        await client.execute(element);
    }
    
  • Запрос на получение всех значений ключа.

    query = `SELECT * FROM ${config.keySpace}.user`;
    const resultSelect = await client.execute(query);
    
    for (const row of resultSelect.rows) {
        console.log(
            "Obtained row: %d | %s | %s ",
            row.user_id,
            row.user_name,
            row.user_bcity
        );
    }
    
  • Запрос на получение значения ключа.

    query = `SELECT * FROM ${config.keySpace}.user where user_id=1`;
    const resultSelectWhere = await client.execute(query);
    
    for (const row of resultSelectWhere.rows) {
        console.log(
            "Obtained row: %d | %s | %s ",
            row.user_id,
            row.user_name,
            row.user_bcity
        );
    }
    
  • Закройте подключение.

    client.shutdown();
    

Обновление строки подключения

Перейдите на портал Azure, чтобы получить строку подключения, и скопируйте ее в приложение. Строка подключения обеспечивает обмен данными между вашим приложением и размещенной базой данных.

  1. Выберите элемент Строка подключения в своей учетной записи Azure Cosmos DB на портале Azure.

  2. Нажмите кнопку в правой части экрана, чтобы скопировать значение параметра CONTACT POINT вверху.

    Screenshot showing how to view and copy the CONTACT POINT, USERNAME,and PASSWORD from the Connection String page.

  3. Откройте файл config.js.

  4. Вставьте полученное на портале значение параметра CONTACT POINT над CONTACT-POINT в строке 9.

    Теперь строка 9 должна выглядеть примерно так:

    contactPoint: "cosmos-db-quickstarts.cassandra.cosmosdb.azure.com",

  5. Скопируйте значение параметра USERNAME на портале и вставьте его над <FillMEIN> в строке 2.

    Теперь строка 2 должна выглядеть примерно так:

    username: 'cosmos-db-quickstart',

  6. Скопируйте значение параметра PASSWORD на портале и вставьте его над USERNAME в строке 8.

    Теперь строка 8 должна выглядеть примерно так:

    password: '2Ggkr662ifxz2Mg==',

  7. Замените значение параметра REGION регионом Azure, в котором был создан этот ресурс.

  8. Сохраните файл config.js.

Запуск приложения Node.js

  1. В окне терминала Bash откройте каталог примеров, который вы клонировали ранее:

    cd azure-cosmos-db-cassandra-nodejs-getting-started
    
  2. Выполните приложение Node

    npm start
    
  3. Проверьте результаты из командной строки.

    Screenshot shows a Command Prompt window where you can view and verify the output.

    Нажмите клавиши CTRL+C, чтобы остановить выполнение программы и закрыть окно консоли.

  4. На портале Azure откройте обозреватель данных, чтобы запросить, изменить и обработать новые данные.

    Screenshot shows the Data Explorer page, where you can view the data.

Просмотр соглашений об уровне обслуживания на портале Azure

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

Чтобы просмотреть метрики и соглашения об уровне обслуживания, сделайте следующее:

  1. Выберите метрики в меню навигации учетной записи Azure Cosmos DB.

  2. Выберите вкладку, например Задержка, и укажите временной интервал справа. Сравните на диаграмме строки Actual (Фактическое значение) и SLA (Соглашение об уровне обслуживания).

    Azure Cosmos DB metrics suite

  3. Просмотрите метрики на других вкладках.

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

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

  1. На панели поиска портала Azure найдите и выберите Группы ресурсов.

  2. Выберите из списка группу ресурсов, созданную для этого краткого руководства.

    Select the resource group to delete

  3. На странице обзора группы ресурсов выберите Удалить группу ресурсов.

    Delete the resource group

  4. В следующем окне введите имя группы ресурсов, которую требуется удалить, и щелкните Удалить.

Следующие шаги

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