- Cassandra 教程
- Cassandra - 首頁
- Cassandra - 簡介
- Cassandra - 架構
- Cassandra - 資料模型
- Cassandra - 安裝
- Cassandra - 參考 API
- Cassandra - cqlsh
- Cassandra - Shell 命令
- Cassandra 鍵空間操作
- Cassandra - 建立鍵空間
- Cassandra - 修改鍵空間
- Cassandra - 刪除鍵空間
- Cassandra 表操作
- Cassandra - 建立表
- Cassandra - 修改表
- Cassandra - 刪除表
- Cassandra - 清空表
- Cassandra - 建立索引
- Cassandra - 刪除索引
- Cassandra - 批處理
- Cassandra CRUD 操作
- Cassandra - 建立資料
- Cassandra - 更新資料
- Cassandra - 讀取資料
- Cassandra - 刪除資料
- Cassandra CQL 型別
- Cassandra - CQL 資料型別
- Cassandra - CQL 集合
- CQL 使用者自定義資料型別
- Cassandra 有用資源
- Cassandra - 快速指南
- Cassandra - 有用資源
- Cassandra - 討論
Cassandra - 建立鍵空間
使用 cqlsh 建立鍵空間
Cassandra 中的鍵空間是一個名稱空間,用於定義節點上的資料複製。一個叢集每個節點包含一個鍵空間。以下是使用語句CREATE KEYSPACE建立鍵空間的語法。
語法
CREATE KEYSPACE <identifier> WITH <properties>
例如
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’;
CREATE KEYSPACE 語句有兩個屬性:replication 和 durable_writes。
複製
replication 選項用於指定副本放置策略和所需的副本數量。下表列出了所有副本放置策略。
| 策略名稱 | 描述 |
|---|---|
| Simple Strategy | 為叢集指定一個簡單的複製因子。 |
| Network Topology Strategy | 使用此選項,您可以為每個資料中心獨立設定複製因子。 |
| 舊的 Network Topology Strategy | 這是一個遺留的複製策略。 |
使用此選項,您可以指示 Cassandra 是否對當前 KeySpace 的更新使用commitlog。此選項不是必需的,預設情況下設定為 true。
示例
以下是建立 KeySpace 的示例。
這裡我們建立一個名為TutorialsPoint的 KeySpace。
我們使用第一個副本放置策略,即Simple Strategy。
我們選擇複製因子為1 個副本。
cqlsh.> CREATE KEYSPACE tutorialspoint
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
驗證
您可以使用命令Describe驗證表是否已建立。如果您在鍵空間上使用此命令,它將顯示如下所示建立的所有鍵空間。
cqlsh> DESCRIBE keyspaces; tutorialspoint system system_traces
在這裡您可以看到新建立的 KeySpace tutorialspoint。
Durable_writes
預設情況下,表的 durable_writes 屬性設定為true,但可以設定為 false。您不能將此屬性設定為simplex strategy。
示例
以下是演示 durable_writes 屬性用法的示例。
cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;
驗證
您可以透過查詢 System Keyspace 來驗證 test KeySpace 的 durable_writes 屬性是否設定為 false。此查詢將提供所有 KeySpace 及其屬性。
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)
在這裡您可以看到 test KeySpace 的 durable_writes 屬性設定為 false。
使用鍵空間
您可以使用關鍵字USE使用已建立的 KeySpace。其語法如下:
Syntax:USE <identifier>
示例
在下面的示例中,我們使用 KeySpace tutorialspoint。
cqlsh> USE tutorialspoint; cqlsh:tutorialspoint>
使用 Java API 建立鍵空間
您可以使用Session類的execute()方法建立鍵空間。請按照以下步驟使用 Java API 建立鍵空間。
步驟 1:建立 Cluster 物件
首先,建立一個com.datastax.driver.core包的Cluster.builder類的例項,如下所示。
//Creating Cluster.Builder object Cluster.Builder builder1 = Cluster.builder();
使用Cluster.Builder物件的addContactPoint()方法新增一個聯絡點(節點的 IP 地址)。此方法返回Cluster.Builder。
//Adding contact point to the Cluster.Builder object Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
使用新的 builder 物件,建立一個 cluster 物件。為此,您在Cluster.Builder類中有一個名為build()的方法。以下程式碼顯示瞭如何建立 cluster 物件。
//Building a cluster Cluster cluster = builder.build();
您可以使用一行程式碼構建一個 cluster 物件,如下所示。
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
步驟 2:建立 Session 物件
使用Cluster類的connect()方法建立Session物件的例項,如下所示。
Session session = cluster.connect( );
此方法建立一個新的會話並對其進行初始化。如果您已經有鍵空間,您可以將其設定為現有鍵空間,方法是將鍵空間名稱以字串格式傳遞給此方法,如下所示。
Session session = cluster.connect(“ Your keyspace name ” );
步驟 3:執行查詢
您可以使用Session類的execute()方法執行CQL查詢。將查詢以字串格式或作為Statement類物件傳遞給execute()方法。您以字串格式傳遞給此方法的任何內容都將在cqlsh上執行。
在此示例中,我們建立一個名為tp的 KeySpace。我們使用第一個副本放置策略,即 Simple Strategy,並將複製因子選擇為 1 個副本。
您必須將查詢儲存在一個字串變數中,然後將其傳遞給 execute() 方法,如下所示。
String query = "CREATE KEYSPACE tp WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);
步驟 4:使用 KeySpace
您可以使用 execute() 方法使用已建立的 KeySpace,如下所示。
execute(“ USE tp ” );
以下是使用 Java API 在 Cassandra 中建立和使用鍵空間的完整程式。
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");
}
}
將上述程式儲存為類名後跟 .java,瀏覽到儲存它的位置。編譯並執行程式,如下所示。
$javac Create_KeySpace.java $java Create_KeySpace
在正常情況下,它將產生以下輸出:
Keyspace created