2014-02-18 3 views
1

Я уже несколько недель обдумываю документацию и видеоролики Cassandra на youtube.Модель данных Cassandra для корреляционных приложений

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

Система ведения журнала вращается вокруг веб-трафика HTTP. Мои источники журналов будут расширяться со временем, но пока они будут включать в себя журналы прокси, журналы приложений и некоторые другие системные журналы, которые включают имя хоста/IP и данные о событиях.

Мои корреляции будут вращаться вокруг исходных и целевых IP-адресов и имен хостов, доменных имен, геоинформации, метода http (GET/PUT/Connect) и некоторых других возможных корреляций вокруг запрашиваемого типа файла (например. jar .exe .pdf). Во всех этих случаях также будет важна корреляция времени.

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

Пример запроса 1: Покажите мне, где IP 10.0.0.1 был замечен в журналах с .jar расширением в URL в течение последних 24 часов или на прошлой неделе

Пример запроса 2: Показать все запросы PUT, идущие к домену xyz.com в течение последних 24 часов

Пример запроса 3: Показать все события журнала для источника хоста 192.168.1.1 из time01 через time02

Пример запроса 4: Покажите мне все сообщение между 10.0.0.1 и 192.168.1.1, которое произошло вчера.

Пример запроса 5: Сравнить все новые события против существующего списка доменов и IP-адресов и показать мне какие-либо новые события, содержащие эти IP-адреса и домены.

Я могу предоставить более подробную информацию в случае необходимости. Любое руководство будет полезно.

Спасибо!

+0

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

+0

Для каждого запроса найдите то, о чем вы спрашиваете: это ваш ключ раздела (первый столбец в первичном ключе). Затем выясните, по каким столбцам ваш запрос будет делать фрагмент (например: чтение соседних строк) - это ваши «между X и Y» или «в течение последнего X» или аналогичные. Эти столбцы должны быть вашими ключами кластеризации (столбцы 2+ PKey). Наконец, вам нужно будет дублировать свои данные на столько таблиц, сколько необходимо для поддержки всех ваших запросов. –

+0

Что касается корреляции и другого сложного анализа, вам, скорее всего, понадобится MapReduce для этого, только Cassandra не сможет эффективно решить эту проблему. –

ответ

0

Для запроса 1 вы можете указать IP-адрес и тип файла как составной и временной метки в качестве столбца кластеризации. Таким образом вы можете запросить IP-адрес с типом файла и временным диапазоном.

Для запроса 2, домена и метода (put, get, ...) в качестве составного ключа, timestamp в качестве столбца кластеризации вам может потребоваться добавить UUID или запросить идентификатор в качестве идентификатора кластера, чтобы сделать ваш составной первичный ключ уникальным.

Запрос 3, IP-качестве первичного ключа, столбец временной метки кластеризации, + UUID при необходимости

Запрос 4, и МПА IPB в качестве составного первичного ключа и временной метки в качестве столбца кластеризации. В этом случае, если связь осуществляется по направлениям, вам необходимо также сохранить IPB и IPA.

Query 5, вы должны сделать это в клиентской программе

Смежные вопросы