exponenta event banner

upsert

Вставка или обновление данных в базе данных Apache Cassandra

Описание

пример

upsert(conn,keyspace,tablename,data) экспортирует данные из MATLAB ®, вставляя или обновляя их в таблицу базы данных Apache Cassandra ®.

пример

upsert(conn,keyspace,tablename,data,Name,Value) указывает параметры, использующие один или несколько аргументов значения имени. Например, 'ConsistencyLevel',"TWO" задает уровень непротиворечивости, чтобы указать, что для выполнения запроса CQL должны отвечать два узла.

Примеры

свернуть все

Вставьте данные из MATLAB ® в базу данных Apache Cassandra ® с помощью интерфейса C++ базы данных Apache Cassandra и просмотрите данные с помощью подключения к базе данных Cassandra.

База данных Кассандры включает employees_by_job таблица базы данных, содержащая данные о сотрудниках и job_id ключ раздела.

Создание подключения к базе данных Cassandra с использованием настроенного источника данных CassandraDataSource и пустое имя пользователя и пароль. apacheCassandra функция возвращает conn в качестве connection объект.

datasource = "CassandraDataSource";
username = "";
password = "";
conn = apacheCassandra(datasource,username,password);

Возвращает имена таблиц базы данных Cassandra в employeedata keyspace. t - строковый массив, содержащий имена этих таблиц.

keyspace = "employeedata";
t = tablenames(conn,keyspace)
t = 3×1 string
    "employees_by_id"
    "employees_by_job"
    "employees_by_name"

Импорт данных сотрудников в MATLAB из employees_by_job с помощью подключения к базе данных Cassandra.

keyspace = "employeedata";
tablename = "employees_by_job";
results = partitionRead(conn,keyspace,tablename);

Просмотрите последние несколько строк импортированных данных сотрудника.

tail(results)
ans=8×13 table
       job_id        hire_date     employee_id    commission_pct    department_id      email       first_name      last_name      manager_id         office         performance_ratings     phone_number     salary
                                                                                                                                                building    room                                                   
    ____________    ___________    ___________    ______________    _____________    __________    ___________    ____________    __________    ________________    ___________________    ______________    ______

    "SH_CLERK"      27-Jan-2004        184             NaN                50         "NSARCHAN"    "Nandita"      "Sarchand"         121        "North"     256         {2×1 int32}        "650.509.1876"     4200 
    "MK_REP"        17-Aug-2005        202             NaN                20         "PFAY"        "Pat"          "Fay"              201        "East"      349         {3×1 int32}        "603.123.6666"     6000 
    "PU_CLERK"      10-Aug-2007        119             NaN                30         "KCOLMENA"    "Karen"        "Colmenares"       114        "West"      252         {5×1 int32}        "515.127.4566"     2500 
    "PU_CLERK"      15-Nov-2006        118             NaN                30         "GHIMURO"     "Guy"          "Himuro"           114        "East"      227         {4×1 int32}        "515.127.4565"     2600 
    "PU_CLERK"      24-Dec-2005        116             NaN                30         "SBAIDA"      "Shelli"       "Baida"            114        "North"     189         {2×1 int32}        "515.127.4563"     2900 
    "PU_CLERK"      24-Jul-2005        117             NaN                30         "STOBIAS"     "Sigal"        "Tobias"           114        "South"     195         {2×1 int32}        "515.127.4564"     2800 
    "PU_CLERK"      18-May-2003        115             NaN                30         "AKHOO"       "Alexander"    "Khoo"             114        "West"      135         {2×1 int32}        "515.127.4562"     3100 
    "AC_ACCOUNT"    07-Jun-2002        206             NaN               110         "WGIETZ"      "William"      "Gietz"            205        "East"      258         {2×1 int32}        "515.123.8181"     8300 

