Cassandra - Tạo Keyspace
Tạo Keyspace bằng Cqlsh
Không gian khóa trong Cassandra là 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 và durable_writes.
Nhân rộng
Tùy chọn sao chép 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_writes 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 một 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ạ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