2017-12-13 7 views
0

Bitte helfen, einige Vorzüge und Nachteile von Flatbuffers und CBOR Protokolle vorschlagen. Beide binären Formate behaupten, auf ihren Websites gut zu sein, aber ich bin nicht in der Lage, einige gute Unterschiede zwischen den beiden zu machen.Flatbuffers vs CBOR

Flatbuffers:

Vorteil:

  1. strikte Typisierung in FlatBuffer, Cap'n proto und anderen ähnlichen Lösungen als Hauptschlüsselpunkt für die Leistung gesehen, da keine zusätzliche Codierung/Decodierung notwendig ist.
  2. Das Datenmodell ermöglicht einfaches Versetzen typisierter Objekte mit kompakter Datenstruktur und schnellem Zugriff
  3. FlatBuffers benötigt keinen Parsing-/Entpackungsschritt zu einer sekundären Darstellung, bevor Sie auf Daten zugreifen können, die oft mit der Objektzuordnung verknüpft sind.

Nachteil:

  1. Neu und nicht wie CBOR standardisiert.

CBOR

Vorteil:

  1. erstellen und verarbeiten kann vollständig in Strom ohne zusätzliche Speicher
  2. Muß nicht vordefinieren jedes Schema, wie unsere Daten dynamisch und Variante ist
  3. Es ist ein offener internationaler Standard von der IETF macht es eine noch bessere Wahl als eine proprietäre.
  4. Es ist für wenig Speicher, nicht-Umwandlung, Strom-basierte Verarbeitung entwickelt, während auch Erweiterungen für andere Datentypen

Nachteil Bereitstellung:

  1. CBOR sagt, dass es das JSON-Modell folgt (also nicht streng typisierte Objekte)
  2. Es beginnt mit den gleichen Arten von Objekten (Strings, Ganzzahlen, Karten, etc.).

PS:
Es fühlt sich an wie Arten in CBOR Verwaltung wird die Leistung sein kostspielig im Vergleich zu flatbuffers, sondern als CBOR standardisiertes Protokoll ist, ich bin geneigt, es zu bevorzugen, wenn dieser Unterschied nicht sehr groß ist. Bitte lassen Sie mich wissen, welche von zwei Sie alle empfehlen und warum.

Antwort

0

Ich denke, Sie haben es schon ganz klar selbst geschrieben. Die Stärke von FlatBuffer ist der Zugriff auf die Daten ohne Analyse/Entpacken/Zuteilung, was in einigen Szenarien zu erheblichen Leistungsvorteilen führen kann. Aber wenn dir das egal ist, z.B. Protokollpuffer funktionieren möglicherweise genauso gut.

Starkes Tippen vs. dynamisches Tippen in Daten ist ebenfalls sehr wichtig. Ich würde das letztere nur verwenden, wenn ich generischen Datenspeicher ohne Einschränkungen im voraus haben wollte.

Btw, wenn aus irgendeinem Grund Sie dynamische Eingabe bevorzugen, sondern auch die Leistungsvorteile wie der Zugang im Ort zu haben, gibt es tatsächlich ein Format, das die beiden verbindet: https://google.github.io/flatbuffers/flexbuffers.html

FlatBuffers nicht „proprietär ". Es wurde möglicherweise bei Google entwickelt, ist aber Open Source und wird von vielen anderen Unternehmen verwendet.

1

Ich wählte CBOR für meine Website https://kwippe.com - wir verwenden es, um alle Grafiken und Schlagwortdaten als komprimierte Zeichenfolgen innerhalb einer sehr kleinen JSON-Struktur zu speichern, nur ein paar Attribute notwendig, um die Datei zu kategorisieren. Die Dateien sind also sehr klein und laden sich sehr schnell. Ich habe dies für über 30.000 SVG-Dateien verwendet, die ich vorher zu JSON konvertiert habe. Der gesamte JSON wird in eine Zeichenkette umgewandelt und über eine Zeichenkettenkomprimierungsbibliothek komprimiert und dann als Teil des kleineren JSON-Objekts gespeichert, das ich in CBOR kodiere.

Ich hatte sehr wenig Probleme mit diesem CBOR-System, und es war viel einfacher einzurichten als FlatBuffers und einige der anderen binären Lösungen, die ich betrachtete.

Verwandte Themen