相关应用的Cassandra数据模型

时间:2014-02-18 16:45:04

标签: cassandra data-modeling

我已经在youtube上考虑了Cassandra的文档和视频了几个星期。

我正在实施日志存储和关联系统,我想使用Cassandra。我似乎无法围绕这种类型的应用程序的Cassandra数据模型。我无法找到这类应用程序的最佳数据模型的深度示例。

日志记录系统围绕HTTP Web流量。我的日志源会及时扩展,但现在它们将包括代理日志,应用程序日志以及包含主机名/ IP和事件数据的一些其他系统日志。

我的相关性将围绕源和目标IP地址以及主机名,域名,地理位置,http方法(GET / PUT / Connect)以及所请求的文件类型的一些其他可能的相关性(例如.jar) .exe .pdf)。在所有这些情况下,围绕时间的相关性也很重要。

我在很多地方都读过,Cassandra的数据建模是从考虑你将要运行的查询开始的。所以我在这里指出了几个例子。还有更多示例,但以下将是一个良好的开端,任何查询都将遵循类似的相关模式。

示例查询1: 告诉我在过去24小时或过去一周内在URL中带有.jar扩展名的日志中看到IP 10.0.0.1的位置

示例查询2: 向我展示过去24小时内访问域xyz.com的所有PUT请求

示例查询3: 显示源主机192.168.1.1从time01到time02的所有日志事件

示例查询4: 显示昨天发生的10.0.0.1和192.168.1.1之间的所有通信。

示例查询5: 将所有新事件与现有域和IP列表进行比较,并向我显示包含这些IP和域的任何新事件。

如果需要,我可以提供更多详细信息。任何指导都会有用。

谢谢!

1 个答案:

答案 0 :(得分:0)

对于查询1,您可以将IP地址和文件类型作为复合键,将时间戳作为聚类列。这样,您可以查询具有文件类型和时间戳范围的IP。

对于查询2,域和方法(put,get,...)作为复合键,时间戳作为群集列,您可能需要添加UUID或请求ID作为群集ID,以使复合主键唯一。

查询3,IP作为主键,时间戳聚类列,+ UUID(如果需要)

查询4,IPA和IPB作为复合主键,时间戳作为聚类列。 在这种情况下,如果通信是定向的,您还需要存储IPB和IPA。

查询5,您必须在客户端程序中执行此操作