2016-09-22 3 views
0

Was ist der Unterschied zwischen JSON und JSONB-Datentyp in PosgresSQL?Unterschied zwischen JSON und JSONB in ​​Postgres

  1. Wann sollte genau einer verwendet werden?
  2. Was ist Vor- oder Nachteile in Bezug auf andere?
+0

Eine andere Übersicht: http://StackOverflow.com/Questions/10560394/How-Do-Iquery-using-fields-inside-the-new-postgresql-json-datatype/10560761#10560761 –

Antwort

5

Dies ist erklären: https://www.citusdata.com/blog/2016/07/14/choosing-nosql-hstore-json-jsonb/

In den meisten Fällen JSONB ist wahrscheinlich, was Sie wollen, wenn für eine NoSQL, Schema-less, Datentyp suchen. Hstore und JSON können auch ihren Platz haben, aber es ist weniger üblich. Im weiteren Sinne passt JSONB nicht immer in jedes Datenmodell. Wo Sie normalisieren können gibt es Vorteile, aber wenn Sie haben ein Schema, das eine große Anzahl von optionalen Spalten hat (wie mit Ereignisdaten) oder das Schema unterscheidet sich basierend auf Mieter-ID dann JSONB kann eine gute Passform sein. In der Regel wollen Sie:

JSONB - In most cases 
JSON - If you’re just processing logs, don’t often need to query, and use as more of an audit trail 
hstore - Can work fine for text based key-value looks, but in general JSONB can still work great here 
4

json ist im Grunde ein Klecks, die JSON-Daten im Rohformat speichert, sogar unbedeutende Dinge wie Leerzeichen zu bewahren, die Reihenfolge der Schlüssel in Objekte oder auch Schlüssel in Objekte duplizieren. Es bietet die Möglichkeit, einige grundlegende JSON-Operationen auszuführen, wie das Extrahieren des Werts, der mit einem Schlüssel in einem Objekt verknüpft ist, auch wenn es langsam ist, da das JSON-Blob jedes Mal analysiert werden muss. Es überprüft außerdem jeden Wert, um zu überprüfen, ob es sich um einen gültigen JSON-Wert handelt. jsonb speichert JSON-Daten in einem benutzerdefinierten Format, das für bestimmte Vorgänge optimiert ist, z. B. das Extrahieren des Wertes, der mit einem Schlüssel in einem Objekt verknüpft ist (d. H. JSON wird nicht analysiert, es wird nicht linear gesucht). Darüber hinaus unterstützt jsonb mehr Operationen, als Verkettung von Objekten oder Festlegen eines Wertes tief in einem Objekt.

Im Allgemeinen verwende ich json nur, wenn ich weiß, dass ich keine JSON-Operationen tun werde oder nur gelegentlich mache. Für alle anderen Fälle verwende ich jsonb. Beachten Sie, dass für den ersten Fall text es auch eine vollkommen gültige Option ist, besonders wenn Sie nicht an der Validierung interessiert sind, die json tut (z. B. weil Sie der Quelle der Daten vertrauen).

Verwandte Themen