Cassandra - Đọc dữ liệu
Đọ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ó một 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 dưới đây.
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: Nhận đố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]]