sql >> Database teknologi >  >> RDS >> PostgreSQL

Et skinnefelt, der er en række JSON-objekter?

Når du bruger postgres, er du heldig:postgres har en indfødt json type. Dette er langt bedre end at bruge serialize til at gemme dataene som en form for kodet streng, fordi postgres har en rig familie af operatører, der giver dig mulighed for at forespørge mod disse json-data.

Hvis du bruger postgres 9.4, kan du også bruge jsonb-typen. Dette er generelt bedre, da det gemmer en behandlet version af dataene (dvs. det behøver ikke at blive ved med at reparere dataene igen og igen), og det tillader indekser.

Rails understøtter dette direkte (se her ), skal du blot tilføje en kolonne af typen json(b). Hvis din migrering indeholder

create_table :damages do |t|
  t.string :description
  t.jsonb :damage_points
end

derefter

Damage.create(damage_points:  [{left: 40, top: 99}, {left: 100, top: 35}])

ville oprette en række med skadespunkters datalager som json. Det eneste du skal være opmærksom på er, at selvom dine inputdata har symboler som nøgler i hasherne, vil du altid få strenge tilbage som nøgler, når du henter fra databasen.



  1. MySQL - Skift feltværdi efter X minutters inaktivitet

  2. Hvordan laver man Qt mysql-driver i windows?

  3. Hvor mange tegn i varchar(max)?

  4. Hvad er den bedste måde at kopiere et undersæt af en tabels rækker fra en database til en anden i Postgres?