Как спроектировать таблицу регистрации исключений, используя HyperTable, и получить к ней доступ через клиент Java?

Если у меня есть следующая схема таблицы для регистрации исключения (в стандартной схеме SQL):

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

Как бы я спроектировал то же самое в HyperTable (в частности, каков наилучший подход к эффективности)? И как бы я кодировал его с помощью клиента HyperTable Java?

1 ответ

Решение

Что такое идентификатор - это автоматически увеличиваемый уникальный идентификатор? Hypertable не имеет автоинкремента, но использует случайные GUID для уникальных идентификаторов, если вы не хотите указывать свой собственный идентификатор. Вот ссылка с дополнительной информацией: http://hypertable.com/documentation/developer_guide/

Я мог бы объединить Host и Port в один столбец ("hypertable.com:8080"), но это мое личное предпочтение.

Все остальное выглядит хорошо. Вы можете просто перевести это в оператор CREATE TABLE на HQL:

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/

Вот пример, который показывает, как использовать клиент Java. Это довольно просто: https://github.com/cruppstahl/hypertable/blob/v0.9.6/src/java/ThriftClient/org/hypertable/thrift/BasicClientTest.java

Другие вопросы по тегам