Как спроектировать таблицу регистрации исключений, используя 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