如何使用HyperTable设计异常日志记录表并通过Java客户端访问它?

时间:2012-09-09 16:58:12

标签: java nosql hypertable

如果我有以下表模式来记录异常(在标准SQL模式中):

Table: ExceptionLog
Columns: ID (Long), 
         ExceptionClass (String),      
         ExceptionMessage (String), 
         Host (String), 
         Port (Integer), 
         HttpHeader (String), 
         HttpPostBody (String), 
         HttpMethod (String)

我如何在HyperTable中设计相同的东西(具体来说,效率的最佳方法是什么)?而且,我将如何使用HyperTable Java客户端对其进行编码?

1 个答案:

答案 0 :(得分:1)

什么是ID - 它是一个自动递增的唯一ID吗? Hypertable没有自动增量,但如果您不想提供自己的ID,则使用随机GUID作为唯一ID。这是一个包含更多信息的链接: http://hypertable.com/documentation/developer_guide/#unique-cells

我可能会将Host和Port合并为一个列(“hypertable.com:8080”),但这是我个人的偏好。

其他一切看起来都不错。您只需将其转换为HQL中的CREATE TABLE语句:

CREATE TABLE ExceptionLog (ID, ExceptionClass, ExceptionMessage, Host, Port, HttpHeader, HttpPostBody, HttpMethod);

如果你有频繁的查询,例如

,你可能还想要二级索引,即在ExceptionClass上
SELECT ExceptionClass FROM ExceptionLog WHERE ExceptionClass = "Segfault";

此处记录了二级指数:http://hypertable.com/documentation/developer_guide/#secondary-indices

这是一个展示如何使用Java客户端的示例。这很简单:https://github.com/cruppstahl/hypertable/blob/v0.9.6/src/java/ThriftClient/org/hypertable/thrift/BasicClientTest.java