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