results - таблица, содержащая следующие переменные:

  • job_id - Идентификатор задания

  • hire_date - Дата найма

  • employee_id - Идентификатор сотрудника

  • commission_pct - Комиссионный процент

  • department_id - Идентификатор отдела

  • email - Адрес электронной почты

  • first_name - Имя

  • last_name - Фамилия

  • manager_id - Идентификатор менеджера

  • office - Расположение офиса (таблица, содержащая две переменные для здания и помещения)

  • performance_ratings - Оценки эффективности

  • phone_number - Номер телефона

  • salary - Зарплата

Отображение типов данных CQL столбцов в employees_by_job таблица базы данных.

cols = columninfo(conn,keyspace,tablename);
cols(:,1:2)
ans=13×2 table
            Name              DataType  
    _____________________    ___________

    "job_id"                 "text"     
    "hire_date"              "date"     
    "employee_id"            "int"      
    "commission_pct"         "double"   
    "department_id"          "int"      
    "email"                  "text"     
    "first_name"             "text"     
    "last_name"              "text"     
    "manager_id"             "int"      
    "office"                 "office"   
    "performance_ratings"    "list<int>"
    "phone_number"           "text"     
    "salary"                 "int"      

Создайте таблицу данных, представляющих одного сотрудника для вставки в базу данных Cassandra. Укажите имена переменных. Создайте таблицу для сведений о офисе. Затем создайте таблицу с информацией о сотрудниках, содержащую вложенную таблицу офисной информации. Задайте имена переменных.

varnames = ["job_id" "hire_date" "employee_id" ...
    "commission_pct" "department_id" "email" "first_name" ...
    "last_name" "manager_id" "office" "performance_ratings" ... 
    "phone_number" "salary"];
office = table("South",160, ...
    'VariableNames',["building" "room"]);
data = table("IT_ADMIN",datetime('today'),301,0.25,30,"SMITH123", ...
    "Alex","Smith",114,office,{[4 5]},"515.123.2345",3000);
data.Properties.VariableNames = varnames;

Вставьте информацию о сотруднике в базу данных Cassandra.

upsert(conn,keyspace,tablename,data)

Просмотр вставленных данных путем их импорта в MATLAB с помощью ключа секционирования IT_ADMIN. employees_by_job содержит новую строку.

keyValue = "IT_ADMIN";
results = partitionRead(conn,keyspace,tablename,keyValue)
results=1×13 table
      job_id       hire_date     employee_id    commission_pct    department_id      email       first_name    last_name    manager_id         office         performance_ratings     phone_number     salary
                                                                                                                                          building    room                                                   
    __________    ___________    ___________    ______________    _____________    __________    __________    _________    __________    ________________    ___________________    ______________    ______

    "IT_ADMIN"    06-Oct-2020        301             0.25              30          "SMITH123"      "Alex"       "Smith"        114        "South"     160         {2×1 int32}        "515.123.2345"     3000 

Закройте подключение к базе данных Cassandra.

close(conn)

Обновление данных в базе данных Apache Cassandra ® с использованием данных MATLAB ® и интерфейса базы данных Apache Cassandra C++. Отображение обновленных данных с помощью подключения к базе данных Cassandra. Укажите уровень согласованности для операции записи.

База данных Кассандры включает employees_by_job таблица базы данных, содержащая данные о сотрудниках и job_id ключ раздела.

Создание подключения к базе данных Cassandra с использованием настроенного источника данных CassandraDataSource и пустое имя пользователя и пароль. apacheCassandra функция возвращает conn в качестве connection объект.

datasource = "CassandraDataSource";
username = "";
password = "";
conn = apacheCassandra(datasource,username,password);

Возвращает имена таблиц базы данных Cassandra в employeedata keyspace. t - строковый массив, содержащий имена этих таблиц.

keyspace = "employeedata";
t = tablenames(conn,keyspace)
t = 3×1 string
    "employees_by_id"
    "employees_by_job"
    "employees_by_name"

Импорт данных сотрудников в MATLAB из employees_by_job с помощью подключения к базе данных Cassandra.

keyspace = "employeedata";
tablename = "employees_by_job";
results = partitionRead(conn,keyspace,tablename);

