Cassandra - Hướng dẫn nhanh

Apache Cassandra là một cơ sở dữ liệu phân tán hiệu suất cao, có khả năng mở rộng cao, được thiết kế để xử lý lượng lớn dữ liệu trên nhiều máy chủ hàng hóa, mang lại tính khả dụng cao mà không có điểm lỗi nào. Nó là một loại cơ sở dữ liệu NoSQL. Đầu tiên chúng ta hãy hiểu cơ sở dữ liệu NoSQL làm gì.

NoSQLDatabase

Cơ sở dữ liệu NoSQL (đôi khi được gọi là Không chỉ SQL) là cơ sở dữ liệu cung cấp cơ chế lưu trữ và truy xuất dữ liệu khác với quan hệ bảng được sử dụng trong cơ sở dữ liệu quan hệ. Các cơ sở dữ liệu này không có giản đồ, hỗ trợ sao chép dễ dàng, có API đơn giản, cuối cùng nhất quán và có thể xử lý lượng lớn dữ liệu.

Mục tiêu chính của cơ sở dữ liệu NoSQL là có

  • sự đơn giản của thiết kế,
  • chia tỷ lệ ngang, và
  • kiểm soát tốt hơn đối với tính khả dụng.

Cơ sở dữ liệu NoSql sử dụng cấu trúc dữ liệu khác so với cơ sở dữ liệu quan hệ. Nó làm cho một số hoạt động nhanh hơn trong NoSQL. Tính phù hợp của một cơ sở dữ liệu NoSQL nhất định phụ thuộc vào vấn đề mà nó phải giải quyết.

Cơ sở dữ liệu quan hệ NoSQL vs.

Bảng sau liệt kê các điểm phân biệt cơ sở dữ liệu quan hệ với cơ sở dữ liệu NoSQL.

Cơ sở dữ liệu quan hệ Cơ sở dữ liệu NoSql
Hỗ trợ ngôn ngữ truy vấn mạnh mẽ. Hỗ trợ ngôn ngữ truy vấn rất đơn giản.
Nó có một lược đồ cố định. Không có lược đồ cố định.
Tuân theo ACID (Tính nguyên tử, Tính nhất quán, Tính cô lập và Độ bền). Nó chỉ là "cuối cùng nhất quán".
Hỗ trợ giao dịch. Không hỗ trợ giao dịch.

Ngoài Cassandra, chúng tôi có các cơ sở dữ liệu NoSQL sau đây khá phổ biến:

  • Apache HBase- HBase là một cơ sở dữ liệu phân tán mã nguồn mở, không quan hệ, được mô phỏng theo BigTable của Google và được viết bằng Java. Nó được phát triển như một phần của dự án Apache Hadoop và chạy trên HDFS, cung cấp các khả năng giống như BigTable cho Hadoop.

  • MongoDB - MongoDB là một hệ thống cơ sở dữ liệu hướng tài liệu đa nền tảng, tránh sử dụng cấu trúc cơ sở dữ liệu quan hệ dựa trên bảng truyền thống mà ủng hộ các tài liệu dạng JSON với các lược đồ động giúp cho việc tích hợp dữ liệu trong một số loại ứng dụng dễ dàng và nhanh chóng hơn.

Apache Cassandra là gì?

Apache Cassandra là một hệ thống lưu trữ (cơ sở dữ liệu) mã nguồn mở, phân tán và phi tập trung / phân tán, để quản lý một lượng rất lớn dữ liệu có cấu trúc trải rộng trên toàn thế giới. Nó cung cấp dịch vụ có tính khả dụng cao mà không có điểm lỗi nào.

Dưới đây là một số điểm đáng chú ý của Apache Cassandra -

  • Nó có khả năng mở rộng, chịu lỗi và nhất quán.

  • Nó là một cơ sở dữ liệu hướng cột.

  • Thiết kế phân phối của nó dựa trên Dynamo của Amazon và mô hình dữ liệu của nó trên Bigtable của Google.

  • Được tạo ra tại Facebook, nó khác hẳn với các hệ thống quản lý cơ sở dữ liệu quan hệ.

  • Cassandra triển khai mô hình sao chép kiểu Dynamo mà không có điểm lỗi nào, nhưng bổ sung thêm mô hình dữ liệu “họ cột” mạnh mẽ hơn.

  • Cassandra đang được sử dụng bởi một số công ty lớn nhất như Facebook, Twitter, Cisco, Rackspace, ebay, Twitter, Netflix, v.v.

Đặc điểm của Cassandra

Cassandra đã trở nên quá phổ biến vì các tính năng kỹ thuật vượt trội của nó. Dưới đây là một số tính năng của Cassandra:

  • Elastic scalability- Cassandra có khả năng mở rộng cao; nó cho phép thêm nhiều phần cứng hơn để đáp ứng nhiều khách hàng hơn và nhiều dữ liệu hơn theo yêu cầu.

  • Always on architecture - Cassandra không có điểm lỗi duy nhất và nó liên tục có sẵn cho các ứng dụng quan trọng của doanh nghiệp không thể xảy ra lỗi.

  • Fast linear-scale performance- Cassandra có thể mở rộng tuyến tính, tức là, nó tăng thông lượng của bạn khi bạn tăng số lượng nút trong cụm. Do đó nó duy trì thời gian phản hồi nhanh chóng.

  • Flexible data storage- Cassandra đáp ứng tất cả các định dạng dữ liệu có thể có bao gồm: có cấu trúc, bán cấu trúc và không có cấu trúc. Nó có thể tự động điều chỉnh các thay đổi đối với cấu trúc dữ liệu của bạn theo nhu cầu của bạn.

  • Easy data distribution - Cassandra cung cấp sự linh hoạt để phân phối dữ liệu ở những nơi bạn cần bằng cách sao chép dữ liệu qua nhiều trung tâm dữ liệu.

  • Transaction support - Cassandra hỗ trợ các thuộc tính như Tính nguyên tử, Tính nhất quán, Tính cô lập và Độ bền (ACID).

  • Fast writes- Cassandra được thiết kế để chạy trên phần cứng hàng hóa giá rẻ. Nó thực hiện ghi cực nhanh và có thể lưu trữ hàng trăm terabyte dữ liệu mà không làm giảm hiệu quả đọc.

Lịch sử của Cassandra

  • Cassandra được phát triển tại Facebook để tìm kiếm hộp thư đến.
  • Nó được Facebook mở nguồn vào tháng 7 năm 2008.
  • Cassandra được nhận vào Vườn ươm Apache vào tháng 3 năm 2009.
  • Nó đã được thực hiện một dự án cấp cao nhất của Apache kể từ tháng 2 năm 2010.

Mục tiêu thiết kế của Cassandra là xử lý khối lượng công việc dữ liệu lớn trên nhiều nút mà không có bất kỳ điểm lỗi nào. Cassandra có hệ thống phân phối ngang hàng trên các nút của nó và dữ liệu được phân phối giữa tất cả các nút trong một cụm.

  • Tất cả các nút trong một cụm đóng vai trò như nhau. Mỗi nút là độc lập và đồng thời kết nối với các nút khác.

  • Mỗi nút trong một cụm có thể chấp nhận các yêu cầu đọc và ghi, bất kể dữ liệu thực sự nằm ở đâu trong cụm.

  • Khi một nút gặp sự cố, các yêu cầu đọc / ghi có thể được phục vụ từ các nút khác trong mạng.

Sao chép dữ liệu trong Cassandra

Trong Cassandra, một hoặc nhiều nút trong một cụm hoạt động như bản sao cho một phần dữ liệu nhất định. Nếu phát hiện thấy một số nút phản hồi với giá trị lỗi thời, Cassandra sẽ trả về giá trị gần đây nhất cho máy khách. Sau khi trả về giá trị gần đây nhất, Cassandra thực hiệnread repair trong nền để cập nhật các giá trị cũ.

Hình dưới đây cho thấy sơ đồ về cách Cassandra sử dụng sao chép dữ liệu giữa các nút trong một cụm để đảm bảo không có điểm lỗi nào.

Note - Cassandra sử dụng Gossip Protocol trong nền để cho phép các nút giao tiếp với nhau và phát hiện bất kỳ nút nào bị lỗi trong cụm.

Các thành phần của Cassandra

Các thành phần chính của Cassandra như sau:

  • Node - Là nơi lưu trữ dữ liệu.

  • Data center - Nó là một tập hợp các nút liên quan.

  • Cluster - Một cụm là một thành phần chứa một hoặc nhiều trung tâm dữ liệu.

  • Commit log- Nhật ký cam kết là một cơ chế khôi phục sự cố trong Cassandra. Mọi thao tác ghi đều được ghi vào nhật ký cam kết.

  • Mem-table- Bảng ghi nhớ là một cấu trúc dữ liệu thường trú trong bộ nhớ. Sau khi đăng nhập cam kết, dữ liệu sẽ được ghi vào bảng ghi nhớ. Đôi khi, đối với một họ cột đơn, sẽ có nhiều bảng ghi nhớ.

  • SSTable - Đây là một tệp đĩa mà dữ liệu được xóa khỏi bảng ghi nhớ khi nội dung của nó đạt đến một giá trị ngưỡng.

  • Bloom filter- Đây không phải là những thuật toán nhanh chóng, không xác định, để kiểm tra xem một phần tử có phải là thành viên của một tập hợp hay không. Nó là một loại bộ nhớ cache đặc biệt. Bộ lọc Bloom được truy cập sau mỗi truy vấn.

Ngôn ngữ truy vấn Cassandra

