Google Analytics

понедельник, 20 сентября 2010 г.

Практическое знакомство с Cassandra: Часть 1 Модель данных и установка

Cassandra - это высоко-масштабируемое, согласуемое(автоматически восстанавливающее согласованность данных), распределенное, основанное на структуре ключ-значение хранилище. Cassandra предлагает вместе технологии распределенных систем Dynamo и модель данных Google BigTable.
Это первая из трех частей по практическому знакомству с NoSQL распределенной базой данных Cassandra. Тема NoSQL баз данных приобрела большую популярность за последние пару лет и благодаря открытым проектам стала доступна многим разработчикам, а не только элитарному кругу посвященных. NoSQL технологии достаточно молоды, по крайне мере в области "массового" применения, что только подогревает интерес к изучению. Сразу оговорюсь, это не серебряные пули, которые решат все проблемы. Это другой взгляд на их решение со своими недостатками. Для знакомство с Cassandra мы реализуем учебное приложение MyBlog на Java. В качестве операционной системы я использую GNU/Linux Debian Squeeze. Функционал приложения позволит создавать пользователей и помещать посты, а также просматривать созданные данные. С целью уменьшения внешних зависимостей приложение будет реализовано в консольном виде. Все повествование пойдет на основе версии Cassandra 0.7.0 beta1.

Модель данных Cassandra

Column (колонка) - это наименьшая единица данных. Это tuple (кортеж), который содержит name (название), value (значение) и timestamp (временная метка). Все значения устанавливаются клиентом, включая timestamp. Это означает, что часы на клиентах должны быть синхронизированы, потому как timestamp используется для разрешения конфликтов изменения данных.
Column Family (семейство колонок) - это контейнер для колонок, аналог таблицы из реляционных систем. В column family устанавливается механизм сортировки для порядка в котором хранятся данные. Из коробки доступны следующие механизмы сортировки AsciiType, BytesType, LexicalUUIDType, LongType, TimeUUIDType, и UTF8Type.
Row (ряд) - это key(ключ) и связанные с ним наборы column. В Cassandra, каждый column family сохраняется в отдельном файле и этот файл отсортирован в row порядке. Связанные column, это те, к которым вы обращаетесь вместе, следует сохранять в том же самом column family. 
Keyspace (пространcтво ключей) - это первое измерение Cassandra хэша и оно содержит column family. Keyspace это грубо тоже самое, что и схема в РСУБД.
Super Column (супер колонка) - это колонка контейнер, которая содержит другие колонки.

Установка и конфигурирование

Целью статьи не является детальное рассмотрение установки и конфигурирования, поэтому просто быстро пробежимся по необходимым шагам для минимального запуска. Скачиваем архив с 0.7 бинарной версией отсюда http://cassandra.apache.org/download/. Распаковываем куда хотим. Создаем директории для данных и логов /var/lib/cassandra/data, /var/lib/cassandra/commitlog и /var/log/cassandra. Заходим в директорию с распакованным содержимым архива в поддиректорию ./bin. Можно изменить конфигурацию прослушиваемых интерфейсов в файле ./conf/cassandra.yaml параметр listen_address для передачи данных в кластере и Thrift rpc интерфейс rpc_address. Рядом есть параметры для указания портов. Теперь можно запускать ./cassandra -f, ключ служит для того, чтобы процесс не отключался от консоли. Это удобный режим для изучения.
Для разработки нам также понадобиться Thrift. Это framework для масштабируемой кросс-языковой разработки сервисов. Он включает в себя библиотеку и генератор кода. Код генерируется на основе конфигурационного файла. Этот framework обеспечивает бесшовное взаимодействие между приложениями на разных языках. Скачать его нужно из репозитория subversion.
svn co -r 959516 http://svn.apache.org/repos/asf/incubator/thrift/trunk thrift
В данном случае мы берем исходники 959516 ревизии, так как именно с ней поставляется наша версия Cassandra. Далее необходимо собрать исходники, все как обычно и никаких проблем.

Дополнительные источники


Комментариев нет:

Отправить комментарий