카산드라-퀵 가이드

Apache Cassandra는 많은 상용 서버에서 많은 양의 데이터를 처리하도록 설계된 확장 성이 뛰어난 고성능 분산 데이터베이스로 단일 장애 지점없이 고 가용성을 제공합니다. NoSQL 데이터베이스의 한 유형입니다. 먼저 NoSQL 데이터베이스의 기능을 이해하겠습니다.

NoSQLDatabase

NoSQL 데이터베이스 (Not Only SQL이라고도 함)는 관계형 데이터베이스에서 사용되는 테이블 형식 관계 이외의 데이터를 저장하고 검색하는 메커니즘을 제공하는 데이터베이스입니다. 이러한 데이터베이스는 스키마가없고, 쉬운 복제를 지원하고, 간단한 API를 가지고 있으며, 최종적으로 일관성이 있으며, 엄청난 양의 데이터를 처리 할 수 ​​있습니다.

NoSQL 데이터베이스의 주요 목표는

  • 디자인의 단순성,
  • 수평 확장 및
  • 가용성에 대한 세밀한 제어.

NoSql 데이터베이스는 관계형 데이터베이스에 비해 다른 데이터 구조를 사용합니다. NoSQL에서 일부 작업을 더 빠르게 만듭니다. 주어진 NoSQL 데이터베이스의 적합성은 해결해야하는 문제에 따라 다릅니다.

NoSQL 대 관계형 데이터베이스

다음 표에는 관계형 데이터베이스와 NoSQL 데이터베이스를 구별하는 점이 나열되어 있습니다.

관계형 데이터베이스 NoSql 데이터베이스
강력한 쿼리 언어를 지원합니다. 매우 간단한 쿼리 언어를 지원합니다.
고정 된 스키마가 있습니다. 고정 된 스키마가 없습니다.
ACID (원 자성, 일관성, 격리 및 내구성)를 따릅니다. 단지 "최종적으로 일관성"입니다.
거래를 지원합니다. 거래를 지원하지 않습니다.

Cassandra 외에도 다음과 같은 매우 인기있는 NoSQL 데이터베이스가 있습니다.

  • Apache HBase− HBase는 Google의 BigTable을 모델로 한 오픈 소스 비 관계형 분산 데이터베이스이며 Java로 작성되었습니다. Apache Hadoop 프로젝트의 일부로 개발되었으며 HDFS에서 실행되어 Hadoop에 BigTable과 유사한 기능을 제공합니다.

  • MongoDB − MongoDB는 동적 스키마가있는 JSON 유사 문서를 선호하는 기존 테이블 기반 관계형 데이터베이스 구조를 사용하지 않는 크로스 플랫폼 문서 지향 데이터베이스 시스템으로, 특정 유형의 애플리케이션에서 데이터를 더 쉽고 빠르게 통합 할 수 있습니다.

Apache Cassandra 란 무엇입니까?

Apache Cassandra는 전 세계에 퍼져있는 매우 많은 양의 구조화 된 데이터를 관리하기위한 오픈 소스, 분산 및 분산 / 분산 스토리지 시스템 (데이터베이스)입니다. 단일 장애 지점없이 고 가용성 서비스를 제공합니다.

아래에 Apache Cassandra의 주목할만한 점이 나열되어 있습니다.

  • 확장 가능하고 내결함성이 있으며 일관성이 있습니다.

  • 열 지향 데이터베이스입니다.

  • 배포 설계는 Amazon의 Dynamo와 Google의 Bigtable에있는 데이터 모델을 기반으로합니다.

  • Facebook에서 만든이 제품은 관계형 데이터베이스 관리 시스템과 크게 다릅니다.

  • Cassandra는 단일 장애 지점이없는 Dynamo 스타일 복제 모델을 구현하지만보다 강력한 "열 패밀리"데이터 모델을 추가합니다.

  • Cassandra는 Facebook, Twitter, Cisco, Rackspace, ebay, Twitter, Netflix 등과 같은 일부 대기업에서 사용되고 있습니다.

카산드라의 특징

카산드라는 뛰어난 기술적 기능으로 인해 인기를 얻었습니다. 다음은 Cassandra의 일부 기능입니다.

  • Elastic scalability− Cassandra는 확장 성이 뛰어납니다. 요구 사항에 따라 더 많은 고객과 더 많은 데이터를 수용하기 위해 더 많은 하드웨어를 추가 할 수 있습니다.

  • Always on architecture − Cassandra는 단일 장애 지점이 없으며 장애를 감당할 수없는 비즈니스 크리티컬 애플리케이션에 지속적으로 사용할 수 있습니다.

  • Fast linear-scale performance− Cassandra는 선형 적으로 확장 가능합니다. 즉, 클러스터의 노드 수를 늘릴수록 처리량이 증가합니다. 따라서 빠른 응답 시간을 유지합니다.

  • Flexible data storage− Cassandra는 구조화, 반 구조화 및 비 구조화를 포함하여 가능한 모든 데이터 형식을 수용합니다. 필요에 따라 데이터 구조의 변경 사항을 동적으로 수용 할 수 있습니다.

  • Easy data distribution − Cassandra는 여러 데이터 센터에 데이터를 복제하여 필요한 곳에 데이터를 배포 할 수있는 유연성을 제공합니다.

  • Transaction support − Cassandra는 원 자성, 일관성, 격리 및 내구성 (ACID)과 같은 속성을 지원합니다.

  • Fast writes− Cassandra는 값싼 상용 하드웨어에서 실행되도록 설계되었습니다. 매우 빠른 쓰기를 수행하고 읽기 효율성을 저하시키지 않으면 서 수백 테라 바이트의 데이터를 저장할 수 있습니다.

카산드라의 역사

  • Cassandra는받은 편지함 검색을 위해 Facebook에서 개발되었습니다.
  • 2008 년 7 월에 페이스 북이 오픈 소스 화했습니다.
  • Cassandra는 2009 년 3 월 Apache Incubator에 채택되었습니다.
  • 2010 년 2 월부터 Apache 최상위 프로젝트가되었습니다.

Cassandra의 설계 목표는 단일 장애 지점없이 여러 노드에서 빅 데이터 워크로드를 처리하는 것입니다. Cassandra는 노드 전체에 피어 투 피어 분산 시스템을 가지고 있으며 데이터는 클러스터의 모든 노드에 분산됩니다.

  • 클러스터의 모든 노드는 동일한 역할을합니다. 각 노드는 독립적이며 동시에 다른 노드와 상호 연결됩니다.

  • 클러스터의 각 노드는 데이터가 실제로 클러스터에있는 위치에 관계없이 읽기 및 쓰기 요청을 수락 할 수 있습니다.

  • 노드가 다운되면 네트워크의 다른 노드에서 읽기 / 쓰기 요청을 처리 할 수 ​​있습니다.

Cassandra의 데이터 복제

Cassandra에서 클러스터에있는 하나 이상의 노드는 주어진 데이터에 대한 복제본 역할을합니다. 일부 노드가 오래된 값으로 응답 한 것으로 감지되면 Cassandra는 가장 최근 값을 클라이언트에 반환합니다. 가장 최근 값을 반환 한 후 Cassandra는read repair 백그라운드에서 오래된 값을 업데이트합니다.

다음 그림은 Cassandra가 클러스터의 노드간에 데이터 복제를 사용하여 단일 장애 지점을 방지하는 방법을 개략적으로 보여줍니다.

Note − 카산드라는 Gossip Protocol 백그라운드에서 노드가 서로 통신하고 클러스터에서 결함이있는 노드를 감지 할 수 있습니다.

카산드라의 구성 요소

Cassandra의 주요 구성 요소는 다음과 같습니다.

  • Node − 데이터가 저장되는 곳입니다.

  • Data center − 관련 노드의 모음입니다.

  • Cluster − 클러스터는 하나 이상의 데이터 센터를 포함하는 구성 요소입니다.

  • Commit log− 커밋 로그는 Cassandra의 크래시 복구 메커니즘입니다. 모든 쓰기 작업은 커밋 로그에 기록됩니다.

  • Mem-table− mem-table은 메모리 상주 데이터 구조입니다. 커밋 로그 후 데이터가 mem-table에 기록됩니다. 때로는 단일 열 패밀리의 경우 여러 mem-table이 있습니다.

  • SSTable − 콘텐츠가 임계 값에 도달하면 메모리 테이블에서 데이터가 플러시되는 디스크 파일입니다.

  • Bloom filter− 이는 요소가 집합의 구성원인지 여부를 테스트하기위한 빠르고 비 결정적 알고리즘 일뿐입니다. 특별한 종류의 캐시입니다. 블룸 필터는 모든 쿼리 후에 액세스됩니다.

카산드라 쿼리 언어

사용자는 CQL (Cassandra Query Language)을 사용하여 노드를 통해 Cassandra에 액세스 할 수 있습니다. CQL은 데이터베이스를 처리합니다.(Keyspace)테이블의 컨테이너로. 프로그래머는cqlsh: CQL 또는 별도의 응용 프로그램 언어 드라이버로 작업하라는 메시지가 표시됩니다.

클라이언트는 읽기-쓰기 작업을 위해 모든 노드에 접근합니다. 해당 노드 (코디네이터)는 클라이언트와 데이터를 보유한 노드간에 프록시를 수행합니다.

쓰기 작업

노드의 모든 쓰기 활동은 commit logs노드에 기록됩니다. 나중에 데이터가 캡처되어mem-table. 메모리 테이블이 가득 찰 때마다 데이터가 SStable데이터 파일. 모든 쓰기는 클러스터 전체에 자동으로 분할되고 복제됩니다. Cassandra는 정기적으로 SSTable을 통합하여 불필요한 데이터를 삭제합니다.

읽기 작업

읽기 작업 중에 Cassandra는 mem-table에서 값을 가져오고 블룸 필터를 확인하여 필요한 데이터를 보유하는 적절한 SSTable을 찾습니다.

Cassandra의 데이터 모델은 일반적으로 RDBMS에서 보는 것과 크게 다릅니다. 이 장에서는 Cassandra가 데이터를 저장하는 방법에 대한 개요를 제공합니다.

클러스터

Cassandra 데이터베이스는 함께 작동하는 여러 시스템에 분산되어 있습니다. 가장 바깥 쪽 컨테이너를 클러스터라고합니다. 장애 처리를 위해 모든 노드에는 복제본이 포함되어 있으며 장애 발생시 복제본이 담당합니다. Cassandra는 클러스터의 노드를 링 형식으로 정렬하고 데이터를 할당합니다.

키 스페이스

Keyspace는 Cassandra의 데이터에 대한 가장 바깥 쪽 컨테이너입니다. Cassandra의 Keyspace의 기본 속성은 다음과 같습니다.

  • Replication factor − 동일한 데이터의 사본을 수신 할 클러스터의 머신 수입니다.

  • Replica placement strategy− 반지에 복제품을 배치하는 것은 전략 일뿐입니다. 우리는 다음과 같은 전략을 가지고 있습니다.simple strategy (랙 인식 전략), old network topology strategy (랙 인식 전략) 및 network topology strategy (데이터 센터 공유 전략).

  • Column families− 키 스페이스는 하나 이상의 컬럼 패밀리 목록을위한 컨테이너입니다. 차례로 column family는 행 모음의 컨테이너입니다. 각 행에는 정렬 된 열이 있습니다. 열 패밀리는 데이터 구조를 나타냅니다. 각 키 스페이스에는 하나 이상의 컬럼 패밀리가 있습니다.

키 스페이스를 생성하는 구문은 다음과 같습니다.

CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

다음 그림은 키 스페이스의 개략도를 보여줍니다.

컬럼 패밀리

column family는 정렬 된 행 모음에 대한 컨테이너입니다. 차례로 각 행은 정렬 된 열 모음입니다. 다음 표는 관계형 데이터베이스 테이블에서 컬럼 패밀리를 구별하는 점을 나열합니다.

관계형 테이블 카산드라 컬럼 패밀리
관계형 모델의 스키마가 수정되었습니다. 데이터를 삽입하는 동안 테이블에 대해 특정 열을 정의하면 모든 행에서 모든 열이 적어도 null 값으로 채워 져야합니다. Cassandra에서는 열 패밀리가 정의되어 있지만 열은 정의되어 있지 않습니다. 언제든지 모든 column family에 원하는 열을 자유롭게 추가 할 수 있습니다.
관계형 테이블은 열만 정의하고 사용자는 테이블을 값으로 채 웁니다. Cassandra에서 테이블은 열을 포함하거나 수퍼 열 패밀리로 정의 할 수 있습니다.

카산드라 컬럼 패밀리는 다음과 같은 속성을 가지고 있습니다.

  • keys_cached − SSTable 당 캐시 할 위치의 수를 나타냅니다.

  • rows_cached − 전체 내용이 메모리에 캐시 될 행 수를 나타냅니다.

  • preload_row_cache − 행 캐시를 미리 채울 것인지 여부를 지정합니다.

Note − column family의 스키마가 고정되지 않은 관계형 테이블과 달리 Cassandra는 개별 행에 모든 열을 포함하도록 강제하지 않습니다.

다음 그림은 Cassandra 컬럼 패밀리의 예를 보여줍니다.

기둥

열은 키 또는 열 이름, 값 및 타임 스탬프의 세 가지 값이있는 Cassandra의 기본 데이터 구조입니다. 아래는 기둥의 구조입니다.

SuperColumn

수퍼 열은 특수 열이므로 키-값 쌍이기도합니다. 그러나 수퍼 열은 하위 열의 맵을 저장합니다.

일반적으로 컬럼 패밀리는 개별 파일의 디스크에 저장됩니다. 따라서 성능을 최적화하기 위해서는 질의 할 가능성이있는 컬럼을 같은 컬럼 군에 보관하는 것이 중요하며, 여기서는 수퍼 컬럼이 도움이 될 수 있습니다. 다음은 수퍼 컬럼의 구조입니다.

Cassandra 및 RDBMS의 데이터 모델

다음 표는 Cassandra의 데이터 모델과 RDBMS의 데이터 모델을 구분하는 요점을 나열합니다.

RDBMS 카산드라
RDBMS는 구조화 된 데이터를 다룹니다. Cassandra는 구조화되지 않은 데이터를 처리합니다.
고정 된 스키마가 있습니다. Cassandra는 유연한 스키마를 가지고 있습니다.
RDBMS에서 테이블은 배열의 배열입니다. (행 x 열) Cassandra에서 테이블은 "중첩 된 키-값 쌍"의 목록입니다. (ROW x COLUMN 키 x COLUMN 값)
데이터베이스는 애플리케이션에 해당하는 데이터를 포함하는 가장 바깥 쪽 컨테이너입니다. 키 스페이스는 애플리케이션에 해당하는 데이터를 포함하는 가장 바깥 쪽 컨테이너입니다.
테이블은 데이터베이스의 엔티티입니다. 테이블 또는 컬럼 패밀리는 키 스페이스의 엔티티입니다.
행은 RDBMS의 개별 레코드입니다. 행은 Cassandra의 복제 단위입니다.
열은 관계의 속성을 나타냅니다. Column은 Cassandra의 저장 단위입니다.
RDBMS는 외래 키, 조인 개념을 지원합니다. 관계는 컬렉션을 사용하여 표현됩니다.

Cassandra는 cqlsh와 다른 언어의 드라이버를 사용하여 액세스 할 수 있습니다. 이 장에서는 Cassandra와 함께 작동하도록 cqlsh 및 Java 환경을 설정하는 방법에 대해 설명합니다.

설치 전 설정

Linux 환경에 Cassandra를 설치하기 전에 다음을 사용하여 Linux를 설정해야합니다. ssh(보안 쉘). Linux 환경을 설정하려면 아래 단계를 따르십시오.

사용자 생성

처음에는 Hadoop에 대해 별도의 사용자를 생성하여 Hadoop 파일 시스템을 Unix 파일 시스템과 분리하는 것이 좋습니다. 사용자를 생성하려면 아래 단계를 따르십시오.

  • 명령을 사용하여 루트 열기 “su”.

  • 명령을 사용하여 루트 계정에서 사용자 만들기 “useradd username”.

  • 이제 다음 명령을 사용하여 기존 사용자 계정을 열 수 있습니다. “su username”.

Linux 터미널을 열고 다음 명령을 입력하여 사용자를 만듭니다.

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

SSH 설정 및 키 생성

클러스터에서 시작, 중지 및 분산 데몬 셸 작업과 같은 다른 작업을 수행하려면 SSH 설정이 필요합니다. 다른 Hadoop 사용자를 인증하려면 Hadoop 사용자에 대해 공개 / 개인 키 쌍을 제공하고이를 다른 사용자와 공유해야합니다.

다음 명령은 SSH를 사용하여 키 값 쌍을 생성하는 데 사용됩니다-

  • 공개 키 형식 id_rsa.pub를 authorized_keys에 복사합니다.
  • 소유자를 제공하고,
  • 각각 authorized_keys 파일에 대한 읽기 및 쓰기 권한.
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
  • ssh 확인 :
ssh localhost

자바 설치

Java는 Cassandra의 주요 전제 조건입니다. 우선, 다음 명령을 사용하여 시스템에 Java가 있는지 확인해야합니다.

$ java -version

모든 것이 잘 작동하면 다음과 같은 출력이 제공됩니다.

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

시스템에 Java가없는 경우 다음 단계에 따라 Java를 설치하십시오.

1 단계

다음 링크 에서 java (JDK <최신 버전>-X64.tar.gz)를 다운로드 하십시오.

Then jdk-7u71-linux-x64.tar.gz will be downloaded onto your system.

2 단계

일반적으로 다운로드 폴더에서 다운로드 한 Java 파일을 찾을 수 있습니다. 그것을 확인하고 추출jdk-7u71-linux-x64.gz 다음 명령을 사용하여 파일.

$ cd Downloads/
$ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

3 단계

모든 사용자가 Java를 사용할 수 있도록하려면 "/ usr / local /"위치로 이동해야합니다. 루트를 열고 다음 명령을 입력하십시오.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

4 단계

설정 용 PATHJAVA_HOME 변수에 다음 명령을 추가하십시오. ~/.bashrc 파일.

export JAVA_HOME = /usr/local/jdk1.7.0_71
export PATH = $PATH:$JAVA_HOME/bin

이제 모든 변경 사항을 현재 실행중인 시스템에 적용합니다.

$ source ~/.bashrc

5 단계

다음 명령을 사용하여 Java 대안을 구성하십시오.

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

이제 java -version 위에서 설명한대로 터미널에서 명령.

경로 설정

아래와 같이“/.bashrc”에 Cassandra 경로의 경로를 설정합니다.

[hadoop@linux ~]$ gedit ~/.bashrc

export CASSANDRA_HOME = ~/cassandra
export PATH = $PATH:$CASSANDRA_HOME/bin

Cassandra 다운로드

Apache Cassandra는 다음 명령을 사용하여 다운로드 링크 Cassandra 에서 사용할 수 있습니다 .

$ wget http://supergsego.com/apache/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz

명령을 사용하여 Cassandra 압축 해제 zxvf 아래 그림과 같이.

$ tar zxvf apache-cassandra-2.1.2-bin.tar.gz.

cassandra라는 새 디렉터리를 만들고 다운로드 한 파일의 내용을 아래 그림과 같이이 디렉터리로 이동합니다.

$ mkdir Cassandra $ mv apache-cassandra-2.1.2/* cassandra.

Cassandra 구성

열기 cassandra.yaml: 파일에서 사용할 수 있습니다. bin Cassandra의 디렉토리.

$ gedit cassandra.yaml

Note − deb 또는 rpm 패키지에서 Cassandra를 설치 한 경우 구성 파일은 다음 위치에 있습니다. /etc/cassandra Cassandra의 디렉토리.

위의 명령은 cassandra.yaml파일. 다음 구성을 확인하십시오. 기본적으로 이러한 값은 지정된 디렉토리로 설정됩니다.

  • data_file_directories “/var/lib/cassandra/data”

  • commitlog_directory “/var/lib/cassandra/commitlog”

  • saved_caches_directory “/var/lib/cassandra/saved_caches”

아래에 표시된대로 이러한 디렉토리가 존재하고 쓸 수 있는지 확인하십시오.

디렉터리 생성

수퍼 유저로서 두 개의 디렉토리를 만듭니다. /var/lib/cassandra/var./log/cassandra Cassandra가 데이터를 쓰는 곳입니다.

[root@linux cassandra]# mkdir /var/lib/cassandra
[root@linux cassandra]# mkdir /var/log/cassandra

폴더에 권한 부여

아래와 같이 새로 생성 된 폴더에 읽기-쓰기 권한을 부여합니다.

[root@linux /]# chmod 777 /var/lib/cassandra
[root@linux /]# chmod 777 /var/log/cassandra

Cassandra 시작

Cassandra를 시작하려면 터미널 창을 열고 Cassandra의 압축을 푼 Cassandra 홈 디렉토리 / 홈으로 이동 한 후 다음 명령을 실행하여 Cassandra 서버를 시작합니다.

$ cd $CASSANDRA_HOME $./bin/cassandra -f

-f 옵션을 사용하면 Cassandra가 백그라운드 프로세스로 실행되는 대신 포 그라운드에 머물도록 지시합니다. 모든 것이 잘되면 Cassandra 서버가 시작되는 것을 볼 수 있습니다.

프로그래밍 환경

프로그래밍 방식으로 Cassandra를 설정하려면 다음 jar 파일을 다운로드하십시오.

  • slf4j-api-1.7.5.jar
  • cassandra-driver-core-2.0.2.jar
  • guava-16.0.1.jar
  • metrics-core-3.0.2.jar
  • netty-3.9.0.Final.jar

별도의 폴더에 보관하십시오. 예를 들어, 우리는이 항아리를“Cassandra_jars”.

이 폴더의 클래스 경로를 설정하십시오. “.bashrc”아래와 같이 파일.

[hadoop@linux ~]$ gedit ~/.bashrc //Set the following class path in the .bashrc file. export CLASSPATH = $CLASSPATH:/home/hadoop/Cassandra_jars/*

Eclipse 환경

Eclipse를 열고 Cassandra _Examples라는 새 프로젝트를 만듭니다.

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Build Path→Configure Build Path 아래 그림과 같이.

속성 창이 열립니다. 라이브러리 탭에서Add External JARs. jar 파일을 저장 한 디렉토리로 이동하십시오. 5 개의 jar 파일을 모두 선택하고 아래와 같이 확인을 클릭합니다.

Referenced Libraries에서 아래에 표시된대로 추가 된 모든 필수 jar를 볼 수 있습니다.

Maven 종속성

아래는 maven을 사용하여 Cassandra 프로젝트를 빌드하기위한 pom.xml입니다.

<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"  
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
				
               <configuration>
                  <source>1.7</source>
                  <target>1.7</target>
               </configuration>
					
         </plugin>
      </plugins>
   </build> 

   <dependencies>
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>1.7.5</version>
      </dependency>
 
      <dependency>
         <groupId>com.datastax.cassandra</groupId>
         <artifactId>cassandra-driver-core</artifactId>
         <version>2.0.2</version>
      </dependency>
 
      <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>16.0.1</version>
      </dependency>
 
      <dependency>
         <groupId>com.codahale.metrics</groupId>
         <artifactId>metrics-core</artifactId>
         <version>3.0.2</version>
      </dependency>
 
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty</artifactId>
         <version>3.9.0.Final</version>
      </dependency>
   </dependencies>

</project>

이 장은 Cassandra의 모든 중요한 클래스를 다룹니다.

클러스터

이 클래스는 드라이버의 주요 진입 점입니다. 그것은에 속한다com.datastax.driver.core 꾸러미.

행동 양식

S. 아니. 방법 및 설명
1

Session connect()

현재 클러스터에 새 세션을 만들고 초기화합니다.

2

void close()

클러스터 인스턴스를 닫는 데 사용됩니다.

3

static Cluster.Builder builder()

새 Cluster.Builder 인스턴스를 만드는 데 사용됩니다.

Cluster.Builder

이 클래스는 Cluster.Builder 수업.

행동 양식

S. 아니요 방법 및 설명
1

Cluster.Builder addContactPoint(String address)

이 방법은 클러스터에 접점을 추가합니다.

2

Cluster build()

이 방법은 지정된 접점으로 클러스터를 구축합니다.

세션

이 인터페이스는 Cassandra 클러스터에 대한 연결을 보유합니다. 이 인터페이스를 사용하여 다음을 실행할 수 있습니다.CQL쿼리. 그것은에 속한다com.datastax.driver.core 꾸러미.

행동 양식

S. 아니. 방법 및 설명
1

void close()

이 메서드는 현재 세션 인스턴스를 닫는 데 사용됩니다.

2

ResultSet execute(Statement statement)

이 메서드는 쿼리를 실행하는 데 사용됩니다. 문 개체가 필요합니다.

3

ResultSet execute(String query)

이 메서드는 쿼리를 실행하는 데 사용됩니다. String 개체 형식의 쿼리가 필요합니다.

4

PreparedStatement prepare(RegularStatement statement)

이 방법은 제공된 쿼리를 준비합니다. 쿼리는 성명서 형식으로 제공됩니다.

5

PreparedStatement prepare(String query)

이 방법은 제공된 쿼리를 준비합니다. 쿼리는 문자열 형식으로 제공됩니다.

이 장에서는 Cassandra 쿼리 언어 셸을 소개하고 해당 명령을 사용하는 방법을 설명합니다.

기본적으로 Cassandra는 프롬프트 Cassandra 쿼리 언어 셸을 제공합니다. (cqlsh)이를 통해 사용자가 통신 할 수 있습니다. 이 셸을 사용하여 다음을 실행할 수 있습니다.Cassandra Query Language (CQL).

cqlsh를 사용하여 다음을 수행 할 수 있습니다.

  • 스키마 정의,
  • 데이터 삽입 및
  • 쿼리를 실행합니다.

cqlsh 시작

명령을 사용하여 cqlsh를 시작하십시오. cqlsh아래 그림과 같이. Cassandra cqlsh 프롬프트를 출력으로 제공합니다.

[hadoop@linux bin]$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>

Cqlsh− 위에서 설명한대로이 명령은 cqlsh 프롬프트를 시작하는 데 사용됩니다. 또한 몇 가지 더 많은 옵션도 지원합니다. 다음 표는 모든 옵션을 설명합니다.cqlsh 그리고 그들의 사용법.

옵션 용법
cqlsh --help 옵션에 대한 도움말 항목을 표시합니다. cqlsh 명령.
cqlsh-버전 사용중인 cqlsh의 버전을 제공합니다.
cqlsh-색상 컬러 출력을 사용하도록 셸에 지시합니다.
cqlsh --debug 추가 디버깅 정보를 표시합니다.

cqlsh-실행

cql_statement

셸이 CQL 명령을 수락하고 실행하도록 지시합니다.
cqlsh-파일 = “file name” 이 옵션을 사용하면 Cassandra는 주어진 파일에서 명령을 실행하고 종료합니다.
cqlsh-색상 없음 Cassandra가 컬러 출력을 사용하지 않도록 지시합니다.
cqlsh -u “user name” 이 옵션을 사용하여 사용자를 인증 할 수 있습니다. 기본 사용자 이름은 cassandra입니다.
cqlsh-p “pass word” 이 옵션을 사용하면 암호로 사용자를 인증 할 수 있습니다. 기본 암호는 cassandra입니다.

Cqlsh 명령

Cqlsh에는 사용자가 상호 작용할 수있는 몇 가지 명령이 있습니다. 명령은 다음과 같습니다.

문서화 된 쉘 명령

다음은 Cqlsh 문서화 된 쉘 명령입니다. 도움말 항목 표시, cqlsh 종료, 설명 등과 같은 작업을 수행하는 데 사용되는 명령입니다.

  • HELP − 모든 cqlsh 명령에 대한 도움말 항목을 표시합니다.

  • CAPTURE − 명령의 출력을 캡처하여 파일에 추가합니다.

  • CONSISTENCY − 현재 일관성 수준을 표시하거나 새로운 일관성 수준을 설정합니다.

  • COPY − Cassandra와 데이터를 복사합니다.

  • DESCRIBE − Cassandra의 현재 클러스터와 그 개체를 설명합니다.

  • EXPAND − 질의의 출력을 수직으로 확장합니다.

  • EXIT −이 명령을 사용하여 cqlsh를 종료 할 수 있습니다.

  • PAGING − 쿼리 페이징을 활성화 또는 비활성화합니다.

  • SHOW − Cassandra 버전, 호스트 또는 데이터 유형 가정과 같은 현재 cqlsh 세션의 세부 정보를 표시합니다.

  • SOURCE − CQL 문이 포함 된 파일을 실행합니다.

  • TRACING − 요청 추적을 활성화 또는 비활성화합니다.

CQL 데이터 정의 명령

  • CREATE KEYSPACE − Cassandra에서 KeySpace를 생성합니다.

  • USE − 생성 된 KeySpace에 연결합니다.

  • ALTER KEYSPACE − KeySpace의 속성을 변경합니다.

  • DROP KEYSPACE − KeySpace 제거

  • CREATE TABLE − KeySpace에 테이블을 생성합니다.

  • ALTER TABLE − 테이블의 열 속성을 수정합니다.

  • DROP TABLE − 테이블을 제거합니다.

  • TRUNCATE − 테이블에서 모든 데이터를 제거합니다.

  • CREATE INDEX − 테이블의 단일 열에 새로운 인덱스를 정의합니다.

  • DROP INDEX − 명명 된 인덱스를 삭제합니다.

CQL 데이터 조작 명령

  • INSERT − 테이블의 행에 대한 열을 추가합니다.

  • UPDATE − 행의 열을 업데이트합니다.

  • DELETE − 테이블에서 데이터를 삭제합니다.

  • BATCH − 한 번에 여러 DML 문을 실행합니다.

CQL 조항

  • SELECT −이 절은 테이블에서 데이터를 읽습니다.

  • WHERE − 특정 데이터를 읽기 위해 select와 함께 where 절이 사용됩니다.

  • ORDERBY − orderby 절은 select와 함께 특정 데이터를 특정 순서로 읽는 데 사용됩니다.

Cassandra는 CQL 명령 외에도 문서화 된 셸 명령을 제공합니다. 다음은 Cassandra 문서화 된 쉘 명령입니다.

도움

HELP 명령은 모든 cqlsh 명령에 대한 개요 및 간략한 설명을 표시합니다. 다음은 help 명령의 사용법입니다.

cqlsh> help

Documented shell commands:
===========================
CAPTURE COPY DESCRIBE EXPAND PAGING SOURCE
CONSISTENCY DESC EXIT HELP SHOW TRACING.

CQL help topics:
================
ALTER           CREATE_TABLE_OPTIONS       SELECT
ALTER_ADD       CREATE_TABLE_TYPES         SELECT_COLUMNFAMILY
ALTER_ALTER     CREATE_USER                SELECT_EXPR
ALTER_DROP      DELETE                     SELECT_LIMIT
ALTER_RENAME    DELETE_COLUMNS             SELECT_TABLE

포착

이 명령은 명령의 출력을 캡처하여 파일에 추가합니다. 예를 들어, 출력을 다음 파일로 캡처하는 다음 코드를 살펴보십시오.Outputfile.

cqlsh> CAPTURE '/home/hadoop/CassandraProgs/Outputfile'

터미널에 명령을 입력하면 주어진 파일에 출력이 캡처됩니다. 다음은 사용 된 명령과 출력 파일의 스냅 샷입니다.

cqlsh:tutorialspoint> select * from emp;

다음 명령을 사용하여 캡처를 끌 수 있습니다.

cqlsh:tutorialspoint> capture off;

일관성

이 명령은 현재 일관성 수준을 표시하거나 새 일관성 수준을 설정합니다.

cqlsh:tutorialspoint> CONSISTENCY
Current consistency level is 1.

이 명령은 Cassandra에서 파일로 데이터를 복사합니다. 다음은 테이블을 복사하는 예입니다.emp 파일에 myfile.

cqlsh:tutorialspoint> COPY emp (emp_id, emp_city, emp_name, emp_phone,emp_sal) TO ‘myfile’;
4 rows exported in 0.034 seconds.

주어진 파일을 열고 확인하면 아래와 같이 복사 된 데이터를 찾을 수 있습니다.

설명

이 명령은 Cassandra의 현재 클러스터와 해당 개체를 설명합니다. 이 명령의 변형은 아래에 설명되어 있습니다.

Describe cluster −이 명령은 클러스터에 대한 정보를 제공합니다.

cqlsh:tutorialspoint> describe cluster;

Cluster: Test Cluster
Partitioner: Murmur3Partitioner

Range ownership:
                  -658380912249644557 [127.0.0.1]
                  -2833890865268921414 [127.0.0.1]
                  -6792159006375935836 [127.0.0.1]

Describe Keyspaces−이 명령은 클러스터의 모든 키 스페이스를 나열합니다. 다음은이 명령의 사용법입니다.

cqlsh:tutorialspoint> describe keyspaces;

system_traces system tp tutorialspoint

Describe tables−이 명령은 키 스페이스의 모든 테이블을 나열합니다. 다음은이 명령의 사용법입니다.

cqlsh:tutorialspoint> describe tables;
emp

Describe table−이 명령은 테이블에 대한 설명을 제공합니다. 다음은이 명령의 사용법입니다.

cqlsh:tutorialspoint> describe table emp;

CREATE TABLE tutorialspoint.emp (
   emp_id int PRIMARY KEY,
   emp_city text,
   emp_name text,
   emp_phone varint,
   emp_sal varint
) WITH bloom_filter_fp_chance = 0.01
   AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
   AND comment = ''
   AND compaction = {'min_threshold': '4', 'class':
   'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy',
   'max_threshold': '32'}
	
   AND compression = {'sstable_compression':
   'org.apache.cassandra.io.compress.LZ4Compressor'}
	
   AND dclocal_read_repair_chance = 0.1
   AND default_time_to_live = 0
   AND gc_grace_seconds = 864000
   AND max_index_interval = 2048
   AND memtable_flush_period_in_ms = 0
   AND min_index_interval = 128
   AND read_repair_chance = 0.0
   AND speculative_retry = '99.0PERCENTILE';
CREATE INDEX emp_emp_sal_idx ON tutorialspoint.emp (emp_sal);

유형 설명

이 명령은 사용자 정의 데이터 유형을 설명하는 데 사용됩니다. 다음은이 명령의 사용법입니다.

cqlsh:tutorialspoint> describe type card_details;

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
);

유형 설명

이 명령은 모든 사용자 정의 데이터 유형을 나열합니다. 다음은이 명령의 사용법입니다. 두 가지 사용자 정의 데이터 유형이 있다고 가정합니다.cardcard_details.

cqlsh:tutorialspoint> DESCRIBE TYPES;

card_details card

넓히다

이 명령은 출력을 확장하는 데 사용됩니다. 이 명령을 사용하기 전에 확장 명령을 켜야합니다. 다음은이 명령의 사용법입니다.

cqlsh:tutorialspoint> expand on;
cqlsh:tutorialspoint> select * from emp;

@ Row 1
-----------+------------
    emp_id | 1
  emp_city | Hyderabad
  emp_name | ram
 emp_phone | 9848022338
   emp_sal | 50000
  
@ Row 2
-----------+------------
    emp_id | 2
  emp_city | Delhi
  emp_name | robin
 emp_phone | 9848022339
   emp_sal | 50000
  
@ Row 3
-----------+------------
    emp_id | 4
  emp_city | Pune
  emp_name | rajeev
 emp_phone | 9848022331
   emp_sal | 30000
  
@ Row 4
-----------+------------
    emp_id | 3
  emp_city | Chennai
  emp_name | rahman
 emp_phone | 9848022330
   emp_sal | 50000
(4 rows)

Note − 다음 명령을 사용하여 확장 옵션을 끌 수 있습니다.

cqlsh:tutorialspoint> expand off;
Disabled Expanded output.

출구

이 명령은 cql 쉘을 종료하는 데 사용됩니다.

보여 주다

이 명령은 Cassandra 버전, 호스트 또는 데이터 유형 가정과 같은 현재 cqlsh 세션의 세부 사항을 표시합니다. 다음은이 명령의 사용법입니다.

cqlsh:tutorialspoint> show host;
Connected to Test Cluster at 127.0.0.1:9042.

cqlsh:tutorialspoint> show version;
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]

출처

이 명령을 사용하여 파일에서 명령을 실행할 수 있습니다. 입력 파일이 다음과 같다고 가정합니다.

그런 다음 아래와 같이 명령이 포함 된 파일을 실행할 수 있습니다.

cqlsh:tutorialspoint> source '/home/hadoop/CassandraProgs/inputfile';

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | Delhi     |   robin  | 9848022339 | 50000
      3 | Pune      |   rajeev | 9848022331 | 30000
      4 | Chennai   |   rahman | 9848022330 | 50000
(4 rows)

Cqlsh를 사용하여 키 스페이스 생성

Cassandra의 키 스페이스는 노드에서 데이터 복제를 정의하는 네임 스페이스입니다. 클러스터는 노드 당 하나의 키 스페이스를 포함합니다. 다음은 문을 사용하여 키 스페이스를 만드는 구문입니다.CREATE KEYSPACE.

통사론

CREATE KEYSPACE <identifier> WITH <properties>

CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of   replicas’};

CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’}

AND durable_writes = ‘Boolean value’;

CREATE KEYSPACE 문에는 두 가지 속성이 있습니다. replication durable_writes.

복제

복제 옵션은 Replica Placement strategy그리고 원하는 복제본의 수. 다음 표에는 모든 복제본 배치 전략이 나열되어 있습니다.

전략 이름 기술
Simple Strategy' 클러스터에 대한 단순 복제 요소를 지정합니다.
Network Topology Strategy 이 옵션을 사용하면 각 데이터 센터의 복제 요소를 독립적으로 설정할 수 있습니다.
Old Network Topology Strategy 이것은 레거시 복제 전략입니다.

이 옵션을 사용하면 Cassandra에게 commitlog현재 KeySpace에 대한 업데이트. 이 옵션은 필수가 아니며 기본적으로 true로 설정됩니다.

다음은 KeySpace를 생성하는 예입니다.

  • 여기서 우리는 TutorialsPoint.

  • 우리는 첫 번째 복제 배치 전략을 사용하고 있습니다. Simple Strategy.

  • 그리고 우리는 복제 요소를 선택하여 1 replica.

cqlsh.> CREATE KEYSPACE tutorialspoint
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

확인

명령을 사용하여 테이블이 생성되었는지 여부를 확인할 수 있습니다. Describe. 키 스페이스에이 명령을 사용하면 아래와 같이 생성 된 모든 키 스페이스가 표시됩니다.

cqlsh> DESCRIBE keyspaces;

tutorialspoint system system_traces

여기에서 새로 생성 된 KeySpace를 관찰 할 수 있습니다. tutorialspoint.

Durable_writes

기본적으로 테이블의 duration_writes 속성은 다음과 같이 설정됩니다. true,그러나 false로 설정할 수 있습니다. 이 속성을 다음으로 설정할 수 없습니다.simplex strategy.

다음은 내구성 쓰기 속성의 사용을 보여주는 예입니다.

cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;

확인

System Keyspace를 쿼리하여 test KeySpace의 Durable_writes 속성이 false로 설정되었는지 확인할 수 있습니다. 이 쿼리는 속성과 함께 모든 KeySpaces를 제공합니다.

cqlsh> SELECT * FROM system_schema.keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------

           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "2"}

(4 rows)

여기서 Test KeySpace의 Durable_writes 속성이 false로 설정되었음을 확인할 수 있습니다.

키 스페이스 사용

키워드를 사용하여 생성 된 KeySpace를 사용할 수 있습니다. USE. 구문은 다음과 같습니다.

Syntax:USE <identifier>

다음 예에서는 KeySpace를 사용합니다. tutorialspoint.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>

Java API를 사용하여 키 스페이스 생성

다음을 사용하여 키 스페이스를 생성 할 수 있습니다. execute() 의 방법 Session수업. Java API를 사용하여 키 스페이스를 생성하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

우선, 인스턴스를 만듭니다. Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object

Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object

Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드로 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

인스턴스 만들기 Session 개체를 사용하여 connect() 의 방법 Cluster 아래와 같이 클래스.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ” );

3 단계 : 쿼리 실행

실행할 수 있습니다 CQL 사용하는 쿼리 execute() 의 방법 Session수업. 쿼리를 문자열 형식으로 전달하거나Statement 클래스 개체에 execute()방법. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

이 예에서는 다음과 같은 KeySpace를 생성합니다. tp. 첫 번째 복제본 배치 전략 (예 : Simple Strategy)을 사용하고 있으며 복제본 1 개에 대한 복제 요소를 선택합니다.

쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

String query = "CREATE KEYSPACE tp WITH replication "
   + "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);

4 단계 : KeySpace 사용

아래와 같이 execute () 메서드를 사용하여 생성 된 KeySpace를 사용할 수 있습니다.

execute(“ USE tp ” );

다음은 Java API를 사용하여 Cassandra에서 키 스페이스를 만들고 사용하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_KeySpace {

   public static void main(String args[]){

      //Query
      String query = "CREATE KEYSPACE tp WITH replication "
         + "= {'class':'SimpleStrategy', 'replication_factor':1};";
                    
      //creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect();
     
      //Executing the query
      session.execute(query);
     
      //using the KeySpace
      session.execute("USE tp");
      System.out.println("Keyspace created"); 
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Create_KeySpace.java
$java Create_KeySpace

정상적인 조건에서는 다음과 같은 출력이 생성됩니다.

Keyspace created

KeySpace 변경

ALTER KEYSPACE는 복제본 수 및 KeySpace의 duration_writes와 같은 속성을 변경하는 데 사용할 수 있습니다. 다음은이 명령의 구문입니다.

통사론

ALTER KEYSPACE <identifier> WITH <properties>

ALTER KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’};

의 속성 ALTER KEYSPACECREATE KEYSPACE와 동일합니다. 두 가지 속성이 있습니다.replicationdurable_writes.

복제

복제 옵션은 복제본 배치 전략과 원하는 복제본 수를 지정합니다.

Durable_writes

이 옵션을 사용하면 Cassandra에 현재 KeySpace의 업데이트에 commitlog를 사용할지 여부를 지시 할 수 있습니다. 이 옵션은 필수가 아니며 기본적으로 true로 설정됩니다.

다음은 KeySpace를 변경하는 예입니다.

  • 여기서 우리는 TutorialsPoint.

  • 복제 계수를 1에서 3으로 변경합니다.

cqlsh.> ALTER KEYSPACE tutorialspoint
WITH replication = {'class':'NetworkTopologyStrategy', 'replication_factor' : 3};

Durable_writes 변경

KeySpace의 Durable_writes 속성을 변경할 수도 있습니다. 아래에 주어진 것은 Durable_writes 속성입니다.test KeySpace.

SELECT * FROM system_schema.keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}
(4 rows)

ALTER KEYSPACE test
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3}
AND DURABLE_WRITES = true;

다시 한 번 KeySpaces의 속성을 확인하면 다음과 같은 출력이 생성됩니다.

SELECT * FROM system_schema.keyspaces;
  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
           test |           True | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}

(4 rows)

Java API를 사용하여 키 스페이스 변경

다음을 사용하여 키 스페이스를 변경할 수 있습니다. execute() 의 방법 Session수업. Java API를 사용하여 키 스페이스를 변경하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

우선, 인스턴스를 만듭니다. Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster

Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

인스턴스 만들기 Session 개체를 사용하여 connect() 의 방법 Cluster아래와 같이 클래스.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ” );

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식으로 전달하거나Statement클래스 객체를 execute () 메서드에 추가합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

이 예에서

  • 이름이 지정된 키 스페이스를 변경합니다. tp. 복제 옵션을 단순 전략에서 네트워크 토폴로지 전략으로 변경하고 있습니다.

  • 우리는 durable_writes 거짓으로

쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

//Query
String query = "ALTER KEYSPACE tp WITH replication " + "=   {'class':'NetworkTopologyStrategy', 'datacenter1':3}" +" AND DURABLE_WRITES = false;";
session.execute(query);

다음은 Java API를 사용하여 Cassandra에서 키 스페이스를 만들고 사용하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Alter_KeySpace {
   public static void main(String args[]){

      //Query
      String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}"
         + "AND DURABLE_WRITES = false;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect();
 
      //Executing the query
      session.execute(query);
 
      System.out.println("Keyspace altered");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Alter_KeySpace.java
$java Alter_KeySpace

정상적인 조건에서 다음과 같은 출력을 생성합니다.

Keyspace Altered

키 스페이스 삭제

다음 명령을 사용하여 KeySpace를 삭제할 수 있습니다. DROP KEYSPACE. 다음은 KeySpace를 삭제하는 구문입니다.

통사론

DROP KEYSPACE <identifier>

DROP KEYSPACE “KeySpace name”

다음 코드는 키 스페이스를 삭제합니다. tutorialspoint.

cqlsh> DROP KEYSPACE tutorialspoint;

확인

명령을 사용하여 키 스페이스를 확인하십시오. Describe 아래 그림과 같이 테이블이 삭제되었는지 확인합니다.

cqlsh> DESCRIBE keyspaces;

system system_traces

keyspace tutorialspoint를 삭제 했으므로 keyspaces 목록에서 찾을 수 없습니다.

Java API를 사용하여 키 스페이스 삭제

Session 클래스의 execute () 메소드를 사용하여 키 스페이스를 생성 할 수 있습니다. Java API를 사용하여 키 스페이스를 삭제하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

우선, 인스턴스를 만듭니다. Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object 
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name”);

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메소드에 문자열 형식으로 전달하는 것은 무엇이든 cqlsh에서 실행됩니다.

다음 예에서는 이름이 지정된 키 스페이스를 삭제합니다. tp. 쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

String query = "DROP KEYSPACE tp; ";

session.execute(query);

다음은 Java API를 사용하여 Cassandra에서 키 스페이스를 만들고 사용하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Drop_KeySpace {

   public static void main(String args[]){

      //Query
      String query = "Drop KEYSPACE tp";

      //creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect();
    
      //Executing the query
      session.execute(query);
      System.out.println("Keyspace deleted");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Delete_KeySpace.java
$java Delete_KeySpace

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Keyspace deleted

테이블 생성

명령을 사용하여 테이블을 만들 수 있습니다. CREATE TABLE. 아래는 테이블 생성 구문입니다.

통사론

CREATE (TABLE | COLUMNFAMILY) <tablename>
('<column-definition>' , '<column-definition>')
(WITH <option> AND <option>)

컬럼 정의

아래와 같이 열을 정의 할 수 있습니다.

column name1 data type,
column name2 data type,

example:

age int,
name text

기본 키

기본 키는 행을 고유하게 식별하는 데 사용되는 열입니다. 따라서 테이블을 생성하는 동안 기본 키를 정의해야합니다. 기본 키는 테이블의 하나 이상의 열로 구성됩니다. 아래와 같이 테이블의 기본 키를 정의 할 수 있습니다.

CREATE TABLE tablename(
   column1 name datatype PRIMARYKEY,
   column2 name data type,
   column3 name data type.
   )

or

CREATE TABLE tablename(
   column1 name datatype PRIMARYKEY,
   column2 name data type,
   column3 name data type,
   PRIMARY KEY (column1)
   )

다음은 cqlsh를 사용하여 Cassandra에서 테이블을 생성하는 예입니다. 여기 우리는-

  • 키 스페이스 튜토리얼 포인트 사용

  • 라는 테이블 만들기 emp

직원 이름, ID, 도시, 급여 및 전화 번호와 같은 세부 정보가 있습니다. 직원 ID는 기본 키입니다.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>; CREATE TABLE emp(
   emp_id int PRIMARY KEY,
   emp_name text,
   emp_city text,
   emp_sal varint,
   emp_phone varint
   );

확인

select 문은 스키마를 제공합니다. 아래와 같이 select 문을 사용하여 테이블을 확인합니다.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------

(0 rows)

여기에서 주어진 열로 생성 된 테이블을 관찰 할 수 있습니다. keyspace tutorialspoint를 삭제 했으므로 keyspaces 목록에서 찾을 수 없습니다.

Java API를 사용하여 테이블 생성

Session 클래스의 execute () 메소드를 사용하여 테이블을 생성 할 수 있습니다. 아래 단계에 따라 Java API를 사용하여 테이블을 만듭니다.

1 단계 : 클러스터 개체 생성

우선, Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

다음을 사용하여 Session 개체의 인스턴스를 만듭니다. connect() 의 방법 Cluster 아래와 같이 클래스.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ” );

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“ tp” );

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메소드에 문자열 형식으로 전달하는 것은 무엇이든 cqlsh에서 실행됩니다.

다음 예에서는 다음과 같은 테이블을 생성합니다. emp. 쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

//Query
String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
   + "emp_name text, "
   + "emp_city text, "
   + "emp_sal varint, "
   + "emp_phone varint );";
session.execute(query);

다음은 Java API를 사용하여 Cassandra에서 키 스페이스를 만들고 사용하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Table {

   public static void main(String args[]){

      //Query
      String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
         + "emp_name text, "
         + "emp_city text, "
         + "emp_sal varint, "
         + "emp_phone varint );";
		
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);
 
      System.out.println("Table created");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Create_Table.java
$java Create_Table

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Table created

테이블 변경

다음 명령을 사용하여 테이블을 변경할 수 있습니다. ALTER TABLE. 아래는 테이블 생성 구문입니다.

통사론

ALTER (TABLE | COLUMNFAMILY) <tablename> <instruction>

ALTER 명령을 사용하여 다음 작업을 수행 할 수 있습니다.

  • 열 추가

  • 열 삭제

컬럼 추가

ALTER 명령을 사용하여 테이블에 열을 추가 할 수 있습니다. 열을 추가하는 동안 열 이름이 기존 열 이름과 충돌하지 않고 테이블이 컴팩트 스토리지 옵션으로 정의되지 않았는지주의해야합니다. 다음은 테이블에 열을 추가하는 구문입니다.

ALTER TABLE table name
ADD  new column datatype;

Example

다음은 기존 테이블에 열을 추가하는 예입니다. 여기에 다음과 같은 열을 추가합니다.emp_email 이름이 지정된 테이블에 대한 텍스트 데이터 유형 emp.

cqlsh:tutorialspoint> ALTER TABLE emp
   ... ADD emp_email text;

Verification

SELECT 문을 사용하여 열이 추가되었는지 여부를 확인합니다. 여기에서 새로 추가 된 emp_email 열을 볼 수 있습니다.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_email | emp_name | emp_phone | emp_sal
--------+----------+-----------+----------+-----------+---------

컬럼 삭제

ALTER 명령을 사용하여 테이블에서 열을 삭제할 수 있습니다. 테이블에서 컬럼을 삭제하기 전에 테이블이 컴팩트 스토리지 옵션으로 정의되지 않았는지 확인하십시오. 다음은 ALTER 명령을 사용하여 테이블에서 열을 삭제하는 구문입니다.

ALTER table name
DROP column name;

Example

다음은 테이블에서 열을 삭제하는 예입니다. 여기에서 이름이 지정된 열을 삭제합니다.emp_email.

cqlsh:tutorialspoint> ALTER TABLE emp DROP emp_email;

Verification

열이 삭제되었는지 확인합니다. select 아래에 표시된대로.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------
(0 rows)

이후 emp_email 열이 삭제되어 더 이상 찾을 수 없습니다.

Java API를 사용하여 테이블 변경

Session 클래스의 execute () 메소드를 사용하여 테이블을 생성 할 수 있습니다. Java API를 사용하여 테이블을 변경하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

우선, 인스턴스를 만듭니다. Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ” );
Session session = cluster.connect(“ tp” );

여기에서는 tp라는 KeySpace를 사용합니다. 따라서 아래와 같이 세션 개체를 생성합니다.

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

다음 예에서는 다음과 같은 테이블에 열을 추가합니다. emp. 이렇게하려면 쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

//Query
String query1 = "ALTER TABLE emp ADD emp_email text";
session.execute(query);

다음은 기존 테이블에 열을 추가하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Add_column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp ADD emp_email text";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
     
      //Creating Session object
      Session session = cluster.connect("tp");
    
      //Executing the query
      session.execute(query);
  
      System.out.println("Column added");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Add_Column.java
$java Add_Column

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Column added

열 삭제

다음은 기존 테이블에서 열을 삭제하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Delete_Column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp DROP emp_email;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //executing the query
      session.execute(query);
    
      System.out.println("Column deleted");
   }
 }

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Delete_Column.java
$java Delete_Column

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Column deleted

테이블 삭제

다음 명령을 사용하여 테이블을 삭제할 수 있습니다. Drop Table. 구문은 다음과 같습니다.

통사론

DROP TABLE <tablename>

다음 코드는 KeySpace에서 기존 테이블을 삭제합니다.

cqlsh:tutorialspoint> DROP TABLE emp;

확인

Describe 명령을 사용하여 테이블이 삭제되었는지 여부를 확인합니다. emp 테이블이 삭제되었으므로 column family 목록에서 찾을 수 없습니다.

cqlsh:tutorialspoint> DESCRIBE COLUMNFAMILIES;
employee

Java API를 사용하여 테이블 삭제

Session 클래스의 execute () 메서드를 사용하여 테이블을 삭제할 수 있습니다. Java API를 사용하여 테이블을 삭제하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

우선, 인스턴스를 만듭니다. Cluster.builder 클래스 com.datastax.driver.core 아래 그림과 같이 패키지-

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“Your keyspace name”);

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“tp”);

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

다음 예에서는 다음과 같은 테이블을 삭제합니다. emp. 쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

// Query

String query = "DROP TABLE emp1;”;
session.execute(query);

다음은 Java API를 사용하여 Cassandra에서 테이블을 삭제하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
 
public class Drop_Table {

   public static void main(String args[]){

      //Query
      String query = "DROP TABLE emp1;";
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tp");
   
      //Executing the query
      session.execute(query);
    
      System.out.println("Table dropped");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Drop_Table.java
$java Drop_Table

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Table dropped

테이블 자르기

TRUNCATE 명령을 사용하여 테이블을자를 수 있습니다. 테이블을 자르면 테이블의 모든 행이 영구적으로 삭제됩니다. 다음은이 명령의 구문입니다.

통사론

TRUNCATE <tablename>

다음과 같은 테이블이 있다고 가정하겠습니다. student 다음 데이터로.

s_id s_name s_branch s_aggregate
1 그것 70
2 라만 EEE 75
로빈 기계화 72

테이블을 가져 오기 위해 select 문을 실행할 때 student, 다음 출력을 제공합니다.

cqlsh:tp> select * from student;

 s_id | s_aggregate | s_branch | s_name
------+-------------+----------+--------
    1 |          70 |       IT | ram
    2 |          75 |      EEE | rahman
    3 |          72 |     MECH | robbin

(3 rows)

이제 TRUNCATE 명령을 사용하여 테이블을 자릅니다.

cqlsh:tp> TRUNCATE student;

확인

다음을 실행하여 테이블이 잘 렸는지 확인하십시오. select성명서. 다음은 잘린 후 student 테이블의 select 문의 출력입니다.

cqlsh:tp> select * from student;

 s_id | s_aggregate | s_branch | s_name
------+-------------+----------+--------

(0 rows)

Java API를 사용하여 테이블 자르기

Session 클래스의 execute () 메서드를 사용하여 테이블을자를 수 있습니다. 아래 단계에 따라 테이블을 자릅니다.

1 단계 : 클러스터 개체 생성

우선, 인스턴스를 만듭니다. Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ” );
Session session = cluster.connect(“ tp” );

여기서는 tp라는 키 스페이스를 사용합니다. 따라서 아래와 같이 세션 개체를 생성합니다.

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

다음 예에서는 다음과 같은 테이블을 자릅니다. emp. 쿼리를 문자열 변수에 저장하고execute() 방법은 아래와 같습니다.

//Query
String query = "TRUNCATE emp;;”;
session.execute(query);

다음은 Java API를 사용하여 Cassandra에서 테이블을 자르는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Truncate_Table {

   public static void main(String args[]){
   
      //Query
      String query = "Truncate student;";
   
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect("tp");
   
      //Executing the query
      session.execute(query);
      System.out.println("Table truncated");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Truncate_Table.java
$java Truncate_Table

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Table truncated

Cqlsh를 사용하여 인덱스 생성

다음 명령을 사용하여 Cassandra에서 색인을 생성 할 수 있습니다. CREATE INDEX. 구문은 다음과 같습니다.

CREATE INDEX <identifier> ON <tablename>

다음은 열에 대한 인덱스를 만드는 예입니다. 여기서는 emp라는 테이블의 'emp_name'열에 대한 인덱스를 생성합니다.

cqlsh:tutorialspoint> CREATE INDEX name ON emp1 (emp_name);

Java API를 사용하여 색인 생성

Session 클래스의 execute () 메서드를 사용하여 테이블의 열에 대한 인덱스를 만들 수 있습니다. 아래 단계에 따라 테이블의 열에 대한 인덱스를 만듭니다.

1 단계 : 클러스터 개체 생성

우선, 인스턴스를 만듭니다. Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

다음의 connect () 메서드를 사용하여 Session 개체의 인스턴스를 만듭니다. Cluster 아래와 같이 클래스.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ” );

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“ tp” );

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

다음 예에서는 테이블 이름이 emp_name 인 열에 대한 인덱스를 생성합니다. emp. 쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

//Query
String query = "CREATE INDEX name ON emp1 (emp_name);";
session.execute(query);

다음은 Java API를 사용하여 Cassandra의 테이블에 열 인덱스를 생성하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Index {
 
   public static void main(String args[]){

      //Query
      String query = "CREATE INDEX name ON emp1 (emp_name);";
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
       
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);
      System.out.println("Index created");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Create_Index.java
$java Create_Index

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Index created

인덱스 삭제

다음 명령을 사용하여 색인을 삭제할 수 있습니다. DROP INDEX. 구문은 다음과 같습니다.

DROP INDEX <identifier>

다음은 테이블에서 열의 인덱스를 삭제하는 예입니다. 여기서 우리는 테이블 emp에서 열 이름의 인덱스를 삭제합니다.

cqlsh:tp> drop index name;

Java API를 사용하여 색인 삭제

Session 클래스의 execute () 메서드를 사용하여 테이블의 인덱스를 삭제할 수 있습니다. 테이블에서 인덱스를 삭제하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

인스턴스 만들기 Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder object. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ” );

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“ tp” );

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식으로 전달하거나Statement클래스 객체를 execute () 메서드에 추가합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

다음 예에서는 색인 "이름"을 삭제합니다. emp표. 쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

//Query
String query = "DROP INDEX user_name;";
session.execute(query);

다음은 Java API를 사용하여 Cassandra에서 색인을 삭제하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Drop_Index {

   public static void main(String args[]){
     
      //Query
      String query = "DROP INDEX user_name;";
 
      //Creating cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();.
 
      //Creating Session object
      Session session = cluster.connect("tp"); 
 
      //Executing the query
      session.execute(query);
      
      System.out.println("Index dropped");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Drop_index.java
$java Drop_index

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Index dropped

배치 문 사용

사용 BATCH,여러 수정 문 (삽입, 업데이트, 삭제)을 동시에 실행할 수 있습니다. 구문은 다음과 같습니다.

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH

다음 데이터를 가지고있는 emp라는 카산드라에 테이블이 있다고 가정합니다.

emp_id emp_name emp_city emp_phone emp_sal
1 하이데라바드 9848022338 50000
2 남자 이름 델리 9848022339 50000
라만 첸나이 9848022330 45000

이 예에서는 다음 작업을 수행합니다.

  • 다음 세부 사항 (4, rajeev, pune, 9848022331, 30000)이있는 새 행을 삽입하십시오.
  • 행 ID가 3 인 직원의 급여를 50000으로 업데이트합니다.
  • 행 ID가 2 인 직원의 도시를 삭제합니다.

위의 작업을 한 번에 수행하려면 다음 BATCH 명령을 사용하십시오.

cqlsh:tutorialspoint> BEGIN BATCH
... INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values(  4,'Pune','rajeev',9848022331, 30000);
... UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
... DELETE emp_city FROM emp WHERE emp_id = 2;
... APPLY BATCH;

확인

변경 한 후 SELECT 문을 사용하여 테이블을 확인합니다. 다음 출력을 생성해야합니다.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad | ram      | 9848022338 | 50000
      2 | null      | robin    | 9848022339 | 50000
      3 | Chennai   | rahman   | 9848022330 | 50000
      4 | Pune      | rajeev   | 9848022331 | 30000
    
(4 rows)

여기에서 수정 된 데이터가있는 테이블을 관찰 할 수 있습니다.

Java API를 사용한 배치 문

Session 클래스의 execute () 메서드를 사용하여 테이블에 배치 문을 프로그래밍 방식으로 작성할 수 있습니다. Java API를 사용하여 배치 문을 사용하여 여러 문을 실행하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

인스턴스 만들기 Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드를 사용하여 클러스터 객체를 만듭니다-

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ”);

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“tp”);

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

이 예에서는 다음 작업을 수행합니다.

  • 다음 세부 사항 (4, rajeev, pune, 9848022331, 30000)이있는 새 행을 삽입하십시오.
  • 행 ID가 3 인 직원의 급여를 50000으로 업데이트합니다.
  • 행 ID가 2 인 직원의 도시를 삭제합니다.

쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

String query1 = ” BEGIN BATCH INSERT INTO emp (emp_id, emp_city, emp_name,   emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
DELETE emp_city FROM emp WHERE emp_id = 2;
APPLY BATCH;”;

다음은 Java API를 사용하여 Cassandra의 테이블에서 동시에 여러 명령문을 실행하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Batch {

   public static void main(String args[]){
    
      //query
      String query =" BEGIN BATCH INSERT INTO emp (emp_id, emp_city,
         emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);"
    
         + "UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;"
         + "DELETE emp_city FROM emp WHERE emp_id = 2;"
         + "APPLY BATCH;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);

      System.out.println("Changes done");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Batch.java
$java Batch

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Changes done

테이블에 데이터 생성

다음 명령을 사용하여 테이블의 행 열에 데이터를 삽입 할 수 있습니다. INSERT. 다음은 테이블에 데이터를 생성하는 구문입니다.

INSERT INTO <tablename>
(<column1 name>, <column2 name>....)
VALUES (<value1>, <value2>....)
USING <option>

다음과 같은 테이블이 있다고 가정하겠습니다. emp 열 (emp_id, emp_name, emp_city, emp_phone, emp_sal)과 함께 다음 데이터를 emp 표.

emp_id emp_name emp_city emp_phone emp_sal
1 하이데라바드 9848022338 50000
2 남자 이름 하이데라바드 9848022339 40000
라만 첸나이 9848022330 45000

아래에 제공된 명령을 사용하여 필요한 데이터로 테이블을 채 웁니다.

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(3,'rahman', 'Chennai', 9848022330, 45000);

확인

데이터 삽입 후 SELECT 문을 사용하여 데이터 삽입 여부를 확인합니다. SELECT 문을 사용하여 emp 테이블을 확인하면 다음과 같은 출력이 제공됩니다.

cqlsh:tutorialspoint> SELECT * FROM emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 | Hyderabad |    robin | 9848022339 | 40000
      3 |   Chennai |   rahman | 9848022330 | 45000
 
(3 rows)

여기서 우리가 삽입 한 데이터로 테이블이 채워지는 것을 볼 수 있습니다.

Java API를 사용하여 데이터 생성

Session 클래스의 execute () 메서드를 사용하여 테이블에 데이터를 생성 할 수 있습니다. 아래 단계에 따라 Java API를 사용하여 테이블에 데이터를 만듭니다.

1 단계 : 클러스터 개체 생성

인스턴스 만들기 Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드는 클러스터 객체를 만드는 방법을 보여줍니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ” );

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“ tp” );

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식으로 전달하거나Statement클래스 객체를 execute () 메서드에 추가합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

다음 예에서는 다음과 같은 테이블에 데이터를 삽입합니다. emp. 쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

String query1 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);” ;
 
String query2 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);” ;
 
String query3 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(3,'rahman', 'Chennai', 9848022330, 45000);” ;
 
session.execute(query1);
session.execute(query2);
session.execute(query3);

다음은 Java API를 사용하여 Cassandra의 테이블에 데이터를 삽입하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Data {

   public static void main(String args[]){

      //queries
      String query1 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone,  emp_sal)"
		
         + " VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);" ;
                             
      String query2 = "INSERT INTO emp (emp_id, emp_name, emp_city,
         emp_phone, emp_sal)"
      
         + " VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);" ;
                             
      String query3 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)"
       
         + " VALUES(3,'rahman', 'Chennai', 9848022330, 45000);" ;

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
       
      //Executing the query
      session.execute(query1);
        
      session.execute(query2);
        
      session.execute(query3);
        
      System.out.println("Data created");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Create_Data.java
$java Create_Data

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Data created

테이블의 데이터 업데이트

UPDATE테이블의 데이터를 업데이트하는 데 사용되는 명령입니다. 다음 키워드는 테이블의 데이터를 업데이트하는 동안 사용됩니다-

  • Where −이 절은 업데이트 할 행을 선택하는 데 사용됩니다.

  • Set −이 키워드를 사용하여 값을 설정합니다.

  • Must − 기본 키를 구성하는 모든 열을 포함합니다.

행을 업데이트하는 동안 지정된 행을 사용할 수없는 경우 UPDATE는 새 행을 만듭니다. 다음은 UPDATE 명령의 구문입니다.

UPDATE <tablename>
SET <column name> = <new value>
<column name> = <value>....
WHERE <condition>

다음과 같은 테이블이 있다고 가정합니다. emp. 이 테이블은 특정 회사의 직원 세부 정보를 저장하며 다음과 같은 세부 정보가 있습니다.

emp_id emp_name emp_city emp_phone emp_sal
1 하이데라바드 9848022338 50000
2 남자 이름 하이데라바드 9848022339 40000
라만 첸나이 9848022330 45000

이제 robin의 emp_city를 Delhi로 업데이트하고 그의 급여를 50000으로 업데이트하겠습니다. 다음은 필요한 업데이트를 수행하는 쿼리입니다.

cqlsh:tutorialspoint> UPDATE emp SET emp_city='Delhi',emp_sal=50000
   WHERE emp_id=2;

확인

SELECT 문을 사용하여 데이터가 업데이트되었는지 여부를 확인합니다. SELECT 문을 사용하여 emp 테이블을 확인하면 다음과 같은 출력이 생성됩니다.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 45000
      
(3 rows)

여기에서 테이블 데이터가 업데이트 된 것을 볼 수 있습니다.

Java API를 사용하여 데이터 업데이트

Session 클래스의 execute () 메서드를 사용하여 테이블의 데이터를 업데이트 할 수 있습니다. Java API를 사용하여 테이블의 데이터를 업데이트하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

인스턴스 만들기 Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드를 사용하여 클러스터 개체를 만듭니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name”);

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“tp”);

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

다음 예에서는 emp 테이블을 업데이트합니다. 쿼리를 문자열 변수에 저장하고 아래와 같이 execute () 메서드에 전달해야합니다.

String query = “ UPDATE emp SET emp_city='Delhi',emp_sal=50000
WHERE emp_id = 2;” ;

다음은 Java API를 사용하여 테이블의 데이터를 업데이트하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Update_Data {
  
   public static void main(String args[]){
      
      //query
      String query = " UPDATE emp SET emp_city='Delhi',emp_sal=50000"
          
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
         
      //Creating Session object
      Session session = cluster.connect("tp");
         
      //Executing the query
      session.execute(query);

      System.out.println("Data updated");
   }
 }

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Update_Data.java
$java Update_Data

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Data updated

Select 절을 사용하여 데이터 읽기

SELECT 절은 Cassandra의 테이블에서 데이터를 읽는 데 사용됩니다. 이 절을 사용하면 전체 테이블, 단일 열 또는 특정 셀을 읽을 수 있습니다. 다음은 SELECT 절의 구문입니다.

SELECT FROM <tablename>

이름이 지정된 키 스페이스에 테이블이 있다고 가정합니다. emp 다음 세부 사항과 함께-

emp_id emp_name emp_city emp_phone emp_sal
1 하이데라바드 9848022338 50000
2 남자 이름 없는 9848022339 50000
라만 첸나이 9848022330 50000
4 Rajeev 푸네 9848022331 30000

다음 예제는 SELECT 절을 사용하여 전체 테이블을 읽는 방법을 보여줍니다. 여기에서 우리는emp.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

필수 열 읽기

다음 예는 테이블의 특정 열을 읽는 방법을 보여줍니다.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Where 절

WHERE 절을 사용하면 필요한 열에 제약 조건을 적용 할 수 있습니다. 구문은 다음과 같습니다.

SELECT FROM <table name> WHERE <condition>;

Note − WHERE 절은 기본 키의 일부이거나 보조 인덱스가있는 열에서만 사용할 수 있습니다.

다음 예에서는 급여가 50000 인 직원의 세부 정보를 읽고 있습니다. 먼저 secondary index를 emp_sal 열에 설정합니다.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Java API를 사용하여 데이터 읽기

Session 클래스의 execute () 메서드를 사용하여 테이블에서 데이터를 읽을 수 있습니다. Java API를 사용하여 배치 문을 사용하여 여러 문을 실행하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 만들기

인스턴스 만들기 Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드를 사용하여 클러스터 개체를 만듭니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“Your keyspace name”);

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“tp”);

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

이 예에서는 다음에서 데이터를 검색합니다. emp표. 쿼리를 문자열에 저장하고 아래와 같이 세션 클래스의 execute () 메서드에 전달합니다.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Session 클래스의 execute () 메서드를 사용하여 쿼리를 실행합니다.

4 단계 : ResultSet 개체 가져 오기

선택 쿼리는 결과를 다음 형식으로 반환합니다. ResultSet 따라서 개체에 결과를 저장합니다. RESULTSET 아래와 같이 클래스.

ResultSet result = session.execute( );

아래는 테이블에서 데이터를 읽는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Read_Data.java
$java Read_Data

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]

Select 절을 사용하여 데이터 읽기

SELECT 절은 Cassandra의 테이블에서 데이터를 읽는 데 사용됩니다. 이 절을 사용하면 전체 테이블, 단일 열 또는 특정 셀을 읽을 수 있습니다. 다음은 SELECT 절의 구문입니다.

SELECT FROM <tablename>

이름이 지정된 키 스페이스에 테이블이 있다고 가정합니다. emp 다음 세부 사항과 함께-

emp_id emp_name emp_city emp_phone emp_sal
1 하이데라바드 9848022338 50000
2 남자 이름 없는 9848022339 50000
라만 첸나이 9848022330 50000
4 Rajeev 푸네 9848022331 30000

다음 예제는 SELECT 절을 사용하여 전체 테이블을 읽는 방법을 보여줍니다. 여기에서 우리는emp.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

필수 열 읽기

다음 예는 테이블의 특정 열을 읽는 방법을 보여줍니다.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Where 절

WHERE 절을 사용하면 필요한 열에 제약 조건을 적용 할 수 있습니다. 구문은 다음과 같습니다.

SELECT FROM <table name> WHERE <condition>;

Note − WHERE 절은 기본 키의 일부이거나 보조 인덱스가있는 열에서만 사용할 수 있습니다.

다음 예에서는 급여가 50000 인 직원의 세부 정보를 읽고 있습니다. 먼저 secondary index를 emp_sal 열에 설정합니다.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Java API를 사용하여 데이터 읽기

Session 클래스의 execute () 메서드를 사용하여 테이블에서 데이터를 읽을 수 있습니다. Java API를 사용하여 배치 문을 사용하여 여러 문을 실행하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 만들기

인스턴스 만들기 Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드를 사용하여 클러스터 개체를 만듭니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect( );

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“Your keyspace name”);

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“tp”);

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

이 예에서는 다음에서 데이터를 검색합니다. emp표. 쿼리를 문자열에 저장하고 아래와 같이 세션 클래스의 execute () 메서드에 전달합니다.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Session 클래스의 execute () 메서드를 사용하여 쿼리를 실행합니다.

4 단계 : ResultSet 개체 가져 오기

선택 쿼리는 결과를 다음 형식으로 반환합니다. ResultSet 따라서 개체에 결과를 저장합니다. RESULTSET 아래와 같이 클래스.

ResultSet result = session.execute( );

아래는 테이블에서 데이터를 읽는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Read_Data.java
$java Read_Data

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]

테이블에서 데이터 삭제

다음 명령을 사용하여 테이블에서 데이터를 삭제할 수 있습니다. DELETE. 구문은 다음과 같습니다.

DELETE FROM <identifier> WHERE <condition>;

Cassandra에 다음과 같은 테이블이 있다고 가정하겠습니다. emp 다음 데이터를 가지고-

emp_id emp_name emp_city emp_phone emp_sal
1 하이데라바드 9848022338 50000
2 남자 이름 하이데라바드 9848022339 40000
라만 첸나이 9848022330 45000

다음 문은 마지막 행의 emp_sal 열을 삭제합니다-

cqlsh:tutorialspoint> DELETE emp_sal FROM emp WHERE emp_id=3;

확인

SELECT 문을 사용하여 데이터가 삭제되었는지 여부를 확인합니다. SELECT를 사용하여 emp 테이블을 확인하면 다음과 같은 출력이 생성됩니다.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | null
(3 rows)

Rahman의 급여를 삭제 했으므로 급여 대신 null 값이 표시됩니다.

전체 행 삭제

다음 명령은 테이블에서 전체 행을 삭제합니다.

cqlsh:tutorialspoint> DELETE FROM emp WHERE emp_id=3;

확인

SELECT 문을 사용하여 데이터가 삭제되었는지 여부를 확인합니다. SELECT를 사용하여 emp 테이블을 확인하면 다음과 같은 출력이 생성됩니다.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
 
(2 rows)

마지막 행을 삭제 했으므로 테이블에 두 행만 남았습니다.

Java API를 사용하여 데이터 삭제

Session 클래스의 execute () 메서드를 사용하여 테이블의 데이터를 삭제할 수 있습니다. Java API를 사용하여 테이블에서 데이터를 삭제하려면 아래 단계를 따르십시오.

1 단계 : 클러스터 개체 생성

인스턴스 만들기 Cluster.builder 클래스 com.datastax.driver.core 아래와 같이 패키지.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

다음을 사용하여 연락처 (노드의 IP 주소)를 추가합니다. addContactPoint() 의 방법 Cluster.Builder목적. 이 메서드는Cluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

새 빌더 개체를 사용하여 클러스터 개체를 만듭니다. 이를 위해 다음과 같은 메서드가 있습니다.build()Cluster.Builder수업. 다음 코드를 사용하여 클러스터 개체를 만듭니다.

//Building a cluster
Cluster cluster = builder.build();

아래와 같이 한 줄의 코드를 사용하여 클러스터 객체를 빌드 할 수 있습니다.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

2 단계 : 세션 개체 생성

아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.

Session session = cluster.connect();

이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.

Session session = cluster.connect(“ Your keyspace name ”);

여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.

Session session = cluster.connect(“tp”);

3 단계 : 쿼리 실행

Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 모든 것은cqlsh.

다음 예에서는 다음과 같은 테이블에서 데이터를 삭제합니다. emp. 쿼리를 문자열 변수에 저장하고 execute() 방법은 아래와 같습니다.

String query1 = ”DELETE FROM emp WHERE emp_id=3; ”;
session.execute(query);

다음은 Java API를 사용하여 Cassandra의 테이블에서 데이터를 삭제하는 완전한 프로그램입니다.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Delete_Data {

   public static void main(String args[]){
   
      //query
      String query = "DELETE FROM emp WHERE emp_id=3;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
       
      //Creating Session object
      Session session = cluster.connect("tp");
       
      //Executing the query
      session.execute(query);
       
      System.out.println("Data deleted");
   }
}

위의 프로그램을 클래스 이름 뒤에 .java로 저장하고 저장된 위치를 찾습니다. 아래와 같이 프로그램을 컴파일하고 실행합니다.

$javac Delete_Data.java
$java Delete_Data

정상적인 조건에서 다음과 같은 출력을 생성해야합니다.

Data deleted

CQL은 콜렉션 유형을 포함하여 다양한 내장 데이터 유형 세트를 제공합니다. 이러한 데이터 유형과 함께 사용자는 고유 한 사용자 정의 데이터 유형을 만들 수도 있습니다. 다음 표는 CQL에서 사용할 수있는 내장 데이터 유형 목록을 제공합니다.

데이터 형식 상수 기술
아스키 문자열 ASCII 문자열을 나타냅니다.
Bigint Bigint 64 비트 부호있는 long을 나타냅니다.
blob 얼룩 임의의 바이트를 나타냅니다.
부울 부울 참 또는 거짓을 나타냅니다.
counter 정수 카운터 열을 나타냅니다.
소수 정수, 부동 소수점 가변 정밀도 십진수를 나타냅니다.
더블 정수 64 비트 IEEE-754 부동 소수점을 나타냅니다.
흙손 정수, 부동 소수점 32 비트 IEEE-754 부동 소수점을 나타냅니다.
inet 문자열 IP 주소, IPv4 또는 IPv6를 나타냅니다.
int 정수 32 비트 부호있는 정수를 나타냅니다.
본문 문자열 UTF8로 인코딩 된 문자열을 나타냅니다.
timestamp 정수, 문자열 타임 스탬프를 나타냅니다.
timeuuid UUID 유형 1 UUID를 나타냅니다.
uuid UUID 유형 1 또는 유형 4를 나타냅니다.
UUID
varchar 문자열 uTF8 인코딩 된 문자열을 나타냅니다.
바 린트 정수 임의의 정밀도 정수를 나타냅니다.

컬렉션 유형

Cassandra Query Language는 컬렉션 데이터 유형도 제공합니다. 다음 표는 CQL에서 사용할 수있는 컬렉션 목록을 제공합니다.

수집 기술
명부 목록은 하나 이상의 정렬 된 요소의 모음입니다.
지도 맵은 키-값 쌍의 모음입니다.
세트 집합은 하나 이상의 요소 모음입니다.

사용자 정의 데이터 유형

Cqlsh는 사용자에게 자신의 데이터 유형을 작성하는 기능을 제공합니다. 다음은 사용자 정의 데이터 유형을 처리하는 동안 사용되는 명령입니다.

  • CREATE TYPE − 사용자 정의 데이터 유형을 생성합니다.

  • ALTER TYPE − 사용자 정의 데이터 유형을 수정합니다.

  • DROP TYPE − 사용자 정의 데이터 유형을 삭제합니다.

  • DESCRIBE TYPE − 사용자 정의 데이터 유형을 설명합니다.

  • DESCRIBE TYPES − 사용자 정의 데이터 유형을 설명합니다.

CQL은 콜렉션 데이터 유형을 사용하는 기능을 제공합니다. 이러한 컬렉션 유형을 사용하면 단일 변수에 여러 값을 저장할 수 있습니다. 이 장에서는 Cassandra에서 컬렉션을 사용하는 방법을 설명합니다.

명부

목록은 다음과 같은 경우에 사용됩니다.

  • 요소의 순서가 유지되어야합니다.
  • 값은 여러 번 저장됩니다.

목록에있는 요소의 색인을 사용하여 목록 데이터 유형의 값을 가져올 수 있습니다.

목록이있는 테이블 만들기

다음은 이름과 이메일이라는 두 개의 열이있는 샘플 테이블을 만드는 예입니다. 여러 이메일을 저장하기 위해 목록을 사용하고 있습니다.

cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);

목록에 데이터 삽입

목록의 요소에 데이터를 삽입하는 동안 아래와 같이 대괄호 [] 안에 쉼표로 구분 된 모든 값을 입력합니다.

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['[email protected]','[email protected]'])

목록 업데이트

다음은 테이블에서 목록 데이터 유형을 업데이트하는 예입니다. data. 여기에 다른 이메일을 목록에 추가합니다.

cqlsh:tutorialspoint> UPDATE data
... SET email = email +['[email protected]']
... where name = 'ramu';

확인

SELECT 문을 사용하여 테이블을 확인하면 다음과 같은 결과를 얻을 수 있습니다.

cqlsh:tutorialspoint> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['[email protected]', '[email protected]', '[email protected]']

(1 rows)

세트

세트는 요소 그룹을 저장하는 데 사용되는 데이터 유형입니다. 집합의 요소는 정렬 된 순서로 반환됩니다.

세트로 테이블 만들기

다음 예에서는 이름과 전화라는 두 개의 열이있는 샘플 테이블을 만듭니다. 여러 개의 전화 번호를 저장하기 위해 set을 사용합니다.

cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);

세트에 데이터 삽입

집합의 요소에 데이터를 삽입하는 동안 아래와 같이 중괄호 {} 안에 쉼표로 구분 된 모든 값을 입력합니다.

cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman',    {9848022338,9848022339});

세트 업데이트

다음 코드는 data2라는 테이블의 집합을 업데이트하는 방법을 보여줍니다. 여기에 다른 전화 번호를 세트에 추가합니다.

cqlsh:tutorialspoint> UPDATE data2
   ... SET phone = phone + {9848022330}
   ... where name = 'rahman';

확인

SELECT 문을 사용하여 테이블을 확인하면 다음과 같은 결과를 얻을 수 있습니다.

cqlsh:tutorialspoint> SELECT * FROM data2;

   name | phone
--------+--------------------------------------
 rahman | {9848022330, 9848022338, 9848022339}

(1 rows)

지도

맵은 요소의 키-값 쌍을 저장하는 데 사용되는 데이터 유형입니다.

지도로 테이블 만들기

다음 예는 이름과 주소라는 두 개의 열이있는 샘플 테이블을 만드는 방법을 보여줍니다. 여러 주소 값을 저장하기 위해 map을 사용하고 있습니다.

cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address
map<timestamp, text>);

지도에 데이터 삽입

지도의 요소에 데이터를 삽입하는 동안 모든 key : value 아래와 같이 중괄호 {} 안에 쉼표로 구분 된 쌍입니다.

cqlsh:tutorialspoint> INSERT INTO data3 (name, address)
   VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );

세트 업데이트

다음 코드는 data3이라는 테이블에서 맵 데이터 유형을 업데이트하는 방법을 보여줍니다. 여기서 우리는 핵심 사무실의 값을 변경합니다. 즉, robin이라는 사람의 사무실 주소를 변경합니다.

cqlsh:tutorialspoint> UPDATE data3
   ... SET address = address+{'office':'mumbai'}
   ... WHERE name = 'robin';

확인

SELECT 문을 사용하여 테이블을 확인하면 다음과 같은 결과를 얻을 수 있습니다.

cqlsh:tutorialspoint> select * from data3;

  name | address
-------+-------------------------------------------
 robin | {'home': 'hyderabad', 'office': 'mumbai'}

(1 rows)

CQL은 사용자 정의 데이터 유형을 만들고 사용하는 기능을 제공합니다. 여러 필드를 처리하는 데이터 유형을 만들 수 있습니다. 이 장에서는 사용자 정의 데이터 유형을 생성, 변경 및 삭제하는 방법에 대해 설명합니다.

사용자 정의 데이터 유형 생성

명령 CREATE TYPE사용자 정의 데이터 유형을 만드는 데 사용됩니다. 구문은 다음과 같습니다.

CREATE TYPE <keyspace name>. <data typename>
( variable1, variable2).

다음은 사용자 정의 데이터 유형을 생성하는 예입니다. 이 예에서 우리는card_details 다음 세부 사항을 포함하는 데이터 유형.

분야 명 데이터 형식
신용 카드 번호 num int
신용 카드 핀 int
신용 카드상의 이름 이름 본문
cvv cvv int
카드 소지자의 연락처 전화 세트
cqlsh:tutorialspoint> CREATE TYPE card_details (
   ... num int,
   ... pin int,
   ... name text,
   ... cvv int,
   ... phone set<int>
... );

Note − 사용자 정의 데이터 유형에 사용되는 이름은 예약 된 유형 이름과 일치하지 않아야합니다.

확인

사용 DESCRIBE 생성 된 유형이 생성되었는지 여부를 확인하는 명령입니다.

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>
   );

사용자 정의 데이터 유형 변경

ALTER TYPE− 명령은 기존 데이터 유형을 변경하는 데 사용됩니다. ALTER를 사용하여 새 필드를 추가하거나 기존 필드의 이름을 바꿀 수 있습니다.

유형에 필드 추가

다음 구문을 사용하여 기존 사용자 정의 데이터 유형에 새 필드를 추가합니다.

ALTER TYPE typename
ADD field_name field_type;

다음 코드는 새 필드를 Card_details데이터 형식. 여기에 이메일이라는 새 필드를 추가합니다.

cqlsh:tutorialspoint> ALTER TYPE card_details ADD email text;

확인

사용 DESCRIBE 명령을 사용하여 새 필드가 추가되었는지 여부를 확인합니다.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   );

유형에서 필드 이름 바꾸기

다음 구문을 사용하여 기존 사용자 정의 데이터 유형의 이름을 바꿉니다.

ALTER TYPE typename
RENAME existing_name TO new_name;

다음 코드는 유형의 필드 이름을 변경합니다. 여기에서 필드 이메일의 이름을 mail로 변경합니다.

cqlsh:tutorialspoint> ALTER TYPE card_details RENAME email TO mail;

확인

사용 DESCRIBE 유형 이름이 변경되었는지 여부를 확인하는 명령입니다.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
   );

사용자 정의 데이터 유형 삭제

DROP TYPE사용자 정의 데이터 유형을 삭제하는 데 사용되는 명령입니다. 다음은 사용자 정의 데이터 유형을 삭제하는 예입니다.

삭제하기 전에 다음을 사용하여 모든 사용자 정의 데이터 유형 목록을 확인하십시오. DESCRIBE_TYPES 아래와 같이 명령.

cqlsh:tutorialspoint> DESCRIBE TYPES;
card_details card

두 가지 유형에서 이름이 지정된 유형을 삭제하십시오. card 아래 그림과 같이.

cqlsh:tutorialspoint> drop type card;

사용 DESCRIBE 명령을 사용하여 데이터 유형이 삭제되었는지 여부를 확인합니다.

cqlsh:tutorialspoint> describe types;

card_details