Я уже несколько недель обдумываю документацию и видеоролики 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-адреса и домены.
Я могу предоставить более подробную информацию в случае необходимости. Любое руководство будет полезно.
Спасибо!
Я просто искал указатели и руководства, как я уже говорил в моем последнем предложении. Даже просто ссылка на аналогичный проект или реализацию была бы большой помощью. – user3324184
Для каждого запроса найдите то, о чем вы спрашиваете: это ваш ключ раздела (первый столбец в первичном ключе). Затем выясните, по каким столбцам ваш запрос будет делать фрагмент (например: чтение соседних строк) - это ваши «между X и Y» или «в течение последнего X» или аналогичные. Эти столбцы должны быть вашими ключами кластеризации (столбцы 2+ PKey). Наконец, вам нужно будет дублировать свои данные на столько таблиц, сколько необходимо для поддержки всех ваших запросов. –
Что касается корреляции и другого сложного анализа, вам, скорее всего, понадобится MapReduce для этого, только Cassandra не сможет эффективно решить эту проблему. –