如果我有以下表模式来记录异常(在标准SQL模式中):
Table: ExceptionLog
Columns: ID (Long),
ExceptionClass (String),
ExceptionMessage (String),
Host (String),
Port (Integer),
HttpHeader (String),
HttpPostBody (String),
HttpMethod (String)
我如何在HyperTable中设计相同的东西(具体来说,效率的最佳方法是什么)?而且,我将如何使用HyperTable Java客户端对其进行编码?
答案 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