Я думаю, что Кассандре не нравится dot
в column_name
, следующие работы
[default@stackoverflow] create column family ArticleBackLinks with
... comparator = UTF8Type and
... default_validation_class = UTF8Type and
... column_metadata =
... [
... {column_name: 'www.arstechnica.com', validation_class: UTF8Type},
... {column_name: 'www.apple.com', validation_class:UTF8Type},
... {column_name: 'www.cnn.com', validation_class: UTF8Type},
... {column_name: 'www.stackoverflow.com', validation_class: UTF8Type},
... {column_name: 'www.reddit.com', validation_class: UTF8Type}
... ];
881b31f0-bc64-11e0-0000-242d50cf1ff7
Waiting for schema agreement...
... schemas agree across the cluster
Кстати, поскольку вы используете Cassandra 0.8.2, вы должны использовать CQL
Итак, подобное утверждение будет полезно в будущем
UPDATE <COLUMN FAMILY> [USING <CONSISTENCY>
[AND TIMESTAMP <timestamp>] [AND TTL <timeToLive>]]
SET name1 = value1, name2 = value2 WHERE <KEY> = keyname;
См. это
обновлено: добавлено больше мыслей в ответ на комментарий
Хорошая идея - хранить сгруппированную информацию в одном месте. Это добавляет эффективности, которую обеспечивает Кассандра.
Например, ваш случай может иметь category
как RowKey, а URL будут column_name
. Таким образом, на вашем внешнем интерфейсе вы можете быстро отобразить классифицированное представление, потому что вы знаете, что arstechnicia
и stackoverflow
попадают в группу technology
, которая является rowKey. Это добавляет немного дополнительной работы при вставке данных.
Я использую Cassandra 0.6.x, поэтому, к сожалению, я не могу много рассказать о вторичном индексе, который поддерживает Cassandra 0.7.0+. Но предположительно, вы можете достичь того, что объяснялось выше, добавив столбец, скажем, category
, в основной CF, индекс которого содержится в ArticleBackLink
, и просто запросите с использованием CQL select... where...
.
.
Возможно, вы изучите вторичный индекс, который может избавить от необходимости иметь новый «индекс CF». Вы можете посмотреть на них:
- Вторичный индекс в Кассандре 0,7
- Cassandra Wiki FAQ
Q: Есть ли разница между созданием вторичного индекса и созданием CF "index" вручную, такого как "users_by_country"?
A: Да. Во-первых, при создании собственного индекса узел может индексировать данные, хранящиеся в другом узле. Во-вторых, обновления индекса и данных не являются атомарными.