Người dùng có thể truy cập Cassandra thông qua các nút của nó bằng Ngôn ngữ truy vấn Cassandra (CQL). CQL xử lý cơ sở dữ liệu(Keyspace)như một vùng chứa các bảng. Lập trình viên sử dụngcqlsh: lời nhắc làm việc với CQL hoặc trình điều khiển ngôn ngữ ứng dụng riêng biệt.

Khách hàng tiếp cận bất kỳ nút nào cho các hoạt động đọc-ghi của họ. Nút đó (điều phối viên) đóng vai trò proxy giữa máy khách và các nút đang giữ dữ liệu.

Viết hoạt động

Mọi hoạt động ghi của các nút được ghi lại bởi commit logsđược viết trong các nút. Sau đó, dữ liệu sẽ được ghi lại và lưu trữ trongmem-table. Bất cứ khi nào bảng ghi nhớ đầy, dữ liệu sẽ được ghi vào SStabletập tin dữ liệu. Tất cả các lần ghi được tự động phân vùng và sao chép trong toàn bộ cụm. Cassandra định kỳ hợp nhất các SSTables, loại bỏ dữ liệu không cần thiết.

Đọc hoạt động

Trong các thao tác đọc, Cassandra nhận các giá trị từ bảng ghi nhớ và kiểm tra bộ lọc bloom để tìm SSTable thích hợp chứa dữ liệu cần thiết.

Mô hình dữ liệu của Cassandra khác đáng kể so với những gì chúng ta thường thấy trong RDBMS. Chương này cung cấp tổng quan về cách Cassandra lưu trữ dữ liệu của nó.

Cụm

Cơ sở dữ liệu Cassandra được phân phối trên một số máy hoạt động cùng nhau. Vùng chứa ngoài cùng được gọi là Cụm. Để xử lý lỗi, mọi nút đều chứa một bản sao và trong trường hợp bị lỗi, bản sao sẽ bị tính phí. Cassandra sắp xếp các nút trong một cụm, ở định dạng vòng và gán dữ liệu cho chúng.

Keyspace

Keyspace là vùng chứa ngoài cùng cho dữ liệu trong Cassandra. Các thuộc tính cơ bản của Keyspace trong Cassandra là:

  • Replication factor - Là số lượng máy trong cụm sẽ nhận được các bản sao của cùng một dữ liệu.

  • Replica placement strategy- Không có gì khác ngoài chiến lược đặt các bản sao vào võ đài. Chúng tôi có các chiến lược nhưsimple strategy (chiến lược nhận biết giá đỡ), old network topology strategy (chiến lược nhận biết giá đỡ) và network topology strategy (chiến lược chia sẻ trung tâm dữ liệu).

  • Column families- Keyspace là vùng chứa danh sách một hoặc nhiều họ cột. Đến lượt mình, họ cột là một vùng chứa tập hợp các hàng. Mỗi hàng chứa các cột có thứ tự. Họ cột đại diện cho cấu trúc dữ liệu của bạn. Mỗi keyspace có ít nhất một và thường là nhiều họ cột.

Cú pháp tạo Keyspace như sau:

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

Hình minh họa sau đây cho thấy một dạng xem giản đồ của Keyspace.

Họ cột

Họ cột là một vùng chứa cho một tập hợp các hàng có thứ tự. Mỗi hàng, đến lượt nó, là một tập hợp các cột có thứ tự. Bảng dưới đây liệt kê các điểm phân biệt họ cột với bảng cơ sở dữ liệu quan hệ.

Bảng quan hệ Cột Cassandra Gia đình
Một lược đồ trong mô hình quan hệ là cố định. Khi chúng ta xác định các cột nhất định cho bảng, trong khi chèn dữ liệu, trong mỗi hàng, tất cả các cột phải được điền ít nhất bằng giá trị null. Trong Cassandra, mặc dù họ cột được xác định, nhưng các cột thì không. Bạn có thể tự do thêm bất kỳ cột nào vào bất kỳ họ cột bất kỳ lúc nào.
Bảng quan hệ chỉ xác định các cột và người dùng điền vào bảng các giá trị. Trong Cassandra, một bảng chứa các cột hoặc có thể được định nghĩa là một họ siêu cột.

Họ cột Cassandra có các thuộc tính sau:

  • keys_cached - Nó thể hiện số lượng vị trí cần lưu trong bộ nhớ cache trên mỗi SSTable.

  • rows_cached - Nó đại diện cho số hàng mà toàn bộ nội dung sẽ được lưu trong bộ nhớ.

  • preload_row_cache - Nó chỉ định xem bạn có muốn điền trước bộ nhớ cache của hàng hay không.

Note − Không giống như các bảng quan hệ trong đó lược đồ của họ cột không cố định, Cassandra không bắt buộc các hàng riêng lẻ phải có tất cả các cột.

Hình dưới đây cho thấy một ví dụ về họ cột Cassandra.

Cột

Một cột là cấu trúc dữ liệu cơ bản của Cassandra với ba giá trị, đó là tên khóa hoặc cột, giá trị và dấu thời gian. Dưới đây là cấu trúc của một cột.

SuperColumn

Siêu cột là một cột đặc biệt, do đó, nó cũng là một cặp khóa-giá trị. Nhưng một siêu cột lưu trữ một bản đồ của các cột con.

Nói chung các họ cột được lưu trữ trên đĩa trong các tệp riêng lẻ. Do đó, để tối ưu hóa hiệu suất, điều quan trọng là giữ các cột mà bạn có khả năng truy vấn cùng nhau trong cùng một họ cột và một siêu cột có thể hữu ích ở đây. Dưới đây là cấu trúc của siêu cột.

Mô hình dữ liệu của Cassandra và RDBMS

Bảng sau liệt kê những điểm phân biệt mô hình dữ liệu của Cassandra với mô hình của RDBMS.

RDBMS Cassandra
RDBMS xử lý dữ liệu có cấu trúc. Cassandra xử lý dữ liệu phi cấu trúc.
Nó có một lược đồ cố định. Cassandra có một lược đồ linh hoạt.
Trong RDBMS, một bảng là một mảng của các mảng. (ROW x COLUMN) Trong Cassandra, một bảng là danh sách các "cặp khóa-giá trị lồng nhau". (ROW x COLUMN key x COLUMN value)
Cơ sở dữ liệu là vùng chứa ngoài cùng chứa dữ liệu tương ứng với một ứng dụng. Keyspace là vùng chứa ngoài cùng chứa dữ liệu tương ứng với một ứng dụng.
Các bảng là các thực thể của cơ sở dữ liệu. Các bảng hoặc họ cột là thực thể của một không gian khóa.
Hàng là một bản ghi riêng lẻ trong RDBMS. Row là một đơn vị sao chép trong Cassandra.
Cột đại diện cho các thuộc tính của một quan hệ. Cột là một đơn vị lưu trữ trong Cassandra.
RDBMS hỗ trợ các khái niệm về khóa ngoại, phép nối. Các mối quan hệ được biểu diễn bằng cách sử dụng các bộ sưu tập.

Cassandra có thể được truy cập bằng cqlsh cũng như các trình điều khiển của các ngôn ngữ khác nhau. Chương này giải thích cách thiết lập cả môi trường cqlsh và java để làm việc với Cassandra.

Cài đặt trước cài đặt

Trước khi cài đặt Cassandra trong môi trường Linux, chúng tôi yêu cầu thiết lập Linux bằng ssh(Vỏ an toàn). Làm theo các bước dưới đây để thiết lập môi trường Linux.

Tạo người dùng

Lúc đầu, bạn nên tạo một người dùng riêng cho Hadoop để tách hệ thống tệp Hadoop khỏi hệ thống tệp Unix. Làm theo các bước dưới đây để tạo người dùng.

  • Mở root bằng lệnh “su”.

  • Tạo người dùng từ tài khoản gốc bằng lệnh “useradd username”.

  • Bây giờ bạn có thể mở một tài khoản người dùng hiện có bằng lệnh “su username”.

Mở thiết bị đầu cuối Linux và nhập các lệnh sau để tạo người dùng.

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

Thiết lập SSH và tạo khóa

Cần thiết lập SSH để thực hiện các hoạt động khác nhau trên một cụm như khởi động, dừng và các hoạt động trình bao daemon phân tán. Để xác thực những người dùng khác nhau của Hadoop, cần phải cung cấp cặp khóa công khai / riêng tư cho người dùng Hadoop và chia sẻ nó với những người dùng khác nhau.

Các lệnh sau được sử dụng để tạo cặp giá trị khóa bằng SSH:

  • sao chép các khóa công khai biểu mẫu id_rsa.pub sang ủy quyền_key
  • và cung cấp cho chủ sở hữu,
  • quyền đọc và ghi vào tệp ủy quyền tương ứng.
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
  • Xác minh ssh:
ssh localhost

Cài đặt Java

Java là điều kiện tiên quyết chính cho Cassandra. Trước hết, bạn nên xác minh sự tồn tại của Java trong hệ thống của mình bằng lệnh sau:

$ java -version

Nếu mọi thứ hoạt động tốt, nó sẽ cung cấp cho bạn kết quả sau.

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)

Nếu bạn không có Java trong hệ thống của mình, hãy làm theo các bước dưới đây để cài đặt Java.

Bước 1

Tải xuống java (JDK <phiên bản mới nhất> - X64.tar.gz) từ liên kết sau :

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

Bước 2

Nói chung, bạn sẽ tìm thấy tệp java đã tải xuống trong thư mục Tải xuống. Xác minh nó và trích xuấtjdk-7u71-linux-x64.gz sử dụng các lệnh sau.

$ 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

Bước 3

Để cung cấp Java cho tất cả người dùng, bạn phải chuyển nó đến vị trí “/ usr / local /”. Mở root và nhập các lệnh sau.

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

