2010-07-19 4 views
1

Я думаю об использовании Кассандры для большого проекта данных. Данные будут получены из традиционного хранилища данных. Cassandra будет размещать данные, сформированные таким образом, чтобы мое приложение могло правильно его прочитать.Обрезка колонн в Кассандре

Я не совсем понимаю, как я обрезаю данные из Кассандры.

Например, я хочу подсчитать количество посещений, которые был указан конкретным IP-адресом на сайте за последние 24 часа. Я планирую генерировать эти данные каждый час, и я бы хотел сохранить 2 недели на IP-адрес. Моя структура столбцов выглядит так:

127.0.0.1: { 
    visitorsLast24Hours: { 
    1279554672: 30, 
    1279553072: 24, 
    etc... 
    } 
} 

Как удалить строки из столбца visitorsLast24Hours?

До сих пор, лучшее решение, которое я придумал это:

  1. Получить колонку я хочу работать с
  2. Прюн значения я больше не хочу, чтобы
  3. Исключить столбец из базы данных
  4. Re-вставить новый столбец отсеченной

Это похоже на плохой метод для работы с базой данных. Я предполагаю, что мои размеры данных будут баллонами, основываясь на способе хранения в Кассандре.

Есть ли более эффективный способ сделать это?

В настоящее время я работаю с phpcassa в качестве своего интерфейса к Кассандре.

Спасибо!

+0

Исправьте меня, если я ошибаюсь, но не все это указывает на то, что на самом деле существует много дублирования в хранилище и более сложное обновление для всех, чтобы ускорить выбор/получение данных? Афаик, это компромисс./* притесняет, чтобы призвать стать аргументацией о том, когда nosql может/должен использоваться */ – Wrikken

+0

Да, мне просто интересно, есть ли лучший способ, чем метод, который я придумал. В качестве альтернативы, я мог бы использовать чернослив меньшую частоту, чтобы обновления. Например, данные обновляются ежечасно, чернослив еженедельно или ежемесячно. –

ответ

1

На самом деле вам не нужно удалять и переписывать весь столбец. Предполагая, что вы используете SuperColumn здесь, вы можете удалить только указанный ключ из суперколонны (в данном случае - посетителиLast24Hours). Таким образом, вы пройдете определенные ключевые значения в суперколонне, которая старше вашего времени отсечения, и удалите каждый из них. С суперколонкой вам не нужно переписывать весь набор данных каждый раз, когда вы добавляете или удаляете подстроку. Предметы, представляющие интерес: http://wiki.apache.org/cassandra/API06 нарезка и удаление.