--
You received this message because you are subscribed to the Google Groups "FlatBuffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flatbuffers...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Facebook is using it now to make their Android application
https://code.facebook.com/posts/872547912839369/improving-facebook-s-performance-on-android-with-flatbuffers/
Facebook is using it now to make their Android application
--
srinisingha: FlatBuffers is really designed for strongly typed (schema) use cases. Though we have some reflection functionality, it is clumsy compared to a system that was designed for it. The object API does not improve this situation.If you want to store any data (schema-less), you may be better off with a different serialization solution for the moment. I have been working on a schema-less version of FlatBuffers, but that may take a while longer to be ready.agallego: currently that is not possible, but I agree it should be possible to substitute your own data-types. Whatever string you replace it with would need to correspond to the STL API though.
You can design a schema something like this:
struct Numeric {
value : double;
}
struct Boolean {
value : bool;
}
table Entry {
columnName : string;
text : string;
number : Numeric;
boolean : Boolean;
}
table Row {
entry : [Entry];
}
table Column {
rows : [Row];
}
table DBTable {
name : string;
columns : [Row];
}
root_type DBTable;
I specified only one Numeric type but you can do multiple. The scalars has to be wrapped in struct so that you can get NULL value.
Don't worry about Entry having to big. The vTables will be shared and the data part of the entry will only consist of the actual value, so the overhead is minimal if you have a lot of data.
The most incinviniet thing you would have to do is on readign of FtalBuffers you will have to null check every entry and set it on the first not null value. You coud also introduce a type enum and add type property to Entry table. This way you will not lose the type information if the entry is actually NULL.
Hope I could help,
Maxim
To unsubscribe from this group and stop receiving emails from it, send an email to flatbuffers+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to flatbuffers+unsubscribe@googlegroups.com.
Yes, feel free to move this to a new thread :)
We use fb in our Industrial Control and Automation Products. Our company makes custom Industrial Gateways to our Industrial Cloud and a few other software/hardware/cloud products. fb turned out to be our missing piece, we had a mess of different techs working for us, from JSON to proto and custom formats for serial communications. We have standardized on fb for our protocols where we aren't tying to a third party protocol, and aren't looking back.
We are even working on an open source release of our internal messaging library https://github.com/t4i/IndisMQ, that is based on fb. Still in its infancy as a pre-alpha WIP, but its our way of contributing back, since we have enjoyed this project so much. Some people will disagree with our take on messaging, but it fits us perfectly, and wouldn't have worked very well w/o fb.
Picking up FB for our Messaging system allowed us to have huge increases in our throughput on minimal hardware (picture sending millisecond sensor data, now picture thousands of sensors). Our server infrastructure is micro-service based almost entirely in GO and the type safety has made a massive improvement in our reliability.We appreciate the project and the work you (Wouter) and the rest of community put into it.Looking forward to the 'schemaless' code as well (could I propose Dynamic Schema/Fixed Schema rather than schemaless :) ) It will be a welcome addition to our messaging library.
Thinking about it, why does it need another name…why not just call it a flatbuffer non-scaler type “map”. You kind of explain it that way in the docs you made
And generate the methods for creating a root map along with the other methods.
This would make sense when including it in another non-scaler type
table Monster{
meta:map
name:string
}
Could also allow for creation of a typed map for some type checking
table Monster{
meta:map[string,string]
name:string
}
Then I think its easier to integrate into the ecosystem…just a thought
--