Bước 4

Để thiết lập PATHJAVA_HOME biến, thêm các lệnh sau vào ~/.bashrc tập tin.

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

Bây giờ áp dụng tất cả các thay đổi vào hệ thống đang chạy hiện tại.

$ source ~/.bashrc

Bước 5

Sử dụng các lệnh sau để định cấu hình các lựa chọn thay thế 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

Bây giờ sử dụng java -version lệnh từ thiết bị đầu cuối như đã giải thích ở trên.

Đặt đường dẫn

Đặt đường dẫn của đường dẫn Cassandra trong “/.bashrc” như hình dưới đây.

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

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

Tải xuống Cassandra

Apache Cassandra có sẵn tại Liên kết Tải xuống Cassandra bằng lệnh sau.

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

Giải nén Cassandra bằng lệnh zxvf như hình bên dưới.

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

Tạo một thư mục mới có tên là cassandra và di chuyển nội dung của tệp đã tải xuống vào nó như hình dưới đây.

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

Định cấu hình Cassandra

Mở cassandra.yaml: tệp, sẽ có sẵn trong bin thư mục của Cassandra.

$ gedit cassandra.yaml

Note - Nếu bạn đã cài đặt Cassandra từ gói deb hoặc rpm, các tệp cấu hình sẽ nằm trong /etc/cassandra thư mục của Cassandra.

Lệnh trên mở ra cassandra.yamltập tin. Xác minh các cấu hình sau. Theo mặc định, các giá trị này sẽ được đặt thành các thư mục được chỉ định.

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

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

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

Đảm bảo rằng các thư mục này tồn tại và có thể được ghi vào, như hình dưới đây.

Tạo thư mục

Là siêu người dùng, hãy tạo hai thư mục /var/lib/cassandra/var./log/cassandra trong đó Cassandra ghi dữ liệu của nó.

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

Cấp quyền cho các thư mục

Cấp quyền đọc-ghi cho các thư mục mới tạo như hình dưới đây.

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

Khởi động Cassandra

Để khởi động Cassandra, hãy mở cửa sổ đầu cuối, điều hướng đến thư mục chính / home của Cassandra, nơi bạn đã giải nén Cassandra và chạy lệnh sau để khởi động máy chủ Cassandra của bạn.

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

Sử dụng tùy chọn –f yêu cầu Cassandra ở lại nền trước thay vì chạy như một quá trình nền. Nếu mọi thứ suôn sẻ, bạn có thể thấy máy chủ Cassandra khởi động.

Môi trường lập trình

Để thiết lập Cassandra theo chương trình, hãy tải xuống các tệp jar sau:

  • 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

Đặt chúng vào một thư mục riêng biệt. Ví dụ: chúng tôi đang tải các lọ này xuống một thư mục có tên“Cassandra_jars”.

Đặt classpath cho thư mục này trong “.bashrc”như hình bên dưới.

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

Môi trường Eclipse

Mở Eclipse và tạo một dự án mới có tên là Cassandra _Examples.

Nhấp chuột phải vào dự án, chọn Build Path→Configure Build Path như hình bên dưới.

Nó sẽ mở cửa sổ thuộc tính. Trong tab Thư viện, hãy chọnAdd External JARs. Điều hướng đến thư mục bạn đã lưu các tệp jar của mình. Chọn tất cả năm tệp jar và nhấp vào OK như hình dưới đây.

Trong Thư viện tham chiếu, bạn có thể thấy tất cả các lọ bắt buộc được thêm vào như hình dưới đây -

Maven phụ thuộc

Dưới đây là pom.xml để xây dựng dự án Cassandra bằng maven.

<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>

Chương này bao gồm tất cả các lớp quan trọng trong Cassandra.

Cụm

Lớp này là điểm đầu vào chính của tài xế. Nó thuộc vềcom.datastax.driver.core gói hàng.

Phương pháp

S. Không. Phương pháp và Mô tả
1

Session connect()

Nó tạo một phiên mới trên cụm hiện tại và khởi tạo nó.

2

void close()

Nó được sử dụng để đóng phiên bản cụm.

3

static Cluster.Builder builder()

Nó được sử dụng để tạo một cá thể Cluster.Builder mới.

Cluster.Builder

Lớp này được sử dụng để khởi tạo Cluster.Builder lớp học.

Phương pháp

S. Không Phương pháp và Mô tả
1

Cluster.Builder addContactPoint(String address)

Phương pháp này thêm một điểm liên lạc vào cụm.

2

Cluster build()

Phương pháp này xây dựng cụm với các điểm tiếp xúc đã cho.

Phiên họp

Giao diện này giữ các kết nối đến cụm Cassandra. Sử dụng giao diện này, bạn có thể thực thiCQLtruy vấn. Nó thuộc vềcom.datastax.driver.core gói hàng.

Phương pháp

S. Không. Phương pháp và Mô tả
1

void close()

Phương thức này được sử dụng để đóng phiên hiện tại.

2

ResultSet execute(Statement statement)

Phương thức này được sử dụng để thực hiện một truy vấn. Nó yêu cầu một đối tượng tuyên bố.

3

ResultSet execute(String query)

Phương thức này được sử dụng để thực hiện một truy vấn. Nó yêu cầu một truy vấn dưới dạng một đối tượng Chuỗi.

4

PreparedStatement prepare(RegularStatement statement)

Phương pháp này chuẩn bị cho truy vấn được cung cấp. Truy vấn sẽ được cung cấp dưới dạng Tuyên bố.

5

PreparedStatement prepare(String query)

Phương pháp này chuẩn bị cho truy vấn được cung cấp. Truy vấn sẽ được cung cấp dưới dạng một Chuỗi.

Chương này giới thiệu trình bao ngôn ngữ truy vấn Cassandra và giải thích cách sử dụng các lệnh của nó.

Theo mặc định, Cassandra cung cấp một trình bao ngôn ngữ truy vấn Cassandra nhanh chóng (cqlsh)cho phép người dùng giao tiếp với nó. Sử dụng shell này, bạn có thể thực thiCassandra Query Language (CQL).

Sử dụng cqlsh, bạn có thể

  • xác định một lược đồ,
  • chèn dữ liệu và
  • thực hiện một truy vấn.

Bắt đầu cqlsh

Bắt đầu cqlsh bằng lệnh cqlshnhư hình bên dưới. Nó đưa ra lời nhắc Cassandra cqlsh làm đầu ra.