Просмотрите последние несколько строк импортированных данных сотрудника.

tail(results)
ans=8×13 table
       job_id        hire_date     employee_id    commission_pct    department_id      email       first_name      last_name      manager_id         office         performance_ratings     phone_number     salary
                                                                                                                                                building    room                                                   
    ____________    ___________    ___________    ______________    _____________    __________    ___________    ____________    __________    ________________    ___________________    ______________    ______

    "SH_CLERK"      27-Jan-2004        184             NaN                50         "NSARCHAN"    "Nandita"      "Sarchand"         121        "North"     256         {2×1 int32}        "650.509.1876"     4200 
    "MK_REP"        17-Aug-2005        202             NaN                20         "PFAY"        "Pat"          "Fay"              201        "East"      349         {3×1 int32}        "603.123.6666"     6000 
    "PU_CLERK"      10-Aug-2007        119             NaN                30         "KCOLMENA"    "Karen"        "Colmenares"       114        "West"      252         {5×1 int32}        "515.127.4566"     2500 
    "PU_CLERK"      15-Nov-2006        118             NaN                30         "GHIMURO"     "Guy"          "Himuro"           114        "East"      227         {4×1 int32}        "515.127.4565"     2600 
    "PU_CLERK"      24-Dec-2005        116             NaN                30         "SBAIDA"      "Shelli"       "Baida"            114        "North"     189         {2×1 int32}        "515.127.4563"     2900 
    "PU_CLERK"      24-Jul-2005        117             NaN                30         "STOBIAS"     "Sigal"        "Tobias"           114        "South"     195         {2×1 int32}        "515.127.4564"     2800 
    "PU_CLERK"      18-May-2003        115             NaN                30         "AKHOO"       "Alexander"    "Khoo"             114        "West"      135         {2×1 int32}        "515.127.4562"     3100 
    "AC_ACCOUNT"    07-Jun-2002        206             NaN               110         "WGIETZ"      "William"      "Gietz"            205        "East"      258         {2×1 int32}        "515.123.8181"     8300 

results - таблица, содержащая следующие переменные:

  • job_id - Идентификатор задания

  • hire_date - Дата найма

  • employee_id - Идентификатор сотрудника

  • commission_pct - Комиссионный процент

  • department_id - Идентификатор отдела

  • email - Адрес электронной почты

  • first_name - Имя

  • last_name - Фамилия

  • manager_id - Идентификатор менеджера

  • office - Расположение офиса (таблица, содержащая две переменные для здания и помещения)

  • performance_ratings - Оценки эффективности

  • phone_number - Номер телефона

  • salary - Зарплата

Отображение типов данных CQL столбцов в employees_by_job таблица базы данных.

cols = columninfo(conn,keyspace,tablename);
cols(:,1:2)
ans=13×2 table
            Name              DataType  
    _____________________    ___________

    "job_id"                 "text"     
    "hire_date"              "date"     
    "employee_id"            "int"      
    "commission_pct"         "double"   
    "department_id"          "int"      
    "email"                  "text"     
    "first_name"             "text"     
    "last_name"              "text"     
    "manager_id"             "int"      
    "office"                 "office"   
    "performance_ratings"    "list<int>"
    "phone_number"           "text"     
    "salary"                 "int"      

Импорт данных для обновления с помощью partitionRead функция со значением ключа секционирования MK_REP. Данные предназначены для сотрудника, являющегося представителем по маркетингу.

keyValue = "MK_REP";
data = partitionRead(conn,keyspace,tablename,keyValue)
data=1×13 table
     job_id      hire_date     employee_id    commission_pct    department_id    email     first_name    last_name    manager_id         office         performance_ratings     phone_number     salary
                                                                                                                                    building    room                                                   
    ________    ___________    ___________    ______________    _____________    ______    __________    _________    __________    ________________    ___________________    ______________    ______

    "MK_REP"    17-Aug-2005        202             NaN               20          "PFAY"      "Pat"         "Fay"         201         "East"     349         {3×1 int32}        "603.123.6666"     6000 

Обновите процент комиссионных до 0,25 для представителя по маркетингу. Также укажите уровень непротиворечивости "ONE" для обеспечения фиксации операции записи одним узлом реплики.

data.commission_pct = 0.25;
level = "ONE";
upsert(conn,keyspace,tablename,data,'ConsistencyLevel',level)

Просмотр обновленных данных путем их импорта в MATLAB с использованием значения ключа секционирования MK_REP. Обновленный процент комиссии для представителя маркетинга составляет 0,25.

keyValue = "MK_REP";
results = partitionRead(conn,keyspace,tablename,keyValue)
results=1×13 table
     job_id      hire_date     employee_id    commission_pct    department_id    email     first_name    last_name    manager_id         office         performance_ratings     phone_number     salary
                                                                                                                                    building    room                                                   
    ________    ___________    ___________    ______________    _____________    ______    __________    _________    __________    ________________    ___________________    ______________    ______

    "MK_REP"    17-Aug-2005        202             0.25              20          "PFAY"      "Pat"         "Fay"         201         "East"     349         {3×1 int32}        "603.123.6666"     6000 

Закройте подключение к базе данных Cassandra.

close(conn)

Входные аргументы

свернуть все

Подключение к базе данных Apache Cassandra, указанное как connection объект.

Keyspace, заданный как вектор символа или скаляр строки. Если вы не знаете ключевое пространство, то получите доступ к Keyspaces имущества connection объект, использующий точечную нотацию для просмотра ключевых пространств в базе данных Кассандры.

Пример: "employeedata"

Типы данных: char | string

Имя таблицы базы данных Cassandra, указанное как вектор символов или скаляр строки. Если имя таблицы неизвестно, используйте tablenames функция, чтобы найти его.

Пример: "employees_by_job"

Типы данных: char | string

Данные для вставки или обновления в базе данных Cassandra, указанные как таблица. Необходимо указать первичные ключи таблицы базы данных Cassandra, но можно игнорировать другие столбцы Cassandra. Имена переменных в таблице должны совпадать с именами столбцов Кассандры в таблице базы данных без учета регистра. Типы данных переменных в таблице должны быть совместимы с типами данных CQL столбцов Кассандры. Дополнительные сведения см. в разделе Преобразование типов данных CQL в типы данных MATLAB с помощью интерфейса Apache Cassandra Database C++.

Типы данных: table

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: upsert(conn,keyspace,tablename,data,'ConsistencyLevel',"ONE",'RequestTimeout',15) экспортирует данные, получая ответ на запись от одного узла, и база данных должна подождать 15 секунд, чтобы выполнить операцию записи, прежде чем выдать ошибку.

Уровень согласованности, указанный как одно из этих значений.

Значение уровня согласованностиОперация записи

"ALL"

Фиксация на всех узлах реплики.

"EACH_QUORUM"

Фиксация на большинстве узлов реплики в каждом центре обработки данных.

"QUORUM"

Фиксация на большинстве узлов реплики.

"LOCAL_QUORUM"

Фиксация на большинстве узлов реплики в локальном центре обработки данных.

"ONE" (по умолчанию)

Фиксация на одном узле реплики.

"TWO"

Фиксация на двух узлах реплики.

"THREE"

Фиксация на трех узлах реплики.

"LOCAL_ONE"

Фиксация на одном узле реплики в локальном центре обработки данных.

"ANY"

Зафиксировать хотя бы на одном узле реплики.

Значение уровня согласованности можно указать как вектор символа или скаляр строки.

Дополнительные сведения об уровнях непротиворечивости см. в разделе Настройка непротиворечивости данных.

Типы данных: char | string

Это свойство доступно только для чтения.

Тайм-аут запроса, указанный как положительный числовой скаляр. Тайм-аут запроса указывает количество секунд, в течение которых база данных ожидает возврата запроса CQL перед выдачей ошибки.

Типы данных: double

Представлен в R2021a