Cassandra - Alter Keyspace
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 bền_lớp của 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:replication và durable_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ố nhân bản 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 một không gian phím 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 để thay đổi không gian khóa bằng cách sử dụ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ạ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