[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- Như đã thảo luận ở trên, lệnh này được sử dụng để bắt đầu dấu nhắc cqlsh. Ngoài ra, nó cũng hỗ trợ một số tùy chọn khác. Bảng sau giải thích tất cả các tùy chọn củacqlsh và cách sử dụng của chúng.

Tùy chọn Sử dụng
cqlsh --help Hiển thị các chủ đề trợ giúp về các tùy chọn của cqlsh các lệnh.
cqlsh --version Cung cấp phiên bản cqlsh bạn đang sử dụng.
cqlsh - màu Hướng dẫn trình bao sử dụng đầu ra màu.
cqlsh --debug Hiển thị thông tin gỡ lỗi bổ sung.

cqlsh --execute

cql_statement

Hướng dẫn trình bao chấp nhận và thực hiện lệnh CQL.
cqlsh --file = “file name” Nếu bạn sử dụng tùy chọn này, Cassandra thực hiện lệnh trong tệp đã cho và thoát.
cqlsh - không có màu Chỉ đạo Cassandra không sử dụng đầu ra màu.
cqlsh -u “user name” Sử dụng tùy chọn này, bạn có thể xác thực người dùng. Tên người dùng mặc định là: cassandra.
cqlsh-p “pass word” Sử dụng tùy chọn này, bạn có thể xác thực người dùng bằng mật khẩu. Mật khẩu mặc định là: cassandra.

Lệnh Cqlsh

Cqlsh có một số lệnh cho phép người dùng tương tác với nó. Các lệnh được liệt kê bên dưới.

Các lệnh Shell được lập thành văn bản

Dưới đây là các lệnh shell được tài liệu hóa Cqlsh. Đây là các lệnh được sử dụng để thực hiện các tác vụ như hiển thị chủ đề trợ giúp, thoát khỏi cqlsh, mô tả, v.v.

  • HELP - Hiển thị các chủ đề trợ giúp cho tất cả các lệnh cqlsh.

  • CAPTURE - Chụp đầu ra của một lệnh và thêm nó vào một tệp.

  • CONSISTENCY - Hiển thị mức nhất quán hiện tại hoặc đặt mức nhất quán mới.

  • COPY - Sao chép dữ liệu đến và đi từ Cassandra.

  • DESCRIBE - Mô tả cụm Cassandra hiện tại và các đối tượng của nó.

  • EXPAND - Mở rộng đầu ra của một truy vấn theo chiều dọc.

  • EXIT - Sử dụng lệnh này, bạn có thể kết thúc cqlsh.

  • PAGING - Bật hoặc tắt phân trang truy vấn.

  • SHOW - Hiển thị chi tiết của phiên cqlsh hiện tại như phiên bản Cassandra, máy chủ lưu trữ hoặc các giả định về kiểu dữ liệu.

  • SOURCE - Thực thi một tệp có chứa các câu lệnh CQL.

  • TRACING - Bật hoặc tắt theo dõi yêu cầu.

Các lệnh định nghĩa dữ liệu CQL

  • CREATE KEYSPACE - Tạo KeySpace trong Cassandra.

  • USE - Kết nối với một KeySpace đã tạo.

  • ALTER KEYSPACE - Thay đổi các thuộc tính của KeySpace.

  • DROP KEYSPACE - Loại bỏ một KeySpace

  • CREATE TABLE - Tạo một bảng trong KeySpace.

  • ALTER TABLE - Sửa đổi thuộc tính cột của bảng.

  • DROP TABLE - Loại bỏ một bảng.

  • TRUNCATE - Xóa tất cả dữ liệu khỏi bảng.

  • CREATE INDEX - Xác định một chỉ mục mới trên một cột duy nhất của bảng.

  • DROP INDEX - Xóa một chỉ mục được đặt tên.

Các lệnh thao tác dữ liệu CQL

  • INSERT - Thêm cột cho một hàng trong bảng.

  • UPDATE - Cập nhật một cột của một hàng.

  • DELETE - Xóa dữ liệu khỏi bảng.

  • BATCH - Thực thi nhiều câu lệnh DML cùng một lúc.

Điều khoản CQL

  • SELECT - Mệnh đề này đọc dữ liệu từ một bảng

  • WHERE - Mệnh đề where được sử dụng cùng với select để đọc một dữ liệu cụ thể.

  • ORDERBY - Mệnh đề orderby được sử dụng cùng với select để đọc một dữ liệu cụ thể theo một thứ tự cụ thể.

Cassandra cung cấp các lệnh shell được lập thành văn bản ngoài các lệnh CQL. Dưới đây là các lệnh shell được tài liệu hóa của Cassandra.

Cứu giúp

Lệnh HELP hiển thị tóm tắt và mô tả ngắn gọn về tất cả các lệnh cqlsh. Dưới đây là cách sử dụng lệnh trợ giúp.

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

Chiếm lấy

Lệnh này nắm bắt đầu ra của một lệnh và thêm nó vào một tệp. Ví dụ: hãy xem đoạn mã sau ghi lại kết quả đầu ra cho một tệp có tênOutputfile.

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

Khi chúng ta gõ bất kỳ lệnh nào vào terminal, đầu ra sẽ được ghi lại bởi tệp đã cho. Dưới đây là lệnh được sử dụng và ảnh chụp nhanh của tệp đầu ra.

cqlsh:tutorialspoint> select * from emp;

Bạn có thể tắt tính năng chụp bằng lệnh sau.

cqlsh:tutorialspoint> capture off;

Tính nhất quán

Lệnh này hiển thị mức nhất quán hiện tại hoặc đặt một mức nhất quán mới.

cqlsh:tutorialspoint> CONSISTENCY
Current consistency level is 1.

Sao chép

Lệnh này sao chép dữ liệu đến và đi từ Cassandra vào một tệp. Dưới đây là một ví dụ để sao chép bảng có tênemp vào tập tin myfile.

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

Nếu bạn mở và xác minh tệp được cung cấp, bạn có thể tìm thấy dữ liệu được sao chép như hình dưới đây.

Diễn tả

Lệnh này mô tả cụm Cassandra hiện tại và các đối tượng của nó. Các biến thể của lệnh này được giải thích bên dưới.

Describe cluster - Lệnh này cung cấp thông tin về cụm.

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- Lệnh này liệt kê tất cả các không gian phím trong một cụm. Dưới đây là cách sử dụng lệnh này.

cqlsh:tutorialspoint> describe keyspaces;

system_traces system tp tutorialspoint

Describe tables- Lệnh này liệt kê tất cả các bảng trong một không gian phím. Dưới đây là cách sử dụng lệnh này.

cqlsh:tutorialspoint> describe tables;
emp

Describe table- Lệnh này cung cấp mô tả của một bảng. Dưới đây là cách sử dụng lệnh này.

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);

Mô tả Loại

Lệnh này được sử dụng để mô tả kiểu dữ liệu do người dùng xác định. Dưới đây là cách sử dụng lệnh này.

cqlsh:tutorialspoint> describe type card_details;

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

Mô tả các loại

Lệnh này liệt kê tất cả các kiểu dữ liệu do người dùng xác định. Dưới đây là cách sử dụng lệnh này. Giả sử có hai kiểu dữ liệu do người dùng xác định:cardcard_details.

cqlsh:tutorialspoint> DESCRIBE TYPES;

card_details card

Mở rộng

Lệnh này được sử dụng để mở rộng đầu ra. Trước khi sử dụng lệnh này, bạn phải bật lệnh mở rộng. Dưới đây là cách sử dụng lệnh này.

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 - Bạn có thể tắt tùy chọn mở rộng bằng lệnh sau.

cqlsh:tutorialspoint> expand off;
Disabled Expanded output.

Lối ra

Lệnh này được sử dụng để kết thúc trình bao cql.

Chỉ

Lệnh này hiển thị chi tiết của phiên cqlsh hiện tại như phiên bản Cassandra, máy chủ lưu trữ hoặc các giả định kiểu dữ liệu. Dưới đây là cách sử dụng lệnh này.

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]

Nguồn

Sử dụng lệnh này, bạn có thể thực hiện các lệnh trong một tệp. Giả sử tệp đầu vào của chúng ta như sau:

Sau đó, bạn có thể thực hiện tệp chứa các lệnh như hình dưới đây.

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)

Tạo Keyspace bằng Cqlsh

Không gian khóa trong Cassandra là một không gian tên xác định sao chép dữ liệu trên các nút. Một cụm chứa một keyspace cho mỗi nút. Dưới đây là cú pháp để tạo một không gian khóa bằng cách sử dụng câu lệnhCREATE KEYSPACE.

Cú pháp

CREATE KEYSPACE <identifier> WITH <properties>

I E

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’;

Câu lệnh CREATE KEYSPACE có hai thuộc tính: replication durable_writes.

Nhân rộng

Tùy chọn nhân rộng là chỉ định Replica Placement strategyvà số lượng bản sao mong muốn. Bảng sau liệt kê tất cả các chiến lược đặt bản sao.

Tên chiến lược Sự miêu tả
Simple Strategy' Chỉ định một yếu tố sao chép đơn giản cho cụm.
Network Topology Strategy Sử dụng tùy chọn này, bạn có thể đặt hệ số nhân bản cho từng trung tâm dữ liệu một cách độc lập.
Old Network Topology Strategy Đây là một chiến lược nhân rộng kế thừa.

Sử dụng tùy chọn này, bạn có thể hướng dẫn Cassandra xem có nên sử dụng commitlogđể cập nhật về KeySpace hiện tại. Tùy chọn này không bắt buộc và theo mặc định, nó được đặt thành true.

Thí dụ

Dưới đây là một ví dụ về cách tạo KeySpace.

  • Ở đây chúng tôi đang tạo một KeySpace có tên TutorialsPoint.

  • Chúng tôi đang sử dụng chiến lược đặt bản sao đầu tiên, tức là., Simple Strategy.

  • Và chúng tôi đang chọn yếu tố nhân rộng để 1 replica.

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

xác minh

Bạn có thể xác minh xem bảng có được tạo hay không bằng cách sử dụng lệnh Describe. Nếu bạn sử dụng lệnh này trên các không gian phím, nó sẽ hiển thị tất cả các không gian phím được tạo như hình dưới đây.

cqlsh> DESCRIBE keyspaces;

tutorialspoint system system_traces

Tại đây bạn có thể quan sát KeySpace mới được tạo tutorialspoint.

Durable_writes

Theo mặc định, thuộc tính bền_write của bảng được đặt thành true,tuy nhiên nó có thể được đặt thành false. Bạn không thể đặt thuộc tính này thànhsimplex strategy.

Thí dụ

Dưới đây là ví dụ minh họa việc sử dụng thuộc tính ghi bền.

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

xác minh

Bạn có thể xác minh xem thuộc tính bền_writes của KeySpace thử nghiệm có được đặt thành false hay không bằng cách truy vấn System Keyspace. Truy vấn này cung cấp cho bạn tất cả các KeySpaces cùng với các thuộc tính của chúng.

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)

Ở đây bạn có thể thấy thuộc tính bền_write của KeySpace thử nghiệm được đặt thành false.

Sử dụng Keyspace

Bạn có thể sử dụng KeySpace đã tạo bằng từ khóa USE. Cú pháp của nó như sau:

Syntax:USE <identifier>

Thí dụ

Trong ví dụ sau, chúng tôi đang sử dụng KeySpace tutorialspoint.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>

Tạo Keyspace bằng Java API

Bạn có thể tạo Keyspace bằng cách sử dụng execute() phương pháp của Sessionlớp học. Làm theo các bước dưới đây để tạo không gian khóa bằng Java API.

Bước 1: Tạo một đối tượng cụm

Trước hết, hãy tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

//Creating Cluster.Builder object

Cluster.Builder builder1 = Cluster.builder();

Thêm điểm liên hệ (địa chỉ IP của nút) bằng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

//Adding contact point to the Cluster.Builder object

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm trong một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một phiên bản của Session đối tượng sử dụng connect() phương pháp của Cluster lớp như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có một keyspace, bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên keyspace ở định dạng chuỗi vào phương thức này như hình dưới đây.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện CQL truy vấn bằng cách sử dụng execute() phương pháp của Sessionlớp học. Chuyển truy vấn ở định dạng chuỗi hoặc dưới dạngStatement đối tượng lớp cho execute()phương pháp. Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ này, chúng tôi đang tạo một KeySpace có tên tp. Chúng tôi đang sử dụng chiến lược đặt bản sao đầu tiên, tức là, Chiến lược đơn giản và chúng tôi đang chọn hệ số sao chép thành 1 bản sao.

Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

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

Bước 4: Sử dụng KeySpace

Bạn có thể sử dụng KeySpace đã tạo bằng phương thức execute () như hình dưới đây.

execute(“ USE tp ” );

