Рубрики

Роль ключей в Кассандре

В этой статье мы собираемся обсудить, почему ключи важны и как они работают и отличаются от реляционной базы данных. В основном, ключи используются для группировки и организации данных по столбцам и строкам в базе данных, поэтому давайте посмотрим.

    В Кассандре доступно множество ключей для порционирования .

    1. Simple Primary key
    2. Composite key
    3. Using a compound primary key 

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

    1. Простой первичный ключ:
    В базовом первичном ключе один столбец использует имя столбца в качестве ключа раздела. В этом случае первичный ключ состоит только из ключа раздела. Только первичный ключ может быть указан при извлечении данных из таблицы.

    CREATE KEYSPACE Employee
    WITH REPLICATION = { 'class' : 'SimpleStrategy', 
                         'replication_factor' : 1 };
    USE Employee;
    CREATE TABLE Employee_info ( 
    Employee_id UUID PRIMARY KEY, 
    Emp_name text, 
    Emp_domain text 
    );
    

    2. Композитный ключ:
    В составном ключе разделения Cassandra мы можем использовать более отсортированную строку с помощью ключа. Давайте рассмотрим пример, чтобы понять. Ниже указано Employee_name, являющееся частью первичного ключа, которое называется составным ключом раздела для таблицы Employee_info.

    CREATE TABLE Employee_info
    (
    Employee_id int,
    Employee_name text,
    Employee_domain text,
    Employee_add text
    PRIMARY KEY ((Emplyee_id, Employee_name), Employee_domain) 
    ); 

    В приведенной выше таблице Employee_id и Employee_name используются для составного ключа раздела. Здесь Employee_domain дополнительный столбец в первичном ключе для возврата отсортированного результата. давайте рассмотрим сценарий, где кластеризация столбца более полезна.

    INSERT INTO Employee_info(Employee_id, Employee_name, 
                               Employee_domain, Employee_add) 
            VALUES (1, ‘Ashish’, ‘A’, ‘Delhi’);
    INSERT INTO Employee_info(Employee_id, Employee_name, 
                              Employee_domain, Employee_add) 
           VALUES (1, ‘Ashish’, ‘B’, ‘Mumbai’);
    INSERT INTO Employee_info(Employee_id, Employee_name, 
                              Employee_domain, Employee_add ) 
           VALUES (2, ‘Ashish’, ‘C’, ‘Hyd’); 
    Select * 
    from Employee_info; 

    Выход:

    Employee_idEmployee_nameEmployee_domainEmployee_add
    1AshishADelhi
    1AshishBMumbai
    2AshishCHyd


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

    3. Используя составной первичный ключ:
    Используйте составной первичный ключ, чтобы создать несколько столбцов, которые можно использовать для запроса и возврата отсортированных результатов.
    Давайте возьмем пример таблицы Employee_info, где мы будем нормализовать данные. Чтобы создать таблицу с составным первичным ключом, используйте два или более столбцов в качестве первичного ключа.
    Давайте рассмотрим пример, в котором используется дополнительное предложение WITH CLUSTERING ORDER BY, чтобы упорядочить Employee_points в порядке убывания.

    CREATE TABLE Employee.Employee_info ( 
    Employee_name text, 
    Employee_points int, 
    Employee_id UUID,  
    PRIMARY KEY (Employee_name, Employee_points)
    ); 

    Давайте рассмотрим пример, в котором используется дополнительное предложение WITH CLUSTERING ORDER BY, чтобы упорядочить Employee_points в порядке убывания.

    CREATE TABLE Employee.Employee_info ( 
    Employee_name text, 
    Employee_points int, 
    Employee_id int,  
    PRIMARY KEY (Employee_name, Employee_points)
    ) WITH CLUSTERING ORDER BY (Employee_points DESC); 

    Теперь давайте вставим данные в таблицу Employee_info и использовали для этого следующий CQL-запрос.

    INSERT INTO Employee_info (Employee_name, Employee_points, 
                                                   Employee_id) 
            VALUES (‘Ashish’, 90, 1);
    INSERT INTO Employee_info (Employee_name, Employee_points, 
                                              Employee_id ) 
           VALUES (‘Rana’, 95, 2);
    INSERT INTO Employee_info(Employee_name, Employee_points, 
                                             Employee_id) 
           VALUES (‘Ashish’, 85, 3); 
    Select * 
    from Employee_info; 

    Выход:

    Employee_nameEmployee_pointsEmployee_id
    Rana952
    Ashish901
    Ashish853

    Рекомендуемые посты:

    Роль ключей в Кассандре

    0.00 (0%) 0 votes