2014-03-10 1 views
0

Я хочу хранить большое количество данных в формате protobuf, в котором есть параметр отметки времени. И я хочу получить данные на основе значения метки времени. Спасибо.Как получить данные протобуфа rendomly?

+0

Что вы пробовали? Что не так с созданием обычного сообщения с записью с меткой времени внутри? – dutt

+0

@dutt Я хочу знать, как читать данные из .pb-файла на основе требуемого значения метки времени? – kani

+0

Ах, вы уже знаете, как его хранить? Самый простой способ - сделать что-то вроде поля сообщений {string foo = 1; строка timestamp = 2; } данные сообщения {repeat field = 1; }, а затем просто де-сериализуйте его, как обычно, и прокрутите поля до тех пор, пока вы не нажмете свою метку времени. Если вам нужен быстрый поиск, чем O (n), я думаю, вам нужно использовать другой формат, поддерживающий произвольный доступ в файле. – dutt

ответ

1

Protobuf - это формат последовательного доступа. Невозможно перейти в середину сообщения, ищущего данные; вы должны разобрать все это.

Некоторые опции:

  • DEViSE формат кадрирования, который позволяет разбить хранилищу на множество мелких кусков, каждый из которых представляет собой отдельное сообщение Protobuf. Это довольно большой проект.
  • Используйте SQLite или даже фактическую базу данных.
  • Использовать случайный формат, например, Cap'n Proto. (Раскрытие информации: Я являюсь автором Cap'n Proto, а также Protobufs v2 (релиз с открытым исходным кодом Google).
Смежные вопросы