Dưới đây là chương trình hoàn chỉnh để tạo và sử dụng keyspace trong Cassandra bằng cách sử dụng Java API.

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"); 
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Create_KeySpace.java
$java Create_KeySpace

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Keyspace created

Thay đổi KeySpace

ALTER KEYSPACE có thể được sử dụng để thay đổi các thuộc tính chẳng hạn như số lượng bản sao và các lớp bền của một KeySpace. Dưới đây là cú pháp của lệnh này.

Cú pháp

ALTER KEYSPACE <identifier> WITH <properties>

I E

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

Các thuộc tính của ALTER KEYSPACEgiống như CREATE KEYSPACE. Nó có hai thuộc tính:replicationdurable_writes.

Nhân rộng

Tùy chọn sao chép chỉ định chiến lược đặt bản sao và số lượng bản sao mong muốn.

Durable_writes

Sử dụng tùy chọn này, bạn có thể hướng dẫn Cassandra có sử dụng commitlog cho các bản cập nhật trên KeySpace hiện tại hay không. Tùy chọn này không bắt buộc và theo mặc định, nó được đặt thành true.

Thí dụ

Dưới đây là một ví dụ về việc thay đổi KeySpace.

  • Ở đây chúng tôi đang thay đổi KeySpace có tên TutorialsPoint.

  • Chúng tôi đang thay đổi hệ số sao chép từ 1 thành 3.

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

Thay đổi Durable_writes

Bạn cũng có thể thay đổi thuộc tính bền_writes của KeySpace. Dưới đây là thuộc tính bền_writes củatest 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;

Một lần nữa, nếu bạn xác minh các thuộc tính của KeySpaces, nó sẽ tạo ra kết quả sau.

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)

Thay đổi Keyspace bằng Java API

Bạn có thể thay đổi không gian phím bằng cách sử dụng execute() phương pháp của Sessionlớp học. Thực hiện theo các bước dưới đây để thay đổi không gian khóa bằng Java API

Bước 1: Tạo một đối tượng cụm

Trước hết, hãy tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

//Building a cluster

Cluster cluster = builder.build();

Bạn có thể xây dựng đối tượng cụm bằng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một phiên bản của Session đối tượng sử dụng connect() phương pháp của Clusterlớp như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có một keyspace, bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên keyspace ở định dạng chuỗi vào phương thức này như hình dưới đây.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Chuyển truy vấn ở định dạng chuỗi hoặc dưới dạngStatementđối tượng lớp của phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ này,

  • Chúng tôi đang thay đổi một không gian khóa có tên tp. Chúng tôi đang thay đổi tùy chọn sao chép từ Chiến lược đơn giản sang Chiến lược cấu trúc liên kết mạng.

  • Chúng tôi đang thay đổi durable_writes sai

Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

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

Dưới đây là chương trình hoàn chỉnh để tạo và sử dụng keyspace trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Alter_KeySpace.java
$java Alter_KeySpace

Trong điều kiện bình thường, nó tạo ra sản lượng sau:

Keyspace Altered

Bỏ Keyspace

Bạn có thể thả KeySpace bằng lệnh DROP KEYSPACE. Dưới đây là cú pháp để bỏ KeySpace.

Cú pháp

DROP KEYSPACE <identifier>

I E

DROP KEYSPACE “KeySpace name”

Thí dụ

Đoạn mã sau sẽ xóa keyspace tutorialspoint.

cqlsh> DROP KEYSPACE tutorialspoint;

xác minh

Xác minh các không gian phím bằng lệnh Describe và kiểm tra xem bảng có bị rớt như hình dưới đây không.

cqlsh> DESCRIBE keyspaces;

system system_traces

Vì chúng tôi đã xóa điểm hướng dẫn keyspace, bạn sẽ không tìm thấy nó trong danh sách keyspaces.

Bỏ Keyspace bằng Java API

Bạn có thể tạo một keyspace bằng phương thức execute () của lớp Session. Thực hiện theo các bước được cung cấp bên dưới để xóa không gian khóa bằng Java API.

Bước 1: Tạo một đối tượng cụm

Trước hết, hãy tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm bằng cách sử dụng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có một keyspace, bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên keyspace ở định dạng chuỗi vào phương thức này như hình dưới đây.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trên cqlsh.

Trong ví dụ sau, chúng tôi đang xóa một không gian khóa có tên tp. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

String query = "DROP KEYSPACE tp; ";

session.execute(query);

Dưới đây là chương trình hoàn chỉnh để tạo và sử dụng keyspace trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Delete_KeySpace.java
$java Delete_KeySpace

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Keyspace deleted

Tạo bảng

Bạn có thể tạo bảng bằng lệnh CREATE TABLE. Dưới đây là cú pháp để tạo một bảng.

Cú pháp

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

Xác định một cột

Bạn có thể xác định một cột như hình dưới đây.

column name1 data type,
column name2 data type,

example:

age int,
name text

Khóa chính

Khóa chính là một cột được sử dụng để xác định duy nhất một hàng. Do đó, việc xác định khóa chính là bắt buộc trong khi tạo bảng. Khóa chính được tạo bởi một hoặc nhiều cột của bảng. Bạn có thể xác định khóa chính của bảng như hình dưới đây.

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)
   )

Thí dụ

Dưới đây là một ví dụ để tạo một bảng trong Cassandra bằng cách sử dụng cqlsh. Chúng tôi đây -

  • Sử dụng điểm hướng dẫn keyspace

  • Tạo một bảng có tên emp

Nó sẽ có các chi tiết như tên nhân viên, id, thành phố, lương và số điện thoại. Id nhân viên là khóa chính.

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
   );

xác minh

Câu lệnh select sẽ cung cấp cho bạn lược đồ. Xác minh bảng bằng câu lệnh select như hình dưới đây.

cqlsh:tutorialspoint> select * from emp;

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

(0 rows)

Tại đây bạn có thể quan sát bảng được tạo với các cột đã cho. Vì chúng tôi đã xóa điểm hướng dẫn keyspace, bạn sẽ không tìm thấy nó trong danh sách keyspaces.

Tạo bảng bằng Java API

Bạn có thể tạo một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để tạo bảng bằng Java API.

Bước 1: Tạo một đối tượng cụm

Trước hết, hãy tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm bằng cách sử dụng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một phiên bản của đối tượng Session bằng cách sử dụng connect() phương pháp của Cluster lớp như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có một keyspace, bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên keyspace ở định dạng chuỗi vào phương thức này như hình dưới đây.

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

Ở đây chúng tôi đang sử dụng keyspace có tên tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trên cqlsh.

Trong ví dụ sau, chúng tôi đang tạo một bảng có tên emp. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

//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);

Dưới đây là chương trình hoàn chỉnh để tạo và sử dụng keyspace trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Create_Table.java
$java Create_Table

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Table created

Thay đổi bảng

Bạn có thể thay đổi bảng bằng lệnh ALTER TABLE. Dưới đây là cú pháp để tạo một bảng.

Cú pháp

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

Sử dụng lệnh ALTER, bạn có thể thực hiện các thao tác sau:

  • Thêm một cột

  • Thả một cột

Thêm một cột

Sử dụng lệnh ALTER, bạn có thể thêm một cột vào bảng. Trong khi thêm cột, bạn phải chú ý rằng tên cột không xung đột với tên cột hiện có và bảng không được xác định với tùy chọn lưu trữ nhỏ gọn. Dưới đây là cú pháp để thêm cột vào bảng.

ALTER TABLE table name
ADD  new column datatype;

Example

Dưới đây là một ví dụ để thêm một cột vào bảng hiện có. Ở đây chúng tôi đang thêm một cột có tên làemp_email kiểu dữ liệu văn bản cho bảng có tên emp.

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

Verification

Sử dụng câu lệnh SELECT để xác minh xem cột có được thêm vào hay không. Tại đây bạn có thể quan sát cột emp_email mới được thêm vào.

cqlsh:tutorialspoint> select * from emp;

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

Bỏ một cột

Sử dụng lệnh ALTER, bạn có thể xóa một cột khỏi bảng. Trước khi bỏ một cột khỏi bảng, hãy kiểm tra xem bảng đó không được xác định với tùy chọn lưu trữ nhỏ gọn. Dưới đây là cú pháp để xóa một cột khỏi bảng bằng lệnh ALTER.

ALTER table name
DROP column name;

Example

Dưới đây là một ví dụ để bỏ một cột khỏi một bảng. Ở đây chúng tôi đang xóa cột có tênemp_email.

cqlsh:tutorialspoint> ALTER TABLE emp DROP emp_email;

Verification

Xác minh xem cột có bị xóa hay không bằng cách sử dụng select như hình dưới đây.

cqlsh:tutorialspoint> select * from emp;

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

Từ emp_email cột đã bị xóa, bạn không thể tìm thấy nó nữa.

Thay đổi bảng bằng Java API

Bạn có thể tạo một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để thay đổi bảng bằng Java API.

Bước 1: Tạo một đối tượng cụm

Trước hết, hãy tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm bằng cách sử dụng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace có tên tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang thêm một cột vào bảng có tên emp. Để làm như vậy, bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

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

Dưới đây là chương trình hoàn chỉnh để thêm một cột vào bảng hiện có.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Add_Column.java
$java Add_Column

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Column added

Xóa một cột

Dưới đây là chương trình hoàn chỉnh để xóa một cột khỏi bảng hiện có.

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");
   }
 }

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Delete_Column.java
$java Delete_Column

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Column deleted

Bỏ bàn

Bạn có thể thả một bảng bằng lệnh Drop Table. Cú pháp của nó như sau:

Cú pháp

DROP TABLE <tablename>

Thí dụ

Đoạn mã sau loại bỏ một bảng hiện có khỏi KeySpace.

