Понимание философии Cassandra

Я пытаюсь познакомиться с Apache Cassandra для конкретной работы PoC. После прочтения различных статей в сети, опробования различных доступных библиотек/клиентов, у меня возникает конкретный вопрос.

Первоначальная причина, по которой мы подумали о Cassandra, заключалась в том, что мы хотели «по-настоящему» распределенное хранилище данных. Из моего понимания «распределения» оно в конечном итоге сводится к некоему «ключу-значению» и некоему «непротиворечивому хэшированию», если я могу выразиться суперкратко!

Таким образом, хранилище ключей и значений, такое как Cassandra, идеально подходит. Однако, когда я пытаюсь найти статьи, чтобы понять моделирование данных в Cassandra, почти все они объясняют/примеры использования CQL. Кроме того, официальное заявление, по-видимому, заключается в том, что CQL должен быть "де-юре" способом изучения Cassandra. Почему такой толчок, чтобы соответствовать SQL?

Мне не нужна реляционная модель, поэтому я и пришел к Cassandra. Я ценю его основные концепции, такие как разделенные ключи/столбцы кластеризации и т. д., и я хотел бы понять, как это реализовано под капотом CQL.

Спросите у экспертов по Cassandra, действительно ли я неудачник как пользователь Cassandra? Должен ли я действительно забыть о значении ключа и просто попытаться подогнать CQL (если это возможно) к моему варианту использования?


person sutanu dalui    schedule 13.02.2015    source источник
comment
Прочтите статью о динамо-машине Amazon.   -  person Don Branson    schedule 13.02.2015


Ответы (1)


CQL – это больше, чем "сахар", хотя изначально он был создан для поощрения людей к переходу из мира SQL. Мир до CQL был беспорядком, десятки клиентов, написанных по-разному, все использовали протокол Thrift — но, в отличие от мира SQL, клиент Cassandra совершенствуется каждый день, добавляя новые функции в каждый выпуск — и очень часто каждое из этих улучшений требовало новая «клиентская версия», способная обрабатывать новый тип сгенерированных результатов (например, счетчики или коллекции) или новый синтаксис для использования новой функции.

Я рад, что у меня была возможность работать более 3 лет с клиентом Thrift (Pelops) — это помогло мне многое понять в мире кассандры, структурах данных и т. д. — но теперь Я бы никогда не вернулся к такому клиенту (хотя это было действительно здорово!).

В начале Кассандра была совершенно другой, в частности была/имела

  • «Без схемы» означает, что каждая строка CF может содержать разное количество столбцов, и нет места, где эти столбцы должны были быть объявлены. Это привело к катастрофе многих проектов, возможность добавления новых столбцов во время выполнения приводила к ситуации, когда вы не знали, что можно найти в таблице.

  • «супер-столбцы» — устаревшая структура данных, замененная широкими строками.

Теперь, когда модель данных стабильна, синтаксис CQL стал более удобочитаемым, и теперь вы можете перейти на любой проект, который вам не так знаком, с возможностью понять, как приложение общается с БД, благодаря уникальному синтаксису — больше — каждый новый За выпуском Cassandra сразу же следует новая версия клиента.

CQL не является «подмножеством» SQL, как многие пишут: в некотором роде это «надмножество», поскольку оно способно обрабатывать различные структуры данных, расширяющие базовый язык.

Мой ответ таков: мыслите по схеме "ключ-значение", но используйте ТОЛЬКО CQL

ХТХ, Карло

person Carlo Bertuccini    schedule 13.02.2015
comment
Спасибо за ваш ответ. Я также оценил Пелопса и Гектора, а затем снова мне «пришлось» использовать драйвер datastax. Так что я действительно был разочарован тем, что не смог выполнить все мои требования, используя одну библиотеку. Для нашего варианта использования нам нужны как модели с полной схемой, так и модели без схемы. У меня сложилось впечатление, что какая-то библиотека должна позволять мне делать и то, и другое, или, вернее, все, что я хочу! (в конце концов, механизм хранения внизу одинаков). Что-то вроде того, что я хотел бы создать семейство столбцов из CQLSH, используя составные столбцы, и запросить его из приложения с помощью API-интерфейса slicepredicate. - person sutanu dalui; 16.02.2015
comment
Вы можете получить то, что вам нужно, со старой версией Cassandra (1.2? 1.1?). Вы можете добиться чего-то очень похожего на модель без схемы, используя коллекции, как я объяснил в этом посте: stackoverflow.com/questions/25098451 / -- Но я бы не рекомендовал широко использовать этот шаблон - person Carlo Bertuccini; 16.02.2015