Мне нужно сохранить журналы ошибок в Google Bigtable. Каждый журнал принадлежит проекту, который представляет любой вид услуг. Необходимо поддерживать следующий запрос.
Получить все уникальные ошибки между заданной датой начала и окончания с числом их повторений . Порядок должен быть убывающим , чтобы на первом месте были последние ошибки. Например, есть три ошибки. Два из них похожи, они просто произошли в разное время. Соответствующий запрос должен вернуть две ошибки, в то время как одна из них имеет счетчик 2, чтобы указать, что его ошибка произошла дважды.
Каждая ошибка имеет отпечаток пальца, который представляет собой ха sh сообщения об ошибке и стека trace.
Альтернативы:
Теперь мне интересно, как спроектировать ключ строки для выполнения вышеупомянутого запроса.
a) Использование идентификатора проекта и отпечатка пальца .
reversed_projectID#fingerprint
Если возникнет новая ошибка, она проверит, существует ли подобная ошибка, и при необходимости увеличит ее счетчик. В противном случае он создает новую строку со счетчиком 1. С другой стороны, я не вижу, как можно обеспечить порядок убывания.
b) Хранение каждой ошибки в отдельной строке.
reversed_projectID#reversed_timestamp
Это решит проблему с нисходящим порядком, но не объединяет подобные ошибки. Если, например, кто-то хочет увидеть все уникальные ошибки для данного временного диапазона, и этот диапазон содержит, например, четыре уникальные ошибки, но каждая ошибка произошла 50 000 раз, мне нужно выполнить сканирование строк по 200 000 строк и объединить их в сервер.
У кого-нибудь есть идеи для возможного решения? Большое спасибо.