cqlsh:tutorialspoint> DROP TABLE emp;

xác minh

Sử dụng lệnh Mô tả để xác minh xem bảng có bị xóa hay không. Vì bảng trống đã bị xóa, bạn sẽ không tìm thấy nó trong danh sách họ cột.

cqlsh:tutorialspoint> DESCRIBE COLUMNFAMILIES;
employee

Xóa bảng bằng Java API

Bạn có thể xóa một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để xóa bảng bằng Java API.

Bước 1: Tạo một đối tượng cụm

Trước hết, hãy tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây -

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm bằng cách sử dụng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng keyspace có tên tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang xóa một bảng có tên emp. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

// Query

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

Dưới đây là chương trình hoàn chỉnh để thả một bảng trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Drop_Table.java
$java Drop_Table

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Table dropped

Cắt bớt một bảng

Bạn có thể cắt bớt một bảng bằng lệnh TRUNCATE. Khi bạn cắt bớt một bảng, tất cả các hàng của bảng sẽ bị xóa vĩnh viễn. Dưới đây là cú pháp của lệnh này.

Cú pháp

TRUNCATE <tablename>

Thí dụ

Giả sử có một bảng được gọi là student với dữ liệu sau.

s_id tên của s_branch s_aggregate
1 ram IT 70
2 rahman EEE 75
3 robbin Mech 72

Khi bạn thực hiện câu lệnh select để lấy bảng student, nó sẽ cung cấp cho bạn kết quả sau.

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)

Bây giờ hãy cắt ngắn bảng bằng lệnh TRUNCATE.

cqlsh:tp> TRUNCATE student;

xác minh

Xác minh xem bảng có bị cắt bớt hay không bằng cách thực thi selecttuyên bố. Dưới đây là kết quả của câu lệnh select trên bảng sinh viên sau khi cắt bớt.

cqlsh:tp> select * from student;

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

(0 rows)

Cắt bớt một bảng bằng Java API

Bạn có thể cắt bớt một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để cắt bớt một bảng.

Bước 1: Tạo một đối tượng cụm

Trước hết, hãy tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm bằng cách sử dụng một dòng mã như hình dưới đây.

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

Bước 2: Tạo đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng không gian phím có tên tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang cắt bớt một bảng có tên emp. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vàoexecute() như hình dưới đây.

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

Dưới đây là chương trình hoàn chỉnh để cắt bớt một bảng trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Truncate_Table.java
$java Truncate_Table

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Table truncated

Tạo chỉ mục bằng Cqlsh

Bạn có thể tạo một chỉ mục trong Cassandra bằng lệnh CREATE INDEX. Cú pháp của nó như sau:

CREATE INDEX <identifier> ON <tablename>

Dưới đây là một ví dụ để tạo chỉ mục cho một cột. Ở đây chúng tôi đang tạo một chỉ mục cho một cột 'emp_name' trong một bảng có tên là emp.

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

Tạo chỉ mục bằng Java API

Bạn có thể tạo một chỉ mục cho một cột của bảng bằng cách sử dụng phương thức execute () của lớp Session. Làm theo các bước dưới đây để tạo chỉ mục cho một cột trong bảng.

Bước 1: Tạo một đối tượng cụm

Trước hết, hãy tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng đối tượng cụm bằng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một phiên bản của đối tượng Session bằng cách sử dụng phương thức connect () của Cluster lớp như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace được gọi là tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang tạo một chỉ mục cho một cột có tên là emp_name, trong một bảng có tên emp. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

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

Dưới đây là chương trình hoàn chỉnh để tạo chỉ mục của một cột trong bảng trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Create_Index.java
$java Create_Index

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Index created

Giảm chỉ số

Bạn có thể giảm một chỉ mục bằng lệnh DROP INDEX. Cú pháp của nó như sau:

DROP INDEX <identifier>

Dưới đây là một ví dụ để giảm chỉ mục của một cột trong bảng. Ở đây chúng tôi đang loại bỏ chỉ mục của tên cột trong bảng trống.

cqlsh:tp> drop index name;

Bỏ chỉ mục bằng Java API

Bạn có thể bỏ một chỉ mục của bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để loại bỏ một chỉ mục từ một bảng.

Bước 1: Tạo một đối tượng cụm

Tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Builder object. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm bằng cách sử dụng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace có tên tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Chuyển truy vấn ở định dạng chuỗi hoặc dưới dạngStatementđối tượng lớp của phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang loại bỏ một chỉ mục "tên" của empbàn. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

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

Dưới đây là chương trình hoàn chỉnh để giảm một chỉ mục trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Drop_index.java
$java Drop_index

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Index dropped

Sử dụng các câu lệnh theo lô

Sử dụng BATCH,bạn có thể thực hiện đồng thời nhiều câu lệnh sửa đổi (chèn, cập nhật, xóa). Cú pháp của nó như sau:

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

Thí dụ

Giả sử có một bảng trong Cassandra được gọi là emp có dữ liệu sau:

emp_id emp_name emp_city emp_phone emp_sal
1 ram Hyderabad 9848022338 50000
2 robin Delhi 9848022339 50000
3 rahman Chennai 9848022330 45000

Trong ví dụ này, chúng tôi sẽ thực hiện các thao tác sau:

  • Chèn một hàng mới với các chi tiết sau (4, rajeev, pune, 9848022331, 30000).
  • Cập nhật lương của nhân viên có id hàng 3 thành 50000.
  • Xóa thành phố của nhân viên có id hàng 2.

Để thực hiện các thao tác trên trong một lần, hãy sử dụng lệnh BATCH sau:

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;

xác minh

Sau khi thực hiện thay đổi, hãy xác minh bảng bằng câu lệnh SELECT. Nó sẽ tạo ra kết quả sau:

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)

Ở đây bạn có thể quan sát bảng với dữ liệu đã sửa đổi.

Batch Statements sử dụng Java API

Các câu lệnh hàng loạt có thể được viết theo chương trình trong một bảng bằng cách sử dụng phương thức execute () của lớp Session. Làm theo các bước dưới đây để thực thi nhiều câu lệnh bằng cách sử dụng câu lệnh lô với sự trợ giúp của Java API.

Bước 1: Tạo một đối tượng cụm

Tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Sử dụng mã sau để tạo đối tượng cụm:

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

Bạn có thể xây dựng đối tượng cụm bằng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace có tên tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ này, chúng tôi sẽ thực hiện các thao tác sau:

  • Chèn một hàng mới với các chi tiết sau (4, rajeev, pune, 9848022331, 30000).
  • Cập nhật lương của nhân viên có id hàng 3 thành 50000.
  • Xóa thành phố của nhân viên có id hàng 2.

Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

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;”;

Dưới đây là chương trình hoàn chỉnh để thực thi nhiều câu lệnh đồng thời trên một bảng trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Batch.java
$java Batch

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Changes done

Tạo dữ liệu trong bảng

Bạn có thể chèn dữ liệu vào các cột của một hàng trong bảng bằng lệnh INSERT. Dưới đây là cú pháp để tạo dữ liệu trong bảng.

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

Thí dụ

Giả sử có một bảng được gọi là emp với các cột (emp_id, emp_name, emp_city, emp_phone, emp_sal) và bạn phải chèn dữ liệu sau vào emp bàn.

emp_id emp_name emp_city emp_phone emp_sal
1 ram Hyderabad 9848022338 50000
2 robin Hyderabad 9848022339 40000
3 rahman Chennai 9848022330 45000

Sử dụng các lệnh dưới đây để điền vào bảng với dữ liệu cần thiết.

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);

xác minh

Sau khi chèn dữ liệu, sử dụng câu lệnh SELECT để xác minh xem dữ liệu đã được chèn hay chưa. Nếu bạn xác minh bảng emp bằng câu lệnh SELECT, nó sẽ cung cấp cho bạn kết quả sau.

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)

Tại đây, bạn có thể quan sát bảng đã điền dữ liệu chúng tôi đã chèn vào.

Tạo dữ liệu bằng Java API

Bạn có thể tạo dữ liệu trong bảng bằng phương thức execute () của lớp Session. Làm theo các bước được cung cấp bên dưới để tạo dữ liệu trong bảng bằng API java.

Bước 1: Tạo một đối tượng cụm

Tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm bằng cách sử dụng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace được gọi là tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Chuyển truy vấn ở định dạng chuỗi hoặc dưới dạngStatementđối tượng lớp của phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang chèn dữ liệu vào một bảng có tên emp. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây.

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);

Dưới đây là chương trình hoàn chỉnh để chèn dữ liệu vào bảng trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Create_Data.java
$java Create_Data

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Data created

Cập nhật dữ liệu trong bảng

UPDATElà lệnh dùng để cập nhật dữ liệu trong bảng. Các từ khóa sau được sử dụng khi cập nhật dữ liệu trong bảng:

  • Where - Mệnh đề này dùng để chọn hàng được cập nhật.

  • Set - Đặt giá trị bằng từ khóa này.

  • Must - Bao gồm tất cả các cột tạo khóa chính.

Trong khi cập nhật hàng, nếu một hàng nhất định không khả dụng, thì CẬP NHẬT sẽ tạo một hàng mới. Dưới đây là cú pháp của lệnh UPDATE -

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

Thí dụ

Giả sử có một bảng có tên emp. Bảng này lưu trữ thông tin chi tiết về nhân viên của một công ty nhất định và nó có các chi tiết sau:

emp_id emp_name emp_city emp_phone emp_sal
1 ram Hyderabad 9848022338 50000
2 robin Hyderabad 9848022339 40000
3 rahman Chennai 9848022330 45000

