Статьи

Привет Кассандра

Недавно мой коллега рассказал мне о нескольких преимуществах Кассандры, и я решил попробовать. Apache Cassandra описана в разделе «Краткое введение в Apache Cassandra» как «одна из самых популярных на сегодняшний день баз данных NoSQL». На главной странице Apache Cassandra говорится, что «база данных Apache Cassandra — это правильный выбор, когда вам нужна масштабируемость и высокая доступность без ущерба для производительности». Cassandra используется такими компаниями , как eBay , Netflix , Adobe , Reddit , Instagram и Twitter . Этот пост представляет собой краткое изложение шагов для начала работы с Cassandra .

Apache Cassandra можно загрузить с главной веб-страницы Apache Cassandra . На странице загрузки указано, что «последняя стабильная версия Apache Cassandra — 2.0.7 (выпущена 2014-04-18)», и именно эту версию я буду обсуждать и использовать в этом посте.

Для этого поста я скачал и установил DataStax Community Edition с сайта Planet Cassandra Downloads . В состав DataStax Community 2.0.7 входит «Самая стабильная и рекомендуемая версия Apache Cassandra для производства (2.0.7)». Доступны загрузки DataStax Community Edition для Mac OS X , Microsoft Windows и нескольких версий Linux .

На следующем снимке экрана показан список каталогов для каталога «bin» Apache Cassandra, включенного в установку DataStax Community Edition.

cassandaBinDirInDataStaxCommunityEditionInstallation

Из этого каталога «bin» сервер Cassandra можно запустить, просто запустив соответствующий исполняемый файл. В случае этого единственного компьютера с Windows этой командой является cassandra.bat и этот шаг показан на следующем снимке экрана.

startingCassandraWithCanssandraBat

Интерактивный инструмент командной строки cqlsh также находится в подкаталоге «bin» Apache Cassandra. Этот инструмент похож на SQL * Plus для баз данных Oracle , mysql для баз данных MySQL и psql для PostgreSQL . Это позволяет вводить различные операторы CQL ( Cassandra Query Language ), такие как вставка новых данных и запрос данных. Запуск cqshl из командной строки на компьютере с Windows показан на следующем снимке экрана.

cqlshStartingAndHelp

Есть несколько полезных наблюдений, которые можно сделать из предыдущего изображения. Как видно из результатов запуска cqlsh , эта версия Apache Cassandra — 2.0.7, эта версия cqlsh — 4.1.1, а соответствующая спецификация CQL — 3.1.1 . Непосредственно предыдущий снимок экрана также демонстрирует помощь, предоставленную командой «HELP». Мы видим, что есть несколько «документированных команд оболочки», а также еще больше «разделов справки по CQL».

Предыдущий снимок экрана продемонстрировал, что команда «help» в cqlsh перечисляет отдельные разделы, по которым команда help может быть специально запущена. Например, следующий снимок экрана демонстрирует вывод запущенных «типов справки» в cqlsh.

cqlsh_helpTypes

В этом снимке экрана мы видим типы данных CQL , которые поддерживаются в cqlsh, такие как ascii , text / varchar , decimal , int , double , timestamp , list , set и map .

Пространства клавиш в Кассандре

Пространства ключей важны в Кассандре. Хотя этот пост посвящен Cassandra 2.0, документация Cassandra 1.0 хорошо объясняет пространства ключей в Cassandra: «В Cassandra пространство ключей является контейнером для данных вашего приложения, аналогично схеме в реляционной базе данных. Пространства ключей используются для группировки семейств столбцов. Как правило, кластер имеет одно пространство ключей на приложение ». В этой документации объясняется, что пространства ключей обычно используются для группировки семейств столбцов по стратегии репликации. На следующем cqlsh экрана показано создание пространства cqlsh в cqlsh и список доступных пространств ключей.

creatingCassandraKeyspace

Последний снимок экрана включал пример использования команды SELECT * FROM system.schema_keyspaces; чтобы увидеть доступные пространства клавиш. Когда кто-то просто хочет получить список имен доступных пространств клавиш без всех других деталей, легко использовать пространства клавиш desc, как показано на следующем снимке экрана.

descCassandraKeyspaces

Создание семейства столбцов («Таблица»)

После создания пространства ключей можно создать семейство столбцов (или таблицу). Следующий снимок экрана демонстрирует использование только что созданного movies_keyspace с use movies_keyspace; и затем показывает использование команды SOURCE cqlsh (аналогично использованию @ в SQL * Plus) для запуска внешнего файла для создания таблицы (семейства столбцов). Снимок экрана демонстрирует список доступных таблиц с помощью команды desc tables и список конкретных деталей данной таблицы (в данном случае MOVIES) с помощью команды desc table movies .

creatingMovieTableViaSourceInCassandra

Приведенный выше снимок экрана демонстрирует запуск внешнего файла с именем createMovie.cql с помощью команды SOURCE. Листинг кода для файла createMovie.cql показан ниже.

1
2
3
4
5
6
7
CREATE TABLE movies
(
   title varchar,
   year int,
   description varchar,
   PRIMARY KEY (title, year)
);

Вставка данных и запрос из семейства столбцов

На следующем снимке экрана показано, как вставить данные во вновь созданные столбцы семейства / таблицы [ insert into movies_keyspace.movies (title, year, description) values ('Raiders of the Lost Ark', 1981, 'First of Indiana Jones movies.'); ]. На рисунке также показано, как выполнить запрос к семейству / таблице столбцов, чтобы просмотреть их содержимое [ select * from movies ].

insertingAndQueryingDataMoviesCassandra

Кассандра не является реляционной базой данных

Рассмотрение только что показанных операторов языка Cassandra Query Language (CQL) может привести к тому, что кто-то поверит, что Cassandra — это реляционная база данных. Однако CQL — это реляционная функция, добавленная в Cassandra 2.0, предназначенная для того, чтобы помочь людям с опытом работы с SQL быстрее освоить Cassandra. Точно так же триггеры добавляются в 2.0 / 2.1 . Несмотря на наличие этих функций Cassandra, предназначенных для облегчения использования Cassandra для пользователей реляционной базы данных, между Cassandra и реляционной базой данных есть существенные различия.

Модель данных Cassandra — это страница в документации Apache Cassandra 1.0, которая описывает некоторые ключевые различия между Cassandra и реляционными базами данных. Они включают:

  • «Cassandra не устанавливает взаимосвязи между семействами столбцов, как реляционные базы данных между таблицами»
    • В Кассандре нет внешних ключей, и в Кассандре нет «присоединения».
    • Денормализация не является позорной вещью в Кассандре и на самом деле приветствуется в определенной степени.
  • Моделирование «таблицы» (семейства столбцов) Кассандры должно выполняться на основе ожидаемых запросов.

Вывод

Я только начал мокнуть от Кассандры, но с нетерпением жду, чтобы узнать больше об этом. Этот пост был посвящен некоторым основам приобретения и использования Cassandra. Можно многое узнать о Cassandra и некоторых «более глубоких» темах, которые действительно необходимо понять, чтобы по-настоящему оценить Cassandra, включая архитектуру Cassandraздесь ), моделирование данных Cassandraздесь ), а также сильные и слабые стороны Cassandra .

Ссылка: Здравствуйте Cassandra от нашего партнера JCG Дастина Маркса в блоге Inspired by Actual Events .