sql >> Databasteknik >  >> RDS >> PostgreSQL

Ett rälsfält som är en array av JSON-objekt?

När du använder postgres har du tur:postgres har en inbyggd json typ. Det här är mycket bättre än att använda serialisera för att lagra data som någon form av kodad sträng, eftersom postgres har en rik familj av operatörer som låter dig fråga efter den json-datan.

Om du använder postgres 9.4 kan du också använda jsonb-typen. Detta är generellt sett bättre eftersom det lagrar en bearbetad version av data (dvs. det behöver inte fortsätta reparera data om och om igen) och det tillåter index.

Rails stöder detta direkt (se här ), behöver du bara lägga till en kolumn av typen json(b). Om din migrering innehåller

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

sedan

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

skulle skapa en rad med skadepoängdatalagret som json. Det enda du bör se upp med är att även om din indata har symboler som nycklar i hasharna, kommer du alltid att få tillbaka strängar som nycklar när du hämtar från databasen.



  1. Mysql::Fel:Dubblett inmatning

  2. Gruppera efter 2 fält kombination och ordna sedan efter summan av varje grupp, flera anteckningar django

  3. Optimera långsamma aggregat i LATERAL join

  4. Varför är SQLAlchemy count() mycket långsammare än den råa frågan?