Bây giờ chúng ta hãy cập nhật emp_city của robin đến Delhi và mức lương của anh ấy lên 50000. Dưới đây là truy vấn để thực hiện các cập nhật cần thiết.

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

xác minh

Sử dụng câu lệnh SELECT để xác minh xem dữ liệu đã được cập nhật hay chưa. Nếu bạn xác minh bảng emp bằng câu lệnh SELECT, nó sẽ tạo ra kết quả sau.

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)

Ở đây bạn có thể quan sát dữ liệu bảng đã được cập nhật.

Cập nhật dữ liệu bằng Java API

Bạn có thể cập nhật dữ liệu trong một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để cập nhật dữ liệu trong bảng bằng Java API.

Bước 1: Tạo một đối tượng cụm

Tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Sử dụng mã sau để tạo đối tượng cụm.

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

Bạn có thể xây dựng đối tượng cụm bằng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace có tên tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang cập nhật bảng emp. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây:

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

Dưới đây là chương trình hoàn chỉnh để cập nhật dữ liệu trong bảng bằng 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");
   }
 }

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Update_Data.java
$java Update_Data

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Data updated

Đọc dữ liệu bằng mệnh đề chọn

Mệnh đề SELECT được sử dụng để đọc dữ liệu từ một bảng trong Cassandra. Sử dụng mệnh đề này, bạn có thể đọc toàn bộ bảng, một cột hoặc một ô cụ thể. Dưới đây là cú pháp của mệnh đề SELECT.

SELECT FROM <tablename>

Thí dụ

Giả sử có một bảng trong không gian khóa có tên emp với các chi tiết sau -

emp_id emp_name emp_city emp_phone emp_sal
1 ram Hyderabad 9848022338 50000
2 robin vô giá trị 9848022339 50000
3 rahman Chennai 9848022330 50000
4 rajeev Pune 9848022331 30000

Ví dụ sau đây cho thấy cách đọc toàn bộ bảng bằng mệnh đề SELECT. Ở đây chúng ta đang đọc một bảng có tênemp.

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)

Đọc các cột bắt buộc

Ví dụ sau đây cho thấy cách đọc một cột cụ thể trong bảng.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

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

Mệnh đề Where

Sử dụng mệnh đề WHERE, bạn có thể đặt một ràng buộc đối với các cột bắt buộc. Cú pháp của nó như sau:

SELECT FROM <table name> WHERE <condition>;

Note - Mệnh đề WHERE chỉ có thể được sử dụng trên các cột là một phần của khóa chính hoặc có chỉ mục phụ trên chúng.

Trong ví dụ sau, chúng ta đang đọc thông tin chi tiết của một nhân viên có mức lương là 50000. Trước hết, hãy đặt chỉ số phụ vào cột 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

Đọc dữ liệu bằng Java API

Bạn có thể đọc dữ liệu từ một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để thực thi nhiều câu lệnh bằng cách sử dụng câu lệnh lô với sự trợ giúp của Java API.

Bước 1: Tạo một đối tượng cụm

Tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Sử dụng mã sau để tạo đối tượng cụm.

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

Bạn có thể xây dựng đối tượng cụm bằng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace được gọi là tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ này, chúng tôi đang truy xuất dữ liệu từ empbàn. Lưu trữ truy vấn trong một chuỗi và chuyển nó vào phương thức execute () của lớp phiên như hình dưới đây.

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

Thực thi truy vấn bằng phương thức execute () của lớp Phiên.

Bước 4: Lấy đối tượng ResultSet

Các truy vấn được chọn sẽ trả về kết quả dưới dạng ResultSet đối tượng, do đó lưu trữ kết quả trong đối tượng của RESULTSET lớp như hình bên dưới.

ResultSet result = session.execute( );

Dưới đây là chương trình hoàn chỉnh để đọc dữ liệu từ một bảng.

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());
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Read_Data.java
$java Read_Data

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

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

Đọc dữ liệu bằng mệnh đề chọn

Mệnh đề SELECT được sử dụng để đọc dữ liệu từ một bảng trong Cassandra. Sử dụng mệnh đề này, bạn có thể đọc toàn bộ bảng, một cột hoặc một ô cụ thể. Dưới đây là cú pháp của mệnh đề SELECT.

SELECT FROM <tablename>

Thí dụ

Giả sử có một bảng trong không gian khóa có tên emp với các chi tiết sau -

emp_id emp_name emp_city emp_phone emp_sal
1 ram Hyderabad 9848022338 50000
2 robin vô giá trị 9848022339 50000
3 rahman Chennai 9848022330 50000
4 rajeev Pune 9848022331 30000

Ví dụ sau đây cho thấy cách đọc toàn bộ bảng bằng mệnh đề SELECT. Ở đây chúng ta đang đọc một bảng có tênemp.

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)

Đọc các cột bắt buộc

Ví dụ sau đây cho thấy cách đọc một cột cụ thể trong bảng.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

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

Mệnh đề Where

Sử dụng mệnh đề WHERE, bạn có thể đặt một ràng buộc đối với các cột bắt buộc. Cú pháp của nó như sau:

SELECT FROM <table name> WHERE <condition>;

Note - Mệnh đề WHERE chỉ có thể được sử dụng trên các cột là một phần của khóa chính hoặc có chỉ mục phụ trên chúng.

Trong ví dụ sau, chúng ta đang đọc thông tin chi tiết của một nhân viên có mức lương là 50000. Trước hết, hãy đặt chỉ số phụ vào cột 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

Đọc dữ liệu bằng Java API

Bạn có thể đọc dữ liệu từ một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để thực thi nhiều câu lệnh bằng cách sử dụng câu lệnh lô với sự trợ giúp của Java API.

Bước 1: Tạo một đối tượng cụm

Tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Sử dụng mã sau để tạo đối tượng cụm.

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

Bạn có thể xây dựng đối tượng cụm bằng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace được gọi là tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ này, chúng tôi đang truy xuất dữ liệu từ empbàn. Lưu trữ truy vấn trong một chuỗi và chuyển nó vào phương thức execute () của lớp phiên như hình dưới đây.

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

Thực thi truy vấn bằng phương thức execute () của lớp Phiên.

Bước 4: Lấy đối tượng ResultSet

Các truy vấn được chọn sẽ trả về kết quả dưới dạng ResultSet đối tượng, do đó lưu trữ kết quả trong đối tượng của RESULTSET lớp như hình bên dưới.

ResultSet result = session.execute( );

Dưới đây là chương trình hoàn chỉnh để đọc dữ liệu từ một bảng.

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());
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Read_Data.java
$java Read_Data

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

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

Xóa dữ liệu khỏi bảng

Bạn có thể xóa dữ liệu khỏi bảng bằng lệnh DELETE. Cú pháp của nó như sau:

DELETE FROM <identifier> WHERE <condition>;

Thí dụ

Giả sử có một bảng trong Cassandra được gọi là emp có dữ liệu sau -

emp_id emp_name emp_city emp_phone emp_sal
1 ram Hyderabad 9848022338 50000
2 robin Hyderabad 9848022339 40000
3 rahman Chennai 9848022330 45000

Câu lệnh sau đây xóa cột emp_sal của hàng cuối cùng -

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

xác minh

Sử dụng câu lệnh SELECT để xác minh xem dữ liệu đã bị xóa hay chưa. Nếu bạn xác minh bảng trống bằng cách sử dụng SELECT, nó sẽ tạo ra kết quả sau:

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)

Vì chúng tôi đã xóa mức lương của Rahman, bạn sẽ thấy giá trị rỗng thay cho mức lương.

Xóa toàn bộ hàng

Lệnh sau sẽ xóa toàn bộ hàng khỏi bảng.

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

xác minh

Sử dụng câu lệnh SELECT để xác minh xem dữ liệu đã bị xóa hay chưa. Nếu bạn xác minh bảng trống bằng cách sử dụng SELECT, nó sẽ tạo ra kết quả sau:

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)

Vì chúng ta đã xóa hàng cuối cùng, nên chỉ còn lại hai hàng trong bảng.

Xóa dữ liệu bằng Java API

Bạn có thể xóa dữ liệu trong một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để xóa dữ liệu khỏi bảng bằng API java.

Bước 1: Tạo một đối tượng cụm

Tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

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

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

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

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Sử dụng mã sau để tạo một đối tượng cụm.

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

Bạn có thể xây dựng đối tượng cụm bằng một dòng mã như hình dưới đây.

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

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect();

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

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

Ở đây chúng tôi đang sử dụng KeySpace được gọi là tp. Do đó, hãy tạo đối tượng phiên như hình bên dưới.

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

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang xóa dữ liệu khỏi bảng có tên emp. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào execute() như hình dưới đây.

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

Dưới đây là chương trình hoàn chỉnh để xóa dữ liệu khỏi bảng trong Cassandra bằng cách sử dụng Java API.

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");
   }
}

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Delete_Data.java
$java Delete_Data

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Data deleted

CQL cung cấp một tập hợp phong phú các kiểu dữ liệu tích hợp sẵn, bao gồm cả các kiểu thu thập. Cùng với các kiểu dữ liệu này, người dùng cũng có thể tạo các kiểu dữ liệu tùy chỉnh của riêng họ. Bảng sau cung cấp danh sách các kiểu dữ liệu tích hợp sẵn có trong CQL.

Loại dữ liệu Hằng số Sự miêu tả
ascii dây Đại diện cho chuỗi ký tự ASCII
bigint bigint Thể hiện độ dài đã ký 64 bit
blob đốm màu Đại diện cho các byte tùy ý
Boolean booleans Trình bày đúng hoặc sai
counter số nguyên Đại diện cho cột bộ đếm
thập phân số nguyên, số nổi Biểu thị số thập phân có độ chính xác thay đổi
gấp đôi số nguyên Đại diện cho dấu chấm động IEEE-754 64-bit
Phao nổi số nguyên, số nổi Đại diện cho dấu chấm động IEEE-754 32 bit
inet dây Đại diện cho một địa chỉ IP, IPv4 hoặc IPv6
int số nguyên Đại diện cho 32-bit có dấu int
bản văn dây Đại diện cho chuỗi được mã hóa UTF8
timestamp số nguyên, chuỗi Đại diện cho một dấu thời gian
timeuuid uuids Đại diện cho UUID loại 1
uuid uuids Đại diện cho loại 1 hoặc loại 4
UUID
varchar dây Đại diện cho chuỗi được mã hóa uTF8
varint số nguyên Đại diện cho số nguyên có độ chính xác tùy ý

Các loại bộ sưu tập

Ngôn ngữ truy vấn Cassandra cũng cung cấp một kiểu dữ liệu thu thập. Bảng sau cung cấp danh sách các Bộ sưu tập có sẵn trong CQL.

Bộ sưu tập Sự miêu tả
danh sách Danh sách là một tập hợp của một hoặc nhiều phần tử có thứ tự.
bản đồ Bản đồ là một tập hợp các cặp khóa-giá trị.
bộ Tập hợp là tập hợp của một hoặc nhiều phần tử.

Kiểu dữ liệu do người dùng xác định

Cqlsh cung cấp cho người dùng một phương tiện để tạo các kiểu dữ liệu của riêng họ. Dưới đây là các lệnh được sử dụng khi xử lý các kiểu dữ liệu do người dùng xác định.

  • CREATE TYPE - Tạo một kiểu dữ liệu do người dùng xác định.

  • ALTER TYPE - Sửa đổi kiểu dữ liệu do người dùng xác định.

  • DROP TYPE - Loại bỏ kiểu dữ liệu do người dùng xác định.

  • DESCRIBE TYPE - Mô tả một kiểu dữ liệu do người dùng xác định.

  • DESCRIBE TYPES - Mô tả các kiểu dữ liệu do người dùng xác định.

CQL cung cấp phương tiện sử dụng các kiểu dữ liệu Bộ sưu tập. Sử dụng các loại Bộ sưu tập này, bạn có thể lưu trữ nhiều giá trị trong một biến duy nhất. Chương này giải thích cách sử dụng Bộ sưu tập trong Cassandra.

Danh sách

Danh sách được sử dụng trong các trường hợp

  • thứ tự của các phần tử phải được duy trì, và
  • một giá trị sẽ được lưu trữ nhiều lần.

Bạn có thể lấy các giá trị của kiểu dữ liệu danh sách bằng cách sử dụng chỉ mục của các phần tử trong danh sách.

Tạo bảng với danh sách

Dưới đây là một ví dụ để tạo một bảng mẫu với hai cột, tên và email. Để lưu trữ nhiều email, chúng tôi đang sử dụng danh sách.

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

Chèn dữ liệu vào danh sách

Trong khi chèn dữ liệu vào các phần tử trong danh sách, hãy nhập tất cả các giá trị được phân tách bằng dấu phẩy trong dấu ngoặc vuông [] như hình dưới đây.

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

Cập nhật danh sách

Dưới đây là một ví dụ để cập nhật kiểu dữ liệu danh sách trong một bảng được gọi là data. Ở đây chúng tôi đang thêm một email khác vào danh sách.

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

xác minh

Nếu bạn xác minh bảng bằng câu lệnh SELECT, bạn sẽ nhận được kết quả sau:

cqlsh:tutorialspoint> SELECT * FROM data;

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

(1 rows)

BỘ

Tập hợp là một kiểu dữ liệu được sử dụng để lưu trữ một nhóm các phần tử. Các phần tử của một tập hợp sẽ được trả về theo thứ tự đã được sắp xếp.

Tạo bảng với bộ

Ví dụ sau tạo một bảng mẫu với hai cột, tên và điện thoại. Để lưu trữ nhiều số điện thoại, chúng tôi đang sử dụng bộ.

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

Chèn dữ liệu vào một tập hợp

Trong khi chèn dữ liệu vào các phần tử trong một tập hợp, hãy nhập tất cả các giá trị được phân tách bằng dấu phẩy trong dấu ngoặc nhọn {} như được hiển thị bên dưới.

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

Cập nhật một tập hợp

Đoạn mã sau đây cho biết cách cập nhật một tập hợp trong bảng có tên là data2. Ở đây chúng tôi đang thêm một số điện thoại khác vào bộ.

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

xác minh

Nếu bạn xác minh bảng bằng câu lệnh SELECT, bạn sẽ nhận được kết quả sau:

cqlsh:tutorialspoint> SELECT * FROM data2;

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

(1 rows)

BẢN ĐỒ

Bản đồ là một kiểu dữ liệu được sử dụng để lưu trữ một cặp khóa-giá trị của các phần tử.

Tạo bảng với bản đồ

Ví dụ sau đây cho thấy cách tạo một bảng mẫu với hai cột, tên và địa chỉ. Để lưu trữ nhiều giá trị địa chỉ, chúng tôi đang sử dụng bản đồ.

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

Chèn dữ liệu vào bản đồ

Trong khi chèn dữ liệu vào các phần tử trong bản đồ, hãy nhập tất cả key : value các cặp được phân tách bằng dấu phẩy trong dấu ngoặc nhọn {} như hình dưới đây.

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

Cập nhật một tập hợp

Đoạn mã sau cho biết cách cập nhật kiểu dữ liệu bản đồ trong bảng có tên là data3. Ở đây chúng tôi đang thay đổi giá trị của văn phòng chính, tức là chúng tôi đang thay đổi địa chỉ văn phòng của một người tên là robin.

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

xác minh

Nếu bạn xác minh bảng bằng câu lệnh SELECT, bạn sẽ nhận được kết quả sau:

cqlsh:tutorialspoint> select * from data3;

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

(1 rows)

CQL cung cấp phương tiện tạo và sử dụng các kiểu dữ liệu do người dùng xác định. Bạn có thể tạo một kiểu dữ liệu để xử lý nhiều trường. Chương này giải thích cách tạo, thay đổi và xóa kiểu dữ liệu do người dùng xác định.

Tạo kiểu dữ liệu do người dùng xác định

Lệnh CREATE TYPEđược sử dụng để tạo kiểu dữ liệu do người dùng xác định. Cú pháp của nó như sau:

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

Thí dụ

Dưới đây là một ví dụ để tạo kiểu dữ liệu do người dùng xác định. Trong ví dụ này, chúng tôi đang tạocard_details kiểu dữ liệu chứa các chi tiết sau.

Cánh đồng Tên trường Loại dữ liệu
thẻ tín dụng số num int
mã pin thẻ tín dụng ghim int
tên trên thẻ tín dụng Tên bản văn
cvv cvv int
Chi tiết liên hệ của chủ thẻ điện thoại bộ
cqlsh:tutorialspoint> CREATE TYPE card_details (
   ... num int,
   ... pin int,
   ... name text,
   ... cvv int,
   ... phone set<int>
... );

Note - Tên dùng cho kiểu dữ liệu do người dùng định nghĩa không được trùng với tên kiểu dành riêng.

xác minh

Sử dụng DESCRIBE lệnh để xác minh xem kiểu được tạo đã được tạo hay chưa.

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

Thay đổi loại dữ liệu do người dùng xác định

ALTER TYPE- lệnh được sử dụng để thay đổi kiểu dữ liệu hiện có. Sử dụng ALTER, bạn có thể thêm trường mới hoặc đổi tên trường hiện có.

Thêm một trường vào một loại

Sử dụng cú pháp sau để thêm trường mới vào kiểu dữ liệu do người dùng xác định hiện có.

ALTER TYPE typename
ADD field_name field_type;

Đoạn mã sau thêm một trường mới vào Card_detailsloại dữ liệu. Ở đây chúng tôi đang thêm một trường mới có tên là email.

cqlsh:tutorialspoint> ALTER TYPE card_details ADD email text;

xác minh

Sử dụng DESCRIBE lệnh để xác minh xem trường mới có được thêm vào hay không.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   );

Đổi tên một trường trong một loại

Sử dụng cú pháp sau để đổi tên kiểu dữ liệu hiện có do người dùng xác định.

ALTER TYPE typename
RENAME existing_name TO new_name;

Đoạn mã sau thay đổi tên của trường trong một kiểu. Ở đây chúng tôi đang đổi tên trường email thành thư.

cqlsh:tutorialspoint> ALTER TYPE card_details RENAME email TO mail;

xác minh

Sử dụng DESCRIBE lệnh để xác minh xem tên kiểu đã thay đổi hay chưa.

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

Xóa loại dữ liệu do người dùng xác định

DROP TYPElà lệnh dùng để xóa kiểu dữ liệu do người dùng định nghĩa. Dưới đây là một ví dụ để xóa kiểu dữ liệu do người dùng xác định.

Thí dụ

Trước khi xóa, hãy xác minh danh sách tất cả các loại dữ liệu do người dùng xác định bằng cách sử dụng DESCRIBE_TYPES lệnh như hình dưới đây.

cqlsh:tutorialspoint> DESCRIBE TYPES;
card_details card

Từ hai loại, xóa loại có tên card như hình bên dưới.

cqlsh:tutorialspoint> drop type card;

Sử dụng DESCRIBE lệnh để xác minh xem kiểu dữ liệu có bị giảm hay không.

cqlsh:tutorialspoint> describe types;

card_details