Когда выбрать Cassandra вместо решения SQL / Semantic Store? - PullRequest
3 голосов
/ 13 января 2011

У меня 30-40 ГБ данных и 3 машины для разработчиков (Core Duo i4, 3 ГБ). Данные представляют собой набор графоподобных структур, и у меня есть запросы, которые пересекают графы. Существуют ли рекомендации, которые могут помочь мне принять решение об использовании Cassandra или классического решения, например, SQL или Semantic Store? Мой текущий план состоит в том, чтобы настроить Cassandra и посмотреть, как он работает, но я хотел бы узнать больше перед началом установки.

1 Ответ

1 голос
/ 11 февраля 2011

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

Для структуры на основе графика(при условии упрощенной схемы «одна дуга на строку») вам также нужны индексы столбцов, поскольку, если вы хотите пройти по графику, вы хотите иметь возможность начать с определенного узла A и найти все дуги, которые идут от этого узла (в предположении ориентированного графика), то вам нужно будет выполнить сканирование строк всего набора данных, так как нет встроенной функциональности, например, дать мне строки, которые имеют A в определенном столбце.

Для достижениядля этого вам необходимо эффективно спроектировать макет данных для Cassandra, который дает вам инвертированный индекс.Это несколько сложно и требует от вас заранее знать тип запросов, на которые вы хотите ответить - ответы на новые типы запросов на более поздних данных могут быть очень трудными или невозможными, если вы не проектируете хорошо.Эти слайды демонстрируют идею, но я надеюсь, что она проясняет, что вам действительно нужно создавать собственные индексы.

Для структур Graph, которые можно разложить на тройки, рассмотрите хранилище RDF - для болеесложные структуры, то рассмотреть полную базу данных График.Если вы действительно хотите использовать NoSQL, вы, вероятно, можете построить что-то поверх базы данных документов, поскольку они имеют тенденцию к гораздо лучшему индексированию, но опять же вам придется тщательно подумать о том, как вы храните свои данные.

...