ALTER KEYSPACE можно использовать для изменения свойств, таких как количество реплик и durable_writes для KeySpace. Ниже приведен синтаксис этой команды.
Синтаксис
ALTER KEYSPACE <identifier> WITH <properties>
т.е.
ALTER KEYSPACE “KeySpace Name” WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’};
Свойства ALTER KEYSPACE такие же, как CREATE KEYSPACE. У него есть два свойства: replication и durable_writes .
копирование
Опция репликации определяет стратегию размещения реплик и количество требуемых реплик.
Durable_writes
Используя эту опцию, вы можете указать Cassandra, использовать ли commitlog для обновлений в текущем KeySpace. Этот параметр не является обязательным и по умолчанию он имеет значение true.
пример
Ниже приведен пример изменения KeySpace.
-
Здесь мы изменяем KeySpace с именем TutorialsPoint .
-
Мы меняем коэффициент репликации с 1 на 3.
Здесь мы изменяем KeySpace с именем TutorialsPoint .
Мы меняем коэффициент репликации с 1 на 3.
cqlsh.> ALTER KEYSPACE tutorialspoint WITH replication = {'class':'NetworkTopologyStrategy', 'replication_factor' : 3};
Изменение Durable_writes
Вы также можете изменить свойство durable_writes KeySpace. Ниже приведено свойство durable_writes тестового 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;
Еще раз, если вы проверите свойства KeySpaces, он выдаст следующий результат.
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)
Изменение пространства ключей с помощью 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 . Мы изменяем параметр репликации с простой стратегии на стратегию топологии сети.
-
Мы изменяем durable_writes на false
Мы изменяем пространство ключей с именем tp . Мы изменяем параметр репликации с простой стратегии на стратегию топологии сети.
Мы изменяем durable_writes на false
Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.
//Query String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}" +" AND DURABLE_WRITES = false;"; session.execute(query);
Ниже приведена полная программа для создания и использования пространства ключей в Cassandra с использованием 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"); } }
Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.
$javac Alter_KeySpace.java $java Alter_KeySpace
При нормальных условиях он производит следующий вывод —