Cassandra中的鍵空間是一個(gè)定義節(jié)點(diǎn)上數(shù)據(jù)復(fù)制的命名空間。集群每個(gè)節(jié)點(diǎn)包含一個(gè)鍵空間。下面給出了使用語(yǔ)句CREATE KEYSPACE創(chuàng)建鍵空間的語(yǔ)法。
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語(yǔ)句有兩個(gè)屬性:replication和durable_writes。
復(fù)制選項(xiàng)用于指定副本位置策略和所需副本的數(shù)量。下表列出了所有副本位置策略。
策略名稱(chēng) | 描述 |
---|---|
簡(jiǎn)單的策略 | 為集群指定簡(jiǎn)單的復(fù)制因子。 |
網(wǎng)絡(luò)拓?fù)洳呗?/span> | 使用此選項(xiàng),可以單獨(dú)為每個(gè)數(shù)據(jù)中心設(shè)置復(fù)制因子。 |
舊網(wǎng)絡(luò)拓?fù)洳呗?/span> | 使用此選項(xiàng),可以單獨(dú)為每個(gè)數(shù)據(jù)中心設(shè)置復(fù)制因子。 |
使用此選項(xiàng),您可以指示Cassandra是否對(duì)當(dāng)前KeySpace的更新使用commitlog。此選項(xiàng)不是強(qiáng)制性的,默認(rèn)情況下,它設(shè)置為true。
下面給出了創(chuàng)建KeySpace的示例。
這里我們創(chuàng)建一個(gè)名為TutorialsPoint 的KeySpace。
我們使用第一個(gè)副本放置策略,即簡(jiǎn)單策略。
我們選擇復(fù)制因子為1個(gè)副本。
cqlsh.> CREATE KEYSPACE tutorialspoint WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
您可以使用命令Describe驗(yàn)證是否創(chuàng)建表。如果對(duì)鍵空間使用此命令,它將顯示如下所示創(chuàng)建的所有鍵空間。
cqlsh> DESCRIBE keyspaces; tutorialspoint system system_traces
在這里您可以觀察新創(chuàng)建的KeySpace tutorialspoint。
默認(rèn)情況下,表的durable_writes屬性設(shè)置為true,但可以將其設(shè)置為false。您不能將此屬性設(shè)置為simplex策略。
下面給出了示例持久寫(xiě)入屬性的使用示例。
cqlsh> CREATE KEYSPACE test ... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 } ... AND DURABLE_WRITES = false;
您可以通過(guò)查詢系統(tǒng)鍵空間來(lái)驗(yàn)證test KeySpace的durable_writes屬性是否設(shè)置為false。此查詢提供了所有KeySpaces及其屬性。
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)
在這里可以觀察測(cè)試KeySpace的durable_writes屬性設(shè)置為false。
您可以使用關(guān)鍵字USE使用創(chuàng)建的KeySpace。其語(yǔ)法如下:
Syntax:USE <identifier>
在下面的示例中,我們使用KeySpace tutorialspoint。
cqlsh> USE tutorialspoint; cqlsh:tutorialspoint>
您可以使用Session類(lèi)的execute()方法創(chuàng)建一個(gè)Keyspace。按照以下步驟使用Java API創(chuàng)建鍵空間。
首先,創(chuàng)建一個(gè)名為com.datastax.driver.core的Cluster.builder類(lèi)的實(shí)例,如下所示。
//Creating Cluster.Builder object Cluster.Builder builder1 = Cluster.builder();
使用Cluster.Builder對(duì)象的addContactPoint()方法添加聯(lián)系點(diǎn)(節(jié)點(diǎn)的IP地址)。此方法返回Cluster.Builder。
//Adding contact point to the Cluster.Builder object Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
使用新的構(gòu)建器對(duì)象,創(chuàng)建一個(gè)集群對(duì)象。為此,在Cluster.Builder類(lèi)中有一個(gè)名為build()的方法。以下代碼顯示如何創(chuàng)建集群對(duì)象。
//Building a cluster Cluster cluster = builder.build();
您可以在單行代碼中構(gòu)建一個(gè)集群對(duì)象,如下所示。
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
使用Cluster類(lèi)的connect()方法創(chuàng)建一個(gè)Session對(duì)象的實(shí)例,如下所示。
Session session = cluster.connect( );
此方法創(chuàng)建一個(gè)新會(huì)話并初始化它。如果已經(jīng)有一個(gè)鍵空間,可以通過(guò)將字符串格式的鍵空間名稱(chēng)傳遞給這個(gè)方法來(lái)將其設(shè)置為現(xiàn)有鍵空間,如下所示。
Session session = cluster.connect(“ Your keyspace name ” );
您可以使用Session類(lèi)的execute()方法執(zhí)行CQL查詢。將查詢以字符串格式或Statement類(lèi)對(duì)象傳遞給execute()方法。無(wú)論您以字符串格式傳遞給此方法將在cqlsh上執(zhí)行。
在這個(gè)例子中,我們創(chuàng)建一個(gè)名為tp的KeySpace。我們使用第一個(gè)副本放置策略,即簡(jiǎn)單策略,我們選擇復(fù)制因子為1個(gè)副本。
您必須將查詢存儲(chǔ)在字符串變量中,并將其傳遞給execute()方法,如下所示。
String query = "CREATE KEYSPACE tp WITH replication " + "= {'class':'SimpleStrategy', 'replication_factor':1}; "; session.execute(query);
您可以使用execute()方法使用創(chuàng)建的KeySpace,如下所示。
execute(“ USE tp ” );
下面給出了使用Java API在Cassandra中創(chuàng)建和使用鍵空間的完整程序。
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èi)名稱(chēng)和.java保存上述程序,瀏覽到保存位置。編譯并執(zhí)行程序如下圖所示。
$javac Create_KeySpace.java $java Create_KeySpace
在正常條件下,它將產(chǎn)生以下輸出:
Keyspace created
更多建議: