Пространство ключей в 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 имеет два свойства: репликация и durable_writes .
копирование
Вариант репликации — указать стратегию размещения реплики и количество требуемых реплик. В следующей таблице перечислены все стратегии размещения реплик.
Название стратегии | Описание |
---|---|
Простая стратегия » | Указывает простой фактор репликации для кластера. |
Стратегия топологии сети | Используя эту опцию, вы можете установить коэффициент репликации для каждого датацентра независимо. |
Старая стратегия топологии сети | Это устаревшая стратегия репликации. |
Используя эту опцию, вы можете указать Cassandra, использовать ли commitlog для обновлений в текущем KeySpace. Этот параметр не является обязательным и по умолчанию он имеет значение true.
пример
Ниже приведен пример создания KeySpace.
-
Здесь мы создаем пространство ключей с именем TutorialsPoint .
-
Мы используем первую стратегию размещения реплик, т.е. простую стратегию .
-
И мы выбираем коэффициент репликации до 1 реплики .
Здесь мы создаем пространство ключей с именем TutorialsPoint .
Мы используем первую стратегию размещения реплик, т.е. простую стратегию .
И мы выбираем коэффициент репликации до 1 реплики .
cqlsh.> CREATE KEYSPACE tutorialspoint WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
верификация
Вы можете проверить, создана ли таблица или нет, используя команду Describe . Если вы используете эту команду над пространствами клавиш, она отобразит все пространства клавиш, созданные, как показано ниже.
cqlsh> DESCRIBE keyspaces; tutorialspoint system system_traces
Здесь вы можете наблюдать недавно созданную точку обучения KeySpace .
Durable_writes
По умолчанию для свойств таблицы durable_writes задано значение true, однако может быть установлено значение false. Вы не можете установить это свойство для симплекс стратегии.
пример
Ниже приведен пример, демонстрирующий использование свойства долговременной записи.
cqlsh> CREATE KEYSPACE test ... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 } ... AND DURABLE_WRITES = false;
верификация
Вы можете проверить, было ли для свойства durable_writes теста KeySpace установлено значение 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)
Здесь вы можете видеть, что свойство durable_writes теста KeySpace было установлено в false.
Использование пространства ключей
Вы можете использовать созданное KeySpace, используя ключевое слово USE . Его синтаксис выглядит следующим образом —
Syntax:USE <identifier>
пример
В следующем примере мы используем учебную точку KeySpace .
cqlsh> USE tutorialspoint; cqlsh:tutorialspoint>
Создание Keyspace с использованием Java API
Вы можете создать пространство ключей, используя метод execute () класса Session . Следуйте приведенным ниже инструкциям, чтобы создать пространство ключей с помощью Java API.
Шаг 1: Создайте объект кластера
Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.
//Creating Cluster.Builder object Cluster.Builder builder1 = Cluster.builder();
Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .
//Adding contact point to the Cluster.Builder object Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.
//Building a cluster Cluster cluster = builder.build();
Вы можете построить кластерный объект в одну строку кода, как показано ниже.
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Шаг 2. Создание объекта сеанса
Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.
Session session = cluster.connect( );
Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, вы можете установить его на существующее, передав этому методу имя пространства ключей в строковом формате, как показано ниже.
Session session = cluster.connect(“ Your keyspace name ” );
Шаг 3: Выполнить запрос
Вы можете выполнять CQL- запросы, используя метод execute () класса Session . Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute () . Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .
В этом примере мы создаем пространство ключей с именем tp. Мы используем первую стратегию размещения реплик, т. Е. Простую стратегию, и мы выбираем коэффициент репликации для одной реплики.
Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.
String query = "CREATE KEYSPACE tp WITH replication " + "= {'class':'SimpleStrategy', 'replication_factor':1}; "; session.execute(query);
Шаг 4: Используйте KeySpace
Вы можете использовать созданное KeySpace, используя метод execute (), как показано ниже.
execute(“ USE tp ” );
Ниже приведена полная программа для создания и использования пространства ключей в Cassandra с использованием 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"); } }
Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.
$javac Create_KeySpace.java $java Create_KeySpace
При нормальных условиях он выдаст следующий результат: