Каков наилучший способ представления табличных данных в плоском буфере?

У меня есть табличные данные (заголовок, строки/столбцы данных). Можно предположить, что это в формате csv для целей представления.

  • В качестве меток столбцов есть строка заголовка, которая может не всегда быть в одной и той же последовательности. Но для каждого имени метки тип данных известен заранее.
  • Количество столбцов фиксировано, каждый столбец имеет различный тип данных.
  • Количество строк переменное

Я новичок в Flatbuffers, поэтому хочу узнать, как лучше всего представлять табличные данные во Flatbuffers.


person JC_    schedule 30.07.2018    source источник


Ответы (1)


Что-то вроде этого:

table Row {
  col1:int;  // These can each be their own data type.
  col2:string;
  ..
  // Fixed number of columns.
}

table Root {
  rows:[Row];  // vector of rows, variable length.
}

root_type Root;

Обратите внимание, что в этом случае использование FlatBuffers table сильно отличается от таблицы базы данных.

person Aardappel    schedule 30.07.2018
comment
Спасибо @Aardappel. Для table да, я понимаю, поэтому я использую tabular для различения. Возможна ли новая схема, в которой вместо table Row {...} я смогу использовать table/struct Col {...}, потому что в этом случае все значения будут одного типа данных и будут просто скалярными. Даст ли это изменение какое-либо возможное преимущество в размере буфера? - person JC_; 30.07.2018
comment
Да, в качестве альтернативы вы можете сделать следующее: table Root { col1:[int]; col2:[string]; } Хотя преимущества размера, как правило, минимальны, поэтому я бы выбрал то, что легче обрабатывать или имеет больше смысла. - person Aardappel; 31.07.2018