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 и пустые имя пользователя и пароль. The 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. The 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 ® и с помощью интерфейса C++ базы данных Apache Cassandra. Отображение обновленных данных при помощи соединения с базой данных Cassandra. Задайте уровень согласованности для операции записи.

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

Создайте соединение с базой данных Cassandra с помощью настроенного источника данных CassandraDataSource и пустые имя пользователя и пароль. The 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 объект, использующий запись через точку для просмотра ключевых пространств в базе данных Cassandra.

Пример: "employeedata"

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

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

Пример: "employees_by_job"

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

Данные для вставки или обновления в базу данных Cassandra, заданные как таблица. Необходимо задать первичные ключи таблицы базы данных Cassandra, но можно игнорировать другие столбцы Cassandra. Имена переменных в таблице должны совпадать с именами столбцов Кассандра в таблице базы данных без чувствительности к регистру. Типы данных переменных в таблице должны быть совместимы с типами данных CQL столбцов Cassandra. Для получения дополнительной информации смотрите Преобразование типов данных 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