ћерион Ќетворкс

7 минут

Apache Cassandra Ч это программное обеспечение дл€ управлени€ базами данных NoSQL. ќрганизации используют его дл€ обработки больших объемов данных распределенным способом. ѕопул€рность этого программного обеспечени€ возросла благодар€ высокой доступности и отказоустойчивости.

ƒл€ этого Cassandra перешла от концепции главных или именованных узлов к симметричным распределенным узлам P2P.  аждый узел в кластере имеет одно или несколько пространств ключей, содержащих данные.

¬ этом руководстве вы узнаете, что такое пространство ключей, его компоненты и как создавать, измен€ть и удал€ть пространства ключей.


„то такое пространство ключей в Cassandra?

ѕространство ключей (Keyspace) Ч это контейнер данных в Cassandra, похожий на базу данных в системах управлени€ рел€ционными базами данных (RDMBS).  ластер имеет одно пространство ключей дл€ каждого приложени€, столько, сколько необходимо, в зависимости от требований и использовани€ системы. ѕространства ключей Ч это совершенно отдельные объекты, и данные, которые они содержат, не св€заны друг с другом.

¬ кластере Cassandra пространство ключей Ч это самый внешний объект, который определ€ет, как данные реплицируютс€ на узлах. ѕространства ключей состо€т из основных объектов, называемых семействами столбцов (которые похожи на таблицы в —”Ѕƒ), строк, индексированных по ключам, типам данных, сведени€м о центре обработки данных, коэффициенту репликации и стратегии пространства ключей.


 омпоненты пространства ключей Cassandra

≈сть некоторые важные компоненты пространства ключей, которые необходимо указать при создании пространства ключей. Ёти компоненты:

—тратеги€ репликации

ѕри определении пространства ключей стратеги€ репликации указывает узлы, на которых будут размещены реплики. »спользу€ несколько узлов дл€ размещени€ реплик, вы достигаете отказоустойчивости, высокой доступности и надежности.

¬озможны две стратегии:

  • ѕроста€ стратеги€. »спользуйте эту стратегию дл€ сред тестировани€ и разработки, а также если вы не собираетесь развертывать кластер более чем в одном центре обработки данных.  оэффициент репликации примен€етс€ ко всему кластеру. –азделитель решает, где разместить первую реплику на узле. «атем другие реплики распредел€ютс€ по часовой стрелке на следующих узлах независимо от центра обработки данных или местоположени€.
  • —тратеги€ сетевой топологии. Ёта стратеги€ подходит, когда вам нужно развернуть свой кластер в нескольких центрах обработки данных. ќднако вы можете использовать его даже с одним центром обработки данных, чтобы впоследствии расширить его. —тратеги€ сетевой топологии работает как дл€ продакшена, так и дл€ разработки. ќна имеет тенденцию размещать реплики на узлах, которые не наход€тс€ в одной стойке, чтобы избежать проблем, когда одна стойка выходит из стро€. — помощью этого параметра каждый центр обработки данных может иметь отдельный коэффициент репликации.

‘актор репликации

Ётот параметр определ€ет, сколько реплик строки хранить на каждом узле.

ћинимум должно быть две реплики на центр обработки данных. Ёто означает, что сбой одного узла не вли€ет на работу группы репликации. ѕоэтому рекомендуетс€ установить три копии каждой строки на разных узлах дл€ достижени€ удовлетворительной отказоустойчивости.

Ёмпирическое правило заключаетс€ в том, чтобы коэффициент репликации оставалс€ таким же, как и количество узлов.


Ѕазовый синтаксис пространства ключей

¬ы можете создать пространство ключей с различными настройками репликации. Ќиже приведен основной синтаксис дл€ создани€ пространства ключей:

CREATE KEYSPACE keypsace_name WITH replication = {properties};

—войства (properties) включают в себ€ различные параметры, такие как стратеги€ репликации, коэффициент или долговременна€ запись.

ѕримечание.  оманды CQL заканчиваютс€ точкой с зап€той (;). ≈сли вы не используете точку с зап€той в конце запроса, система будет ждать дополнительного ввода.

—оздать пространство ключей с помощью Cqlsh

„тобы создать пространство ключей, запустите оболочку CQL:

cqlsh

«атем, следу€ базовому синтаксису, создайте пространство ключей с нужным именем и настройками репликации.

¬ этом случае мы создадим test_keyspace с SimpleStrategy и replication_factor 3:

CREATE KEYSPACE test_keyspace
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
Cassandra keyspace

»спользуйте приведенный выше пример, если вы не собираетесь расшир€тьс€ до нескольких центров обработки данных.  роме того, если у вас есть только один узел и вы используете Cassandra дл€ тестировани€, вы можете установить replication_factor равным 1.

ƒл€ производственных сред и нескольких центров обработки данных создайте пространство ключей со стратегией репликации сетевой топологии.

ƒл€ этого введите:

CREATE KEYSPACE keyspace_network_topology
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3};	
Cassandra keyspace

»м€ центра обработки данных по умолчанию Ч datacenter1. „тобы проверить им€ вашего центра обработки данных, закройте оболочку CQL и используйте nodetool:

nodetool status
Cassandra keyspace

≈сли у вас несколько центров обработки данных, перечислите их все в запросе с соответствующими коэффициентами репликации.

Ќапример, запрос дл€ двух центров обработки данных выгл€дит так:

CREATE KEYSPACE keyspace_network_topology
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3, 'datacenter2' : 3};

ѕроверить ключевое пространство

ѕоскольку в выводе нет ответа об успешном создании пространства ключей, используйте эту команду, чтобы убедитьс€, что пространство ключей находитс€ в списке:

DESCRIBE KEYSPACES;
Cassandra keyspace

—истема возвращает список всех доступных пространств ключей Cassandra. ћы выделили два пространства ключей, которые мы создали в приведенных выше примерах. ≈сть пара пространств ключей по умолчанию, которые поставл€ютс€ с установкой Cassandra.


ќтключить устойчивую запись (Durable Writes)

¬ Cassandra конфигураци€ durable_writes по умолчанию имеет значение true. ¬ы можете отключить его, но только дл€ NetworkTopologyStrategy. Ётот параметр сообщает Cassandra, следует ли ей использовать журнал фиксации дл€ внесени€ обновлений в выбранное пространство ключей.

 огда вы пытаетесь отключить durable_writes при создании пространства ключей с помощью SimpleStrategy, вы получаете предупреждение не делать этого. ѕричина в том, что вы можете потер€ть свои данные, если вы не синхронизировали данные из memtable в sstable, и ваш дата-центр выйдет из стро€.

„тобы отключить durable_writes при создании пространства ключей, введите этот запрос:

CREATE KEYSPACE keyspace_durwrites
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3}
AND DURABLE_WRITES = false;	

ѕроверка устойчивых операций записи

¬ы можете проверить запрос, который использовалс€ при создании пространства ключей, описав пространство ключей. “акже по€вл€етс€ часть durable_writes:

DESCRIBE keyspace_durwrites
Cassandra keyspace

„тобы проверить настройки durable_writes дл€ всех пространств ключей, запросите system_schema:

SELECT * FROM system_schema.keyspaces;

¬ выходных данных показаны все пространства ключей и их настройки, включа€ durable_writes.

Cassandra keyspace

»спользование пространства ключей

„тобы выбрать пространство ключей в Cassandra и выполнить над ним действи€, используйте ключевое слово USE.

—интаксис:

USE keyspace_name

Ќапример:

USE keyspace_durwrites;
Cassandra keyspace

ќболочка CQL переключаетс€ на указанное вами им€ пространства ключей. „тобы изменить текущее пространство ключей, используйте ту же команду с другим именем.

ѕримечание. ¬с€кий раз, когда вы создаете таблицу в Cassandra, вы начинаете с определени€ пространства ключей.

»зменить ключевое пространство

ѕосле создани€ пространства ключей вы можете изменить конфигурацию с помощью ключевого слова ALTER.

≈динственное, что вы не можете изменить, это им€ пространства ключей. ѕомимо этого, вы можете изменить стратегию репликации, коэффициент репликации и устойчивые записи.

„тобы изменить пространство ключей, следуйте тому же синтаксису, что и при его создании, но используйте ALTER вместо CREATE. »змените значени€, которые вы хотите.

Ќапример:

ALTER KEYSPACE keyspace_durwrites
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 2}
AND DURABLE_WRITES = true;	

„тобы убедитьс€, что изменени€ вступили в силу, используйте ключевое слово DESCRIBE:

Cassandra keyspace

Ќа изображении выше показана конфигураци€ пространства ключей до и после изменени€.


”далить ключевое пространство

≈сли вы отбросите ключевое пространство, оно будет удалено из системы.  лючевое слово DROP удал€ет из пространства ключей все семейства столбцов, а также индексы и типы данных.

„тобы удалить пространство ключей в Cassandra, используйте этот синтаксис:

DROP keyspace_name;

Ќапример:

DROP keyspace_durwrites;

„тобы убедитьс€, что вы удалили пространство ключей, снова используйте запрос DESCRIBE.


»тоги

¬ыполнив шаги, описанные в этом руководстве, вы сможете успешно создать пространство ключей в Cassandra. ѕримеры в этом руководстве показали вам, как создать пространство ключей дл€ разных сред и с разными настройками.

ћы также показали вам, как изменить и удалить ключевое пространство, если вам нужно внести какие-либо изменени€.


—кидки 50% в Merion Academy

¬